Ubuntu досадно переключает устройство для ввода и вывода звука с моей USB-гарнитуры на встроенную звуковую карту каждый раз, когда я выхожу из системы, переходите в спящий режим или выключаете компьютер. Это происходит, даже если для «Аналоговый стереофонический USB-гарнитур» в «PulseAudio» выбран параметр «Установить как запасной вариант».
Я решил запускать скрипт каждый раз, когда мой компьютер запускается или оттаивает. Получить команды для запуска при входе в систему легко: я просто поместил их в свой файл .zshrc. Но у меня возникают проблемы с их запуском при выходе из спящего режима. Вот мой скрипт, который я поместил в /etc/pm/sleep.d:
#!/bin/bash
case "$1" in
thaw|resume)
pacmd set-default-sink "alsa_output.usb-Sennheiser_Communications_Sennheiser_USB_Headset-00-Headset.analog-stereo"
pacmd set-default-source "alsa_output.usb-Sennheiser_Communications_Sennheiser_USB_Headset-00-Headset.analog-stereo.monitor"
;;
esac
Проблема в том, что он не выполняет команды pacmd при оттаивании (я не приостанавливаю свой компьютер потому что он замерзает при возобновлении). Я пробовал многочисленные варианты сценария, в том числе помещал команды pacmd вне оператора case, чтобы они (казалось бы) выполнялись независимо, но безрезультатно.
Когда я помещаю другие команды (например, gvim
) в сценарий и переводю компьютер в спящий режим и оттаиваю их, они также не выполняются. Однако команды выполняются, если они находятся за пределами оператора, и я запускаю скрипт в командной строке. Если я помещаю команды в сценарий в /etc/pm/power.d вне оператора case, они выполняются дважды.