我正在关注这个问题从命令行设置音量级别。我需要能够在 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 会话。