Не удается установить уровень вывода звука в tmux
Я следую этому вопросу , чтобы установить уровни громкости из командной строки. Мне нужно иметь возможность устанавливать громкость из сеанса tmux (фактически из процесса узла, работающего в tmux).
Когда я бегуamixer -D pulse sset Master 50%
прямо в моем сеансе SSH все работает отлично.
$ amixer -D pulse sset Master 50%
Simple mixer control 'Master',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 26214 [50%] [on]
Front Right: Playback 26214 [50%] [on]
Если я открою tmux, а затем запущу ту же команду, произойдет сбой:
$ tmux
...
$ amixer -D pulse sset Master 50%
ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection refused
amixer: Mixer attach pulse error: Connection refused
Внутри узла я просто используюchild_process.spawn
функция, которая дает тот же результат, что и запуск из tmux, поэтому я предполагаю, что они связаны.
Что дает?
1 ответ
Для любопытных: это произошло потому, что мой сеанс tmux был запущен из общесистемного служебного файла, и в нем не были настроены переменные среды для взаимодействия со службой PulseAudio пользовательского уровня.
Исправляется добавлением следующей строки к моей команде amixer:
PULSE_SERVER=unix:/run/user/1000/pulse/native
вот так:
$ PULSE_SERVER=unix:/run/user/1000/pulse/native amixer -D pulse sset Master 50%
The /run/user/1000
может быть по-другому, вы можете определить, что это работает
$ echo $XDG_RUNTIME_DIR
В сеансе войдите в систему как пользователь с сеансом PulseAudio, который вы хотите использовать.