Не удается установить уровень выходного аудиосигнала в tmux

Не удается установить уровень выходного аудиосигнала в 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

В node я просто использую 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%

Может /run/user/1000быть по-другому, вы можете определить это, работая

$ echo $XDG_RUNTIME_DIR

В сеансе войдите в систему как пользователь с сеансом PulseAudio, который вы хотели бы использовать.

Связанный контент