Ich folgediese Frageum meine Lautstärkepegel über die Befehlszeile einzustellen. Ich muss die Lautstärke innerhalb einer tmux-Sitzung einstellen können (eigentlich von einem in tmux ausgeführten Knotenprozess aus).
Wenn ich es amixer -D pulse sset Master 50%
direkt in meiner SSH-Sitzung ausführe, funktioniert es einwandfrei.
$ 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]
Wenn ich tmux öffne und dann denselben Befehl ausführe, schlägt es fehl:
$ 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
Innerhalb des Knotens verwende ich einfach die child_process.spawn
Funktion, die dasselbe Ergebnis liefert wie die Ausführung von tmux. Daher gehe ich davon aus, dass sie zusammenhängen.
Was gibt?
Antwort1
Für Neugierige: Das lag daran, dass meine Tmux-Sitzung von einer systemweiten Servicedatei aus gestartet wurde und die Umgebungsvariablen für die Kommunikation mit dem Pulseaudio-Dienst auf Benutzerebene nicht eingerichtet waren.
Das Problem wurde behoben, indem ich meinem Amixer-Befehl einfach die folgende Zeichenfolge voranstelle:
PULSE_SERVER=unix:/run/user/1000/pulse/native
etwa so:
$ PULSE_SERVER=unix:/run/user/1000/pulse/native amixer -D pulse sset Master 50%
Das /run/user/1000
kann unterschiedlich sein, Sie können es feststellen, indem Sie
$ echo $XDG_RUNTIME_DIR
In einer Sitzung als Benutzer mit der Pulseaudio-Sitzung angemeldet, die Sie verwenden möchten.