«

»

jan
26

Remarques sur notify-send (suite)

Suite à un changement de système, j’ai découvert un soucis concernant mon article sur notify-send que j’utilisais via cron. L’astuce ne fonctionnait plus malgré le DISPLAY=:0.0

Après quelques recherches sur internet j’ai trouvé une explication : notify-send ne peut envoyer le message que sur un seul bureau. Étant donné que je lance mon script en tant que root, notify-send n’envoie pas le message au bon utilisateur.

Une solution est de préciser cela dans le script en ajoutant la commande su nomUtilisateur -c qui permet d’exécuter le script comme s’il était lancé par l’utilisateur dont le login est nomUtilisateur. Au final j’utilise quelque chose qui ressemble à ça :
su olivetti -c "notify-send -u normal -t 5000 'Tout c'est bien passé' "

J’ai vu qu’il existait plusieurs autres solutions mais une seule me suffit ^_^ !

Remarques :

  • J’utilise les guillemets et les apostrophes à cause des espaces dans la phrase que je souhaite afficher. Si je ne faisais pas cela, on retrouverait le problème que j’avais mentionné dans la fin de mon premier article sur notify-send. Au passage, on voit l’utilité d’avoir les deux caractères spéciaux " et ' car sans eux la commande serait mal interprétée. En effet, les ouvertures/fermetures successives des guillemets prêteraient à confusions…
  • Si on souhaite afficher le résultat d’une commande, il faudra faire attention à une chose. Considérons l’exemple suivant où l’on utilise la commande :
    su olivetti -c "notify-send -u normal -t 5000 `echo Coucou` "
    Ici pas de soucis. Cependant si on tape cette fois :
    su olivetti -c "notify-send -u normal -t 5000 `echo Coucou ça va` "
    on obtiens un message d’erreur Invalid number of options.
    Le problème vient du fait que le résultat de la commande echo n’est pas constitué d’une seule chaîne de caractère. À cause des espaces, notify-send considère donc qu’il y a trop de paramètres. Une solution consiste à bien utiliser les guillemets, apostrophes et accents graves comme nous l’avons vu dans un article précédent :
    su olivetti -c "notify-send -u normal -t 5000 '`echo Coucou ça va`' "

Références :