Костыль для сохранения громкости

Небольшие заметки из личного (и не только) опыта, рекомендации
Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2800
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

Костыль для сохранения громкости

Сообщение Raven » 14 янв 2023, 11:05

Имеется в хозяйстве RHEL 8 с pipewire в качестве основного аудиосервера. Все круто, кроме одного - при вылогинивании уровень громкости возвращается в исходный уровень, что-то порядка 40%. Это конечно хорошо при использовании наушников, но т.к. у меня внешняя аудиосистема с собственным регулятором громкости, мне удобнее использовать ее и не крутить каждое утро ползунок на околомаксимальные значения.

Опишу свой путь к исправлению поведения. К конкретному дистрибутиву он не привязан, требуется лишь наличие systemd и alsactl.
Сначала нам потребуется папака для сохранения состояния. Скорее всего ее нет, значит надо создать:

Код: Выделить всё

$ mkir -p ~/.config/alsa/states
Проверяем по какому пути установлен alsactl (разные дистры кладут их в разное место типа /bin или /sbin)

Код: Выделить всё

$ which alsactl
/usr/sbin/alsactl
После чего потребуется создать юнит systemd пользовательского уровня

Код: Выделить всё

$ systemctl --user edit --full --force restorevolume.service
И вписываем в него следующее

Код: Выделить всё

[Unit]
After=wireplumber.service
Description=Restore pipewire audio level

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/sbin/alsactl --file %h/.config/alsa/states/asound.state restore
ExecStop=/usr/sbin/alsactl --file %h/.config/alsa/states/asound.state store

[Install]
WantedBy=default.target
Обратите внимание на строку 'After=wireplumber.service' - не во всех системах pipewire требует наличия менеджера сеансов, в старых версиях его нет, поэтому вместо wireplumber.service следует использовать pipewire.service.


Включаем юнит и наслаждаемся преемственностью выставленного уровня громкости

Код: Выделить всё

$ systemctl --user enable --now restorevolume.service
Я не злопамятный, я просто часто ковыряю логи
Ответить

Вернуться в «Полезные советы»