<?xml version="1.0" encoding="iso-8859-1"?>
  
 <rss version="2.0"
      xmlns:admin="http://webns.net/mvcb/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/"
      xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:html="http://www.w3.org/1999/html"
      xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
      xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
      xmlns:wfw="http://wellformedweb.org/CommentAPI/">
   <channel>
     <title>Benj's tavern</title>
     <link>http://www.grassouille.org/blog/index.php</link>
     <description>The blog with REAL pieces of geek inside!</description>
     <language></language>
     <ttl>60</ttl>
     <admin:generatorAgent rdf:resource="http://www.grassouille.org/blog/" />
     <admin:errorReportsTo rdf:resource="mailto:bdrieu@april.org" />
  <item>
    <title>ACPI for fun and profit</title>
    <link>http://www.grassouille.org/blog/index.php//APRIL/080318</link>
    <comments>http://www.grassouille.org/blog/index.php//APRIL/080318</comments>
    <description>
      
<p/>
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 !
<p/>
Pour ce faire, il suffit (sous Debian GNU/Linux) de créer un
répertoire <tt>/etc/acpi/local</tt> et d'y placer deux scripts
<tt>lid.sh.pre</tt> et <tt>lid.sh.post</tt> (qui doivent être
exécutables) et qui seront exécutés à chaque mise en veille puis en
mode normal du portable.
<p/>
Voici le script <tt>lid.sh.post</tt> :
<p/>
<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 \"\")(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&amp;message='"
done
</pre>
<p/>

Et le script <tt>lid.sh.pre</tt> :
<p/>
<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&amp;message=Laptop suspended'"
done
</pre>
<p/>
Ces deux scripts envoient les commandes idoines aux programmes Emacs
et Gaim.  Concernant Emacs, il utilise le programme
<em>gnuclient</em>, donc gnuserv doit être lancé dans le fichier
<tt>.emacs</tt> des utilisateurs:
<p/>
<pre>
(load-library "gnuserv")
(gnuserv-start)
</pre>
<p/>
Également, j'utilise la <em>gaim-remote</em> pour envoyer l'ordre à
<em>gaim</em>.  Ceci implique que <em>python-dbus</em> soit installé.
<p/>
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é.

    </description>
    <category domain="http://www.grassouille.org/blog/index.php">/APRIL</category>
    <dc:creator>bdrieu@april.org</dc:creator>
    <pubdate>Tue Mar 18 2008 18:40</pubdate>
  </item>
   </channel>
 </rss>
