Ok, vous devrez donc faire quelques choses pour cela:
- Détectez quand les écouteurs sont débranchés;
- Après l'événement dans (1), envoyez une commande "pause" à VLC;
- Détectez quand les écouteurs sont rebranchés;
- Après l'événement de (3), envoyez une commande "play" à VLC;
Pour (1) et (3): vous pouvez utiliser ce qui est illustré ici . Cette réponse contient une petite procédure pour trouver la différence entre une prise branchée et non branchée, et un script que vous pouvez modifier pour vous conformer à votre cas.
Pour (2) et (4): vous devez utiliser l'interface Dbus de VLC. Le code pertinent doit être le suivant:
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Play
Pour pause et lecture respectivement.
Maintenant, à propos du script. Dans votre cas, cela devrait ressembler à ceci:
#!/bin/bash
# This scripts detecs unplugging headphones.
oldstatus="unrelated string"
while [ 1 ]; do
# The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0'
status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' | grep 'Amp-Out vals: \[0x80 0x80\]')
if [ "$status" != "$oldstatus" ]; then
if [ -n "$status" ]; then
echo "Plugged in"
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Play
oldstatus="$status"
else
echo "Unplugged"
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
oldstatus="$status"
fi
fi
# Now sleep for 250 milli-seconds as per @Serg's request (who learnt if from @Fabby)
# sleep is timer-based so doesn't use *any* processor cycles while sleeping.
sleep 0.25
done
Ajoutez ce script modifié à vos applications de démarrage et vous êtes prêt. Je pense qu'il devrait faire ce que vous vouliez.
PS - Notez qu'il existe des moyens plus efficaces de le faire, tels que l'utilisation inotify
pour détecter les changements d'événement (et peut-être même d'autres approches), mais celui-ci devrait vous aider à démarrer (et les autres sont au-dessus de mon niveau de compétence et de mon expérience). Je suppose que vous pouvez commencer avec cette approche "hackish" et construire à partir d'ici.