Blog de Robert Sebille


Vers mon curriculum vitae - Conception

Accueil > Technique > Informatique > Shell bash > Lancer une application graphique avec cron.

Robert Sebille

Lancer une application graphique avec cron.

lundi 10 octobre 2011, par Robert

J’ai un peu cherché, là ! ;)
Pour lancer une application graphique (ou un notify dbus, par exemple) avec cron, il faut d’abord s’ajouter à la liste des utilisateurs autorisés à se connecter au serveur X, ceci à l’aide du programme xhost.

Par exemple sur Debian :
/usr/bin/xhost +si:localuser:$(whoami)

ou sur ma SLES au boulôt :
/usr/bin/xhost +local:$(whoami)

voyez "man xhost" pour avoir la liste adéquate des "family:name" correspondant à votre système.

Ensuite, on peut lancer des commandes graphiques dans cron
Exemple dans ma SLES
0 10 * * 1-5 DISPLAY=:0.0 notify-send "Backups done" "`date`"
et dans Debian
0 10 * * 1-5 export DISPLAY=:0.0; send-notify "Backups done" "`date`"

le export n’est pas vraiment nécessaire, si la commande
# echo $DISPLAY
donne un résultat tel que :0 ou :0.0 etc.

Enfin, si on utilise cron, il sera avisé d’automatiser l’ajout de l’utilisateur du serveur X, et avant le lancement de la commande graphique dans le cron. On peut facilement faire cela via le cron ou les applications lancées automatiquement au démarrage de la session.
- On ne peut pas le faire via le cron.
- Ca ne marche pas avec les applications lancées automatiquement au démarrage de session (sans doute parce que whoami ne retourne pas encore à ce moment le user ?)
- On peut le faire dans ~/.profile, qui est lu et excécuté quand on lance un login shell (c.-à-d, quand on se connecte au système).

Exemple pour la SLES :

vim ~/.profile
/usr/bin/xhost +local:$(whoami)

Source : http://forums.archlinux.fr/viewtopic.php?t=9213&p=78411

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.