Ok, então com base no que aprendi de aqui , estou tentando uma nova abordagem, usando ACPI.
-
Crie um script para pausar e liberar o VLC:
sudo touch /etc/acpi/headphone_jack.sh sudo chmod +x /etc/acpi/headphone_jack.sh
e coloque o seguinte neste arquivo:
_pid='pgrep vlc' _pid="${_pid% *}" DBUS_SESSION_BUS_ADDRESS='grep -z DBUS_SESSION_BUS_ADDRESS /proc/$_pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'' _username='grep -z USER= /proc/$_pid/environ |sed 's/.*=//'' if [ "" = unplug ]; then su $_username -c "DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause" else su $_username -c "DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Play" fi
-
Agora vamos criar um acionador de evento (substitua
vim
pelo seu editor de texto favorito):sudo vim /etc/acpi/events/headphones
e adicione o seguinte:
event=jack/headphone action=/etc/acpi/headphone_jack.sh %e
-
Finalmente, reinicie o daemon da ACPI:
sudo service acpid restart
Acho que deve ser exatamente o que você precisa, sem pesquisa envolvida. A única desvantagem que posso encontrar com essa implementação é no caso de você ter vários usuários executando o VLC ao mesmo tempo. Suponho que, nesse caso, o que pode acontecer é que essa abordagem pause aleatoriamente e retome uma delas (ou simplesmente não funcionará).
Grandes parabéns para @int_ua e @Sneetsher por me fornecerem conhecimentos importantes sobre o tratamento de eventos da ACPI. Também gostei do @ user3073656 por ajudar a simplificar o procedimento.