Merci pour ton aide,
Si je lance mon script avec bash -x le retour n'est pas très parlant:
~$ bash -x start-XBMC.sh
+ xrandr --output DVI-D-0 --off
+ qdbus org.kde.kmix /Mixers/PulseAudio__Playback_Streams_3/restore_sink_input_by_media_role_event volume 0
+ xbmc
+ qdbus org.kde.kmix /Mixers/PulseAudio__Playback_Streams_3/restore_sink_input_by_media_role_event volume 100
+ xrandr --auto --output DVI-D-0 --mode 1440x900 --right-of HDMI-0
Avec ta proposition, ça donne ça:
~$ bash -x start-XBMC.sh
+ pgrep xbmc
+ xbmc
9822
+ qdbus org.kde.kmix /Mixers/PulseAudio__Playback_Streams_3/restore_sink_input_by_media_role_event volume 0
Mais j'ai trouvé une solution en python en lançant un script.sh.
Le script sh: (je fais comme ça, car lancer le script python directement ne fonctionne pas, et puis c'est la méthode que j'ai trouvé pour écrire un log)
#! /bin/bash
exec >/home/gaara/ver-XBMC.log 2>&1
python /home/gaara/ver-XBMC.py
Le script python: J'utilise le module psutil (trouvé
ici) pour détecter si xbmc est lancé.
#!/usr/bin/env python
# coding: utf8
import psutil
import subprocess # pour lancer la commande shell
from pprint import pprint # utile pour écrire la liste des applications lisiblement
app = [psutil.Process(i).name for i in psutil.get_pid_list()]
pprint(app)
if "xbmc" in app:
print "XBMC lancé"
cmd = "qdbus org.kde.kmix /Mixers/PulseAudio__Playback_Streams_3/restore_sink_input_by_media_role_event volume 0"
subprocess.call(cmd, shell=True)
else:
print "XBMC non lancé"
J'entend un tout petit artefact, mais c'est pas gênant, on l'entend à peine.
Sujet résolu à 100% !! (enfin j'espère)