ACPI for fun and profit
Par Benjamin Drieu le mardi 18 mars 2008, 10:00 - Geek - Lien permanent
Une petite astuce qui utilise l'ACPI et qui me permet de gagner 2 secondes de temps de cerveau humain disponible : comment faire pour que mes applications de messagerie instantanée et d'IRC soient automatiquement mises en suspension lorsque mon portable est en veille (écran replié ?). C'est assez pénible de taper la commande idoine à chaque pause café alors autant que le système le fasse pour moi !
Pour ce faire, il suffit (sous Debian GNU/Linux) de créer un répertoire /etc/acpi/local et d'y placer deux scripts lid.sh.pre et lid.sh.post (qui doivent être exécutables) et qui seront exécutés à chaque mise en veille puis en mode normal du portable.
Voici le script lid.sh.post :
#!/bin/sh users=$(ps auxw | grep emacs | grep -v root | awk '{print $1}' | sort | uniq) for user in $users ; do su $user -c "gnuclient -batch -eval '(erc-cmd-GAWAY \"\")(message \"Welcome back\")'" done users=$(ps auxw | grep gaim | grep -v root | awk '{print $1}' | sort | uniq) for user in $users ; do su $user -c "gaim-remote 'setstatus?status=available&message='" done
Et le script lid.sh.pre :
#!/bin/sh users=$(ps auxw | grep emacs | grep -v root | awk '{print $1}' | sort | uniq) for user in $users ; do su $user -c "gnuclient -batch -eval '(erc-cmd-GAWAY \"Laptop suspended\")'" done users=$(ps auxw | grep gaim | grep -v root | awk '{print $1}' | sort | uniq) for user in $users ; do su $user -c "gaim-remote 'setstatus?status=away&message=Laptop suspended'" done
Ces deux scripts envoient les commandes idoines aux programmes Emacs et Gaim. Concernant Emacs, il utilise le programme gnuclient, donc gnuserv doit être lancé dans le fichier .emacs des utilisateurs:
(load-library "gnuserv") (gnuserv-start)
Également, j'utilise la gaim-remote pour envoyer l'ordre à gaim. Ceci implique que python-dbus soit installé.
Bien évidemment, on peut adapter ces scripts pour son propre client de messagerie instantanée. Même, cette astuce peut être utilisée pour exécuter des tâches coûteuses en temps machine lors des pauses café.