Script d’extinction pour gestionnaire de fenêtre léger

L’un des principaux problèmes (qualité?) des gestionnaires de fenêtre léger du type Openbox, Fluxbox et consoeurs est qu’ils demandent un peu plus de travail pour certaines opérations. Il en est de l’extinction de l’ordinateur. Alors que des monstres comme KDE ou encore Gnome font ça tout seul, cela demande un peu plus de travail pour les autres. Je présente ici le script que j’utilise sous Openbox.

Ce sujet à été largement traité notamment ici. Néanmoins le script proposé ne me satisfaisais pas, d’une part car il nécessitait de configurer le fichier /etc/sudoers pour pouvoir appeler les fichiers /sbin/reboot, … via sudo sans mot de passe et d’autre part car il n’était pas joli à voir =).

Le premier problème peut se résoudre en passant par DBus. En effet l’interface DBus

/org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement

de Hal nous fournit les commandes de gestion de l’alimentation. Elle permet notamment de pouvoir redémarrer, éteindre ou encore mettre en veille son ordinateur. Il suffit pour cela d’appeler la fonction DBus correspondante. On peut par exemple le faire via la commande :

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

pour redémarrer la machine.

En cherchant sur internet, j’ai trouvé ce script que j’ai complètement réécris. Il est écrit en Python et utilise PyGTK uniquement. Je lui ai ajouté le support de DBus. En effet Python fournit un binding pour DBus extrèmement puissant! Je l’ai rendu un peu plus joli lorsque l’on passe la souris sur les boutons même si il reste un peu à faire au niveau de l’effet qui n’est pas assez visible à mon goût.
Je l’ai aussi rendu assez configurable via un fichier de configuration pour le rendre indépendant du gestionnaire de login et du gestionnaire de fenêtre et assez facilement personalisable (police de caractère des titres, images des boutons, exécution des commandes personalisés, nombre de bouton par ligne et emplacement des lignes, taille des espacements entre boutons, etc.). Une dernière chose est qu’il marche assez correctement (il manque juste les titres des boutons pour le moment) sans fond d’écran.

Et voici le résultat :


et sans fond d’écran :

Le fichier de configuration est assez simple. La description d’un bouton est de cette forme :

[monbouton]
title=Titre de mon bouton
exec=Commande à éxécuter
tooltip=Le tooltip en cas de lancement sans fond d'écran ça peut être utile
image=chemin/vers/image

Je renvoi à l’exemple de fichier de configuration donné par défaut dans l’archive du script qui est largement commenté. Les boutons « hibernate », « reboot » ou « shutdown » sont déjà préconfigurés pour utiliser DBus. Ils ne demandent que la configuration d’une image et d’un titre. A noter aussi que les boutons préconfigurés « hibernate » et « suspend » n’apparaissent que si l’ordinateur le supporte.
Le script utilise l’ordre des d’appartition dans le fichier de configuration comme ordre pour les boutons affichés à l’écran.

Pour finir le lien vers ce script.
Il suffit de s’assurer que le fichier de configuration est dans le même répertoire que le fichier « exitit » et de lancer ce fichier « exitit » pour démarrer le script.

Une réflexion sur “Script d’extinction pour gestionnaire de fenêtre léger

  1. Salut,
    Très joli script: il faudra que je m’y penche pour voir comment faire cet effet de transparence….

    Sinon, il y à une methode alternative pour éteindre un ordinateur depuis le mode graphique:
    [code]
    gdmflexiserver -a -c ‘SET_LOGOUT_ACTION XXXX’
    [/code]
    On remplace « XXXX » par « HALT » ou « REBOOT » et on tue le gestionnaire de fenêtres 🙂

    Je ne sais pas si ça marche avec autre chose que GDM, par contre…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *