Не удается установить уровень вывода звука в 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, который вы хотите использовать.

Другие вопросы по тегам