Eu estou seguindoessa questãopara definir meus níveis de volume na linha de comando. Preciso ser capaz de definir o volume de dentro de uma sessão do tmux (na verdade, de um processo de nó em execução no tmux).
Quando executo amixer -D pulse sset Master 50%
direto na minha sessão ssh, funciona perfeitamente.
$ 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]
Se eu abrir o tmux e executar o mesmo comando, ele falhará:
$ 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
Dentro do nó, estou apenas usando a child_process.spawn
função que dá o mesmo resultado que a execução do tmux, então presumo que elas estejam relacionadas.
O que da?
Responder1
Por curiosidade, isso ocorreu porque minha sessão tmux foi iniciada a partir de um arquivo de serviço de todo o sistema e não tinha as variáveis de ambiente configuradas para se comunicar com o serviço pulseaudio em nível de usuário.
Corrigido apenas acrescentando a seguinte string ao meu comando amixer:
PULSE_SERVER=unix:/run/user/1000/pulse/native
igual a:
$ PULSE_SERVER=unix:/run/user/1000/pulse/native amixer -D pulse sset Master 50%
O /run/user/1000
pode ser diferente, você pode determiná-lo em execução
$ echo $XDG_RUNTIME_DIR
Em uma sessão logada como usuário com a sessão pulseaudio que você deseja usar.