lundi 31 mars 2008

Exécuter un script quand l'écran est locké

Petite contrib : je voulais pouvoir éxecuter un script lorsque je locke mon écran, comme par exemple mettre Amarok en pause.

Ce n'est pas possible par défaut, mais un tout petit bout de C++ suffit :

  1. télécharger les sources du paquet fournissant /usr/lib/kde3/lockout_panelapplet.*, sous Fedora c kdebase, et ca se passe comme ca :
    yumdownloader --source kdebase
  2. Décompressez l'archive
  3. $ ./configure (on s'en fout des options on veut juste les makefiles)
  4. $ cd kdebase-3.5.9/kicker/applets/lockout
  5. Editer lockout.cpp, ligne 158 , par exemple :
    if ( kicker_screen_number )
    {
    appname.sprintf("kdesktop-screen-%d",kicker_screen_number);
    }
    system("~/.lockout/upon-lockout.sh");
    kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", "");
  6. ci dessus j'ai ajouté le system call. Adaptez le path et le nom du script comme bon vous semble
  7. $ make
  8. #make install
  9. Editer ~/.lockout/upon-lockout.sh pour y placer n'importe quel script, exemple :
    #!/bin/bash


    #if amarok is running, pause it.else do nothing.
    running=`ps -ef | grep -i amarokapp | grep -v grep`

    if [ ! "x" = "x$running" ];then
    amarok --pause
    fi
  10. chmod +x ~/.lockout/upon-lockout.sh , ou chmod +x !$ (si vous habitez rive sud)
  11. si vot' KDE est compilé avec GNU ld,cool utilisez le, sinon il vous faut relancer KDE.
  12. au lock de l'écran, Amarok se met en pause tout seul.
  13. Les choses se passent, ce n'est pas un jeu t'entends ??

Aucun commentaire: