Author: Adam Evyčędo <git@apiote.xyz>
bluetooth in alsa
.config/alsa/asoundrc | 56 ++++++++++++++++++++++++++++++++++++ .config/alsa/asoundrc-bluealsa | 7 ++++ .config/alsa/asoundrc-default | 1 .config/sh/functions | 7 ++- .config/sway/sway_startup.sh | 4 -- .gitignore | 1 .local/bin/bt | 6 +++
diff --git a/.config/alsa/asoundrc b/.config/alsa/asoundrc index 8b137891791fe96927ad78e64b0aad7bded08bdc..9b0f0750a8593dc26a5e63a123ac86c6fc7fc623 100644 --- a/.config/alsa/asoundrc +++ b/.config/alsa/asoundrc @@ -1 +1,57 @@ +defaults.bluealsa.service "org.bluealsa" +defaults.bluealsa.device "9C:19:C2:95:5D:E1" +defaults.bluealsa.profile "a2dp" +defaults.bluealsa.delay 10000 +bluealsa.default.link { + @func concat + strings [ + { + @func getenv + vars [ HOME ] + default "/tmp" + } + "/.config/alsa/asoundrc-default" + ] +} + +pcm.!default { + type asym + capture.pcm cards.pcm.default + playback.pcm { + @func refer + file { + @func refer + name bluealsa.default.link + } + name "bluealsa.default.pcm.name" + default "cards.pcm.default" + } + hint.description { + @func concat + strings [ + "Capture: sysdefault, Playback: " + { + @func refer + name "bluealsa.default.pcm.description" + default "sysdefault" + } + " +Default Audio Device" + ] + } +} + +ctl.!default { + @func refer + file { + @func refer + name bluealsa.default.link + } + name "bluealsa.default.ctl" + default { + @func refer + name ctl.sysdefault + } + hint.description "Default control device" +} \ No newline at end of file diff --git a/.config/alsa/asoundrc-bluealsa b/.config/alsa/asoundrc-bluealsa new file mode 100644 index 0000000000000000000000000000000000000000..cd910193bc5599e39d155836fa7b39bb0e42073f --- /dev/null +++ b/.config/alsa/asoundrc-bluealsa @@ -0,0 +1,7 @@ +bluealsa.default { + pcm { + name pcm.bluealsa + description "Bluealsa Bluetooth" + } + ctl.type bluealsa +} diff --git a/.config/alsa/asoundrc-default b/.config/alsa/asoundrc-default new file mode 120000 index 0000000000000000000000000000000000000000..dc1dc0cde0f7dff7b7f7c9347fff75936d705cb8 --- /dev/null +++ b/.config/alsa/asoundrc-default @@ -0,0 +1 @@ +/dev/null \ No newline at end of file diff --git a/.config/sh/functions b/.config/sh/functions index 4e0d67d4c77a5a7d8d1ee8ea6a7acf39d89c1352..7da492ddf2ebbb5b92411a914ded42882c735fe2 100644 --- a/.config/sh/functions +++ b/.config/sh/functions @@ -507,12 +507,12 @@ echo "$volume" >/tmp/wob.sock fi printf '' >/tmp/wob.sock else - output=$(grep -A2 default ~/.asoundrc | tail -n1 | awk '{print $2}') - if [ "$output" = 'dmix' ] + output=$(basename $(ls -l ~/.config/alsa/asoundrc-default | cut -d '>' -f2 | tr -d ' ')) + if [ "$output" = 'null' ] then cmd='-M sset' ctl='Master' - elif [ "$output" = 'blue' ] + elif [ "$output" = 'asoundrc-bluealsa' ] then cmd='-D bluealsa sset' ctl=$(amixer -D bluealsa scontrols | grep 'A2DP' | sed -E "s/^[^']*'//" | sed "s/',0//") @@ -528,6 +528,7 @@ then result=$(amixer $cmd "$ctl" 5%-) elif [ "$1" = 't' ] then + # TODO not master; headphones or speaker result=$(amixer $cmd "$ctl" toggle) fi echo "$result" | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -n1 > /tmp/wob.sock diff --git a/.config/sway/sway_startup.sh b/.config/sway/sway_startup.sh index 22efc5afcae057a8f519316c1087f71545ca8683..6ad8fb31166f09c96e6c031525af65bae085d173 100755 --- a/.config/sway/sway_startup.sh +++ b/.config/sway/sway_startup.sh @@ -53,8 +53,4 @@ ~/.local/bin/bar_clock ~/.local/bin/bar_all_once -pipewire & -pipewire-pulse & -wireplumber & - ~/.local/bin/network_backup & diff --git a/.gitignore b/.gitignore index bedddba3b0c5ccf10e86797a6361cd44abec7eba..8a4be971e42c310e3f68f4ffa33218bce7d03174 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,7 @@ /.local/share/gomuks /.local/share/gonk /.local/share/gramps /.local/share/keybase +/.local/share/keyrings /.local/share/khal /.local/share/lf /.local/share/luakit diff --git a/.local/bin/bt b/.local/bin/bt index 5384770af5a6a27959b8be79075d6ad00a17ef9d..53233ae1a4c6ddbc74b2a250fd85318a4279273c 100755 --- a/.local/bin/bt +++ b/.local/bin/bt @@ -1,12 +1,15 @@ #!/bin/sh +# TODO https://github.com/arkq/bluez-alsa/wiki/Using-BlueALSA-as-default-ALSA-PCM#automation + trap bar_bluetooth INT if [ "$1" = 'on' ] then ( + ln -sf ~/.config/alsa/asoundrc-bluealsa ~/.config/alsa/asoundrc-default #set -e - doas rfkill unblock bluetooth + doas /usr/sbin/rfkill unblock bluetooth sleep 1 bluetoothctl power on || (sleep 2; bluetoothctl power on) sleep 1 @@ -15,6 +18,7 @@ ) elif [ "$1" = 'off' ] then bluetoothctl power off + ln -sf /dev/null ~/.config/alsa/asoundrc-default else bluetoothctl show | grep Powered | cut -f2 bluetoothctl info | grep -E '(Alias|Connected)' | cut -f2