我正在關注這個問題從命令列設定音量等級。我需要能夠在 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%
可能/run/user/1000
不同,你可以確定它正在運行
$ echo $XDG_RUNTIME_DIR
在以您想要使用的pulseaudio會話的使用者身分登入的會話中。