Ich möchte ein Skript starten, wenn ich meine Kopfhörer an meinen PC anschließe. Um zu prüfen, ob dieses Ereignis tatsächlich erkannt wird, habe ich zunächst versucht, acpi_listen
die Kopfhörer ein- und auszustecken. Hier ist die Ausgabe:
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack/headphone HEADPHONE plug
jack/headphone HEADPHONE unplug
jack-headphone
Ich gehe also davon aus, dass das Ereignis ordnungsgemäß abgefangen wird. Ich habe dann ein neues Ereignis namens „ under“ erstellt /etc/acpi/events
und es mit folgendem Inhalt gefüllt:
event=jack/headphone
action=/etc/acpi/jack-headphone.sh %e
Schließlich habe ich das eigentliche Skript ( /etc/acpi/jack-headphone.sh
) erstellt, das ich ausführen möchte, wenn ich meine Kopfhörer anschließe/abziehe, und es dann ausführbar gemacht mit
sudo chmod +x /etc/acpi/jack-headphone.sh
So sieht das eigentliche Skript aus:
#!/bin/bash
set -e -u
if [ "$1" = "jack/headphone" -a "$2" = "HEADPHONE" ]; then
case "$3" in
plug)
pacmd set-source-port 1 analog-input-headset-mic
;;
unplug)
pacmd set-source-port 1 analog-input-internal-mic
;;
esac
fi
Der Befehl pacmd set-source-port 1 analog-input-headset-mic
legt das Mikrofon der Kopfhörer als Standardeingang fest, während pacmd set-source-port 1 analog-input-internal-mic
er dasselbe mit dem internen Mikrofon macht. Wenn ich solche Befehle in einem Terminal ausführe, verhalten sie sich wie erwartet und schalten den Standardeingang auf den entsprechenden um. Wenn ich jedoch meine Kopfhörer anschließe/abziehe und das Skript jack-headphone.sh
ausgeführt wird, wird der Standardeingang nicht entsprechend geändert. Wie ist das möglich?
Habe ich hier etwas übersehen oder falsch gemacht? Der Vollständigkeit halber sei erwähnt, dass ich Ubuntu 18.04 verwende.