Linux — Afficher une notification régulière avec crontab
En consultant l'excellent blog de Korben, aujourd'hui, je suis tombé sur un article qui parle de l'application OSX nommée Stand. Cette application permet d'afficher de façon régulière des rappels vous invitant à marcher un peu. Cela est bon pour la santé si vous avez une activité assise. Korben y expose une solution alternative à base d'Automator et de Cronnix. N'étant pas utilisateur de l'OS en question, l'envie m'a pris de faire ma version pour Ubuntu. C'est ce que je compte vous présenter.
Création du script de notification
Pour afficher une notification, j'ai trouvé la commande notify-send
. Cette dernière permet l'affichage d'une bulle de notification, de cette façon c'est très propre.
Installation
sudo apt-get install libnotify-bin
Utilisation
Notification simple :
notify-send "Titre" "Message"
Indiquer un niveau de criticité (option -u
) :
notify-send "Titre" "Message" -u critical
Les valeurs possibles sont : low
, normal et critical
Indiquer une durée d'affichage en millisecondes (option -t
) :
notify-send "Titre" "Message" -t 5000
À présent, que nous avons la commande en main, nous créons un script Shell :
#!/bin/bash
TITLE="Un peu de marche !"
MESSAGE="Pour votre santé, ne restez pas en position assise trop longtemps."
notify-send "$TITLE" "$MESSAGE" -i ~/Documents/icons/famfamfam_silk_icons_v013/icons/information.png -t 30000
Vous pouvez personnaliser ce script à loisir.
Définition de la de la tâche planifiée
Pour la tâche planifier, l'utilisation de crontab s'impose. Au cas où vous ne le connaîtriez pas, il s'agit de l'outil de planification intégré à toutes les versions de Linux, et plus généralement Unix.
Nous décidons de lancer cette tâche toutes les heures, du lundi au vendredi. Pour cela, nous appelons la commande :
crontab -e
Cela a pour effet d'ouvrir dans l'éditeur, définit à la base, le fichier de configuration des tâches planifiées pour l'utilisateur courant. Nous ajoutons une nouvelle ligne qui exécutera note script :
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
30 9-17 * * Mon-Fri env DISPLAY=:0.0 sh chemin/vers/script.sh
Après avoir enregistré et quitté l'éditeur, crontab prend directement en compte les modifications sans nécessiter de redémarrage de service ou daemon.
La partie env DISPLAY=:0.0
permet d'indiquer à crontab que l'on fonctionne en environnement graphique et que l'on souhaite afficher sur le premier écran, soit l'écran par défaut.
Notre script sera exécuté toutes les heures de 9 H à 17 H à la 30e minute, soit 9 H 30, 10 H 30, ... 17 H 30, du lundi au vendredi.
Vous pouvez vérifier que les appels se font bien aux heures indiquées avec la commande suivante :
tail -f /var/log/syslog | grep -i cron