#!/bin/bash
#This script connects yours bluetooth headset to your computer and redirects the default pulseaudio sound output to your headset.
#This script has been tested with Linux Mint 18.3, lenovo x220, Phonak Compilot Air II (bluetooth connection module for hearing aid).
#If you'd like this to work comfortably, I suggest you create a launch icon on your desktop or tray.
#The listed packages and dependencies is necessary for running:
#bash, pulseaudio-utils, bluez, sed, libnotify-bin
#The condition of script operation is that you define the identifier of the device you want to connect.
#The device must be paired beforehand!
#Such as blueman bluetooth device manager can be perfectly used for this.
bluetooth_id="00:0F:59:5A:60:7B"
#connecting to bluetooth headphone
bluetoothctl <<< "connect $bluetooth_id" >sound_output_redirect.log 2>&1
#storing the device name
bluetooth_name=`grep -e "Device $bluetooth_id" sound_output_redirect.log | cut -d':' -f 6`
#Convert the ID to match the format used by pacmd.
bluetooth_id=`echo "$bluetooth_id" | sed 's/:/_/g'`
#change the default sink
pacmd set-default-sink bluez_sink.$bluetooth_id >>sound_output_redirect.log 2>&1
#Debugging.
connection_error=`grep -e "$bluetooth_id does not exist" sound_output_redirect.log`
if [[ $connection_error == "" ]]
then
#A notification will be displayed if the connection and redirect are successfully established.
notify-send -i notification-audio-volume-high "Sound output switched to" "${bluetooth_name:3}"
else
#Notification displayed if there is a connection error.
notify-send -i notification-audio-volume-high "Sound output NOT switched" "${bluetooth_name:3} not found."
fi
- Borzas blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Ha már úgyis bash és bashizm, akkor még a sed is megspórolható:
e helyett:
bluetooth_id=`echo "$bluetooth_id" | sed 's/:/_/g'`
Ez is írható:
bluetooth_id="${bluetooth_id//:/_}"
Én személy szerint az if sorában is idézőjelek közé tenném a változóhivatkozást. Ráadásul a man bash szerint amit írsz, annál a formánál a $connection_error stringet pattern matching-ként fogja kezelni a shell. És amit csinálni akarsz, arra pont van a test parancsnak operátora:
if [ -z "$bluetooth_id" ]
(De ez persze csak kötekedés.)
- A hozzászóláshoz be kell jelentkezni
Ehhez kell bármiféle script? Én a keverőben azt mondtam, hogy küldje az audio stream-et bluetooth-on a mikro hifi erősítőmre, azóta emlékszik rá. Jó, mondjuk programozni én is szeretek..., ha muszáj. ;)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Csak kontárkodom, de köszönöm az építőjellegű hozzászólásokat.
Két kérdés:
1. A bluetooth_name=`grep -e "Device $bluetooth_id" sound_output_redirect.log | cut -d':' -f 6`
sornál a bemenet így néz ki:
[.[0;92mNEW.[0m] Device 00:0F:59:5A:60:7B Phonak Compilot Air II
Ebből vágnám ki a cut segítségével az eszköz nevét. Van esetleg valami kevésbé kókány megoldás ennél? Olyasmire gondolok, hogy kivágom az 00:0F:59:5A:60:7B + "1 karakter" utáni részt.
2. A keverőn beállítom alatt mit értsek?
Ha a mate-volume-control felületén módosítom a kimenetet az nem jegyez meg semmit.
Amint kisétálok a bluetooth hatósugarából vége a dalnak.
Ha újra csatlakoztatom is kézzel a headsetet/hallókészüléket (nem jellemző, hogy magától megteszi), a kimenet marad a laptop hangszóróin. Ennek a kétlépéses grafikus felületen való rendszeres matatásnak a kiváltására követtem el a fenti rettenetet.
- A hozzászóláshoz be kell jelentkezni
Esetleg érdemes megfontolni awk használatát, valami ilyesmit: awk -v var="$bluetooth_id" '$0~var {print $4,$5,$6,$7}'
De ezen még dolgozni kell szerintem. :D
A szokás hatalma, nem hét!!!
- A hozzászóláshoz be kell jelentkezni
Jobb lehet így:
{$1=$2=$3=""; print $0}
A szokás hatalma, nem hét!!!
- A hozzászóláshoz be kell jelentkezni
Amit a korábbi sed-re vonatkozó részben írtam, az a shell konstrukció ide is alkalmas:
bluetooth_name=`grep -e "Device $bluetooth_id" sound_output_redirect.log`
bluetooth_name="${bluetooth_name//*Device $bluetooth_id /}"
A grep-et ezzel nem spóroltuk meg, de a cut-ot igen. Félsiker. (Van itt egy ujjgyakorlatom arról, hogy lehet grep-et shell-beli eszközzel helyettesíteni, lehet ezt még fokozni ;-) )
=====
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
- A hozzászóláshoz be kell jelentkezni
2. pavucontrol
Röptében, dinamikusan nem tudom, mit csinál. Ha elveszti a bluetooth kapcsolatot, akkor a notebook saját hangszóróira teszi át a hangot. Viszont legközelebb, ha van bluetooth link, megint ott lesz a hang. Viszont valakinek valamikor kell kezdeményezni a kapcsolódást. Vagy a másik oldalnak, vagy a PC-nek. Ez megtörténik automatikusan a hangszerver elindulásakor, vagy a másik oldal kezdeményezésére. Már futó pulseaudio esetében van valami bluetooth-os kisalkalmazás, amelyen lehet neki mondani, hogy kapcsolódjon. Legalább is Fedorán így van.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
the pulseaudio?
- A hozzászóláshoz be kell jelentkezni
Nekem ez működik, inkább az a baj, hogy szaggat a hang. (Solus OS)
- A hozzászóláshoz be kell jelentkezni
Nem fogy el valahol a sávszélesség?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Mindig szaggat, vagy csak néha?
Nálam a helyzet: A nappaliban van a bluetooth adó. A konyhában egy hangfal. Ha a mosogató mellé állok, akkor szaggat a hang. Ha a nappaliban az adót kb. 10 cm-rel arrébb rakom, akkor a csak a hangfal mellett állva szaggat a hang. Ha megint más helyre rakom az adót, akkor az asztal mellett ülve szaggat a hang.
Egy lakásban a többutas terjedés teljesen normális jelenség, és az eredményezhet ilyet. Szerencsére sikerült találnom az adónak olyan helyett, hogy bárhova állok/ülök a konyhában, nem szaggat a hang.
- A hozzászóláshoz be kell jelentkezni
Nem tudom, ez egy usb-bluetooth adapter,
és egy noname kínai hangfal. (WS-Y69)
volt már olyan, hogy működött egy másik
géppel+másik OS kombóval. (Mageia)
Az az érdekes, hogy, ha ott van közvetlenül mellette, akkor is így szól.
Sávszélt hogy tudom megnézni?
- A hozzászóláshoz be kell jelentkezni