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é.