Автоматическое переключение на bluetooth-наушники при их подключении в linux

Не совсем уверен почему, но после переустановки арча у меня начались какие-то небольшие проблемы с bluetooth-адаптером. Подозреваю, что проблема в кривых драйверах, хотя в прошлой версии арча все работало ок. В частности, после переустановки перестало автоматически переключаться на подключенные bluetooth-наушники. Кое-как решил эту проблему с помощью udev-правил. Напишу здесь как это делается, чтобы не забыть (думаю, мне это еще пригодится):

  • Узнать mac-адрес наушников командой bluetoothctl, затем devices
  • Подключить наушники и узнать какой sink они используют (pactl list short sinks). В моем случае это bluez_output.F8_4E_17_1E_76_1F.1
  • Создать bash-скрипт, который переключает звук на наушники:
#!/bin/bash

SINK="bluez_output.F8_4E_17_1E_76_1F.1"
pactl set-default-sink $SINK
# Move all audio streams to new sink
pactl list short sink-inputs | while read stream; do
  stream_id=$(echo $stream | cut '-d ' -f1)
  pactl move-sink-input $stream_id $SINK
done
exit 0
  • Делаем исполняемым sudo chmod +x auto-switch.sh
  • Создать udev-правило, которое будет запускать  скрипт как только bluetooth-устройство с указанным mac-адресом будет подключен к компьютеру:
    sudoedit /etc/udev/rules.d/10-bluetooth.rules:
ACTION=="add", SUBSYSTEM=="bluetooth", ATTRS{address}=="f8:4e:17:1e:76:1f", RUN+="/usr/local/bin/auto-swutch.sh"
  • Тестируем что все работает командами:

    sudo udevadm control –reload-rules

    sudo udevadm trigger