OpenBox - Gestionnaire de fenêtres

OpenBox est un gestionnaire de fenêtres très léger, simple et configurable, il est similaire à BlackBox, et FluxBox.

Installation

L'installation d'OpenBox est très simple. Une fois que Xorg est correctement configuré, il suffit d'entrer :

# pacman -Sy openbox

Les paquets suivants peuvent également être installés pour compléter l'installation de base : “openbox-themes” contient les différents thèmes et “obthemes” permet d'éditer les thèmes, “obconf” permet de configurer plus facilement OpenBox, “obmenu” permet d'éditer les menus, “obkey” permet d'éditer les raccourcis claviers, et “feh” permet de visualiser des images et d'afficher un fond d'écran.

Configuration

On peut configurer OpenBox en utilisant les utilitaires “obconf” et “obmenu” ou en éditant directement les fichiers de configuration pour l'ensemble du système grâce aux fichiers de configuration se trouvant dans le répertoire “/etc/xdg/openbox” ou grâce aux fichiers de configuration se trouvant dans le répertoire personnel “~/.config/openbox/” pour un seul utilisateur. La particularité d'OpenBox, c'est qu'il peut être configuré au moyen de 3 fichiers. Ces fichiers utilisent une syntaxe “xml” et “bash” relativement claire :

  • rc.xml” : Ce fichier contient l'ensemble des paramètres du windows managers, on y retrouve les raccourcis clavier, les règles de placement des fenêtres, la gestion des bureaux…Il est structuré en xml.
  • menu.xml” : Ce fichier contient la structure du menu des applications, il est lui aussi en xml.
  • autostart.sh” : Ce fichier contient, comme son nom l'indique, les programmes à charger au démarrage d'openbox. Il est structuré en bash.

Le fichier "rc.xml"

La syntaxe du fichier reste relativement intuitive et commentée. Il est intéressant pour les utilisateurs avancés ou désirant en connaitre plus sur la personnalisation de leur environnement de se plonger dans ce fichier. Celui-ci est structuré en différentes sections. La plupart des réglages généraux peuvent être traités via le programme “Obconf”.

Raccourcis clavier

Comment lier un comportement à une touche. Par exemple lancer un programme avec la touche “Windows” ? Il suffit de respecter la syntaxe suivante. Keybind suivit de la séquence de touches :

   
<keybind key="W-p">
    <action name="Execute">
      <command>~/path/to/your/dmenu-script</command>
    </action>
</keybind>

Ici la combinaison de touches “Windows + P” va lancer le programme “dmenu”. Faîtes attention néanmoins à ne pas utiliser un raccourci déjà utilisé. Vous pouvez connaitre le nom des touches grâce au programme “xev”, lancez le et tapez ensuite la touche, le programme vous retournera le code hexadécimale ainsi que le nom de la touche. Voir ici pour la liste des actions possibles : http://openbox.org/wiki/Help:Actions. Il est également possible de faire des raccourcis souris suivant la même logique. “Obkey” est un utilitaire simplifiant la création et la gestion des raccourcis claviers sous OpenBox. Pour l'installer, utilisez Yaourt par exemple puisqu'il n'y a qu'une version GIT dans AUR :

$ yaourt -S obkey-git

Affichage des fenêtres

Une fonctionnalité intéressante des systèmes de OpenBox, c'est la possibilité de configurer le comportement des fenêtres au démarrage de celles-ci. Avez-vous déjà remarqué l'habitude que l'on a d'accumuler les fenêtres sur le premier bureau tout en laissant les autres vides ou presque ? Alors qu'il serait si simple de consacrer certains bureaux à certaines tâches ? C'est possible avec OpenBox.

A la fin du fichier “rc.xml”, nous retrouvons une section “applications”, dans cette section il est possible de définir le comportement d'affichage des programmes. Il y a de nombreuses options notifiées par ailleurs dans les commentaires du fichier. Je vous livre ici une entrée de mon fichier à titre d'exemple de ce qu'il est possible de réaliser :

 <!-- chat -->
    <application name="Pidgin">
      <desktop>4</desktop>
      <iconic>yes</iconic>
    </application>

La première ligne désigne un commentaire me permettant de me retrouver dans la syntaxe. Elle n'a pas d'incidence. La seconde ligne renseigne le nom de l'application. Attention ce n'est pas le nom de l'exécutable ! Pour retrouver le nom de l'application, lancez la commande “xprop” et avec la croix cliquez sur l'application, des lignes apparaissent dans la console. Repérer celle-ci : “WM_CLASS(STRING) = “pidgin”, “Pidgin””. Le premier terme renseigne la classe de l'application, le second son nom. La seconde ligne renseigne le bureau sur lequel doit apparaitre l'application et la troisième le mode d'apparition du programme, ici minimisé. De nombreuses options sont possibles, (maximisation, coordonnées x-y de la fenêtre…).

Le fichier "menu.xml"

Il existe les utilitaires “Obmenu”, et “Menumaker” en ligne de commandes pour faciliter l'édition de ce fichier. Et pour ceux qui ne veulent pas éditer leur menu à chaque fois qu'ils installent une nouvelle application, il existe “obm-xdg”, fournit avec le paquet “obmenu”. Il peut générer un menu à base de sous menus-catégories d'applications GTK/GNOME installées sur votre ordinateur. Pour utiliser “obm-xdg”, ajoutez les lignes suivantes à votre fichier “~/.config/openbox/menu.xml” entre les balises du menu “root-menu” :

<menu id="xdg-menu" label="Applications" execute="obm-xdg"/>

Ensuite, lancez “openbox --reconfigure” pour mettre à jour votre menu OpenBox. Il devrait maintenant apparaitre un sous-menu appelé “Applications” dans votre menu. Si vous n'avez pas Gnome installé, vous devrez alors installer le paquet “gnome-menus” pour faire marcher “obm-xdg”.

Le fichier "autostart.sh"

Le plus facile, son fonctionnement est en shell. Il contient la liste des programmes qu'OpenBox lance au démarrage. Pour rajouter un programme, ajoutez juste le nom de l'exécutable ou son chemin complet si celui-ci n'est pas renseigné dans votre variable PATH. N'oubliez pas un petit commentaire avec un dièse pour ne pas oublier vos ajouts dans le fichier. Exemple :

# pypanel, pager + sélecteur de fenêtre, très léger
pypanel &

Changer le fond d'écran

Feh

Pour mettre un fond d'écran personnalisé, on utilise le programme Feh, pour l'installer, entrez :

# pacman -Sy feh

puis ensuite, dans un terminal :

$ feh --bg-scale  ~/cheminversl'/image.jpg 

Celui-ci va ajuster l'image aux dimensions de l'écran et la placer temporairement comme fond d'écran. Il génère aussi le fichier “.fehbg” qui garde les réglages et permet d'être utilisé comme fond d'écran. Puis dans le fichier “~/.config/openbox/autostart.sh”, avec un éditeur on rajoute la ligne :

# fond d'écran
eval `cat ~/.fehbg` &

Nitrogen

Vous pouvez également utiliser Nitrogen, un outil de configuration graphique pour choisir son fond d'écran. On peut l'installer avec yaourt également :

# pacman -Sy nitrogen

Ensuite choisissez le répertoire où sont situés vos fonds d'écran avec cd :

 cd Images/répertoire

Et enfin lancez Nitrogen :

$ nitrogen

Puis sélectionnez le fond d'écran de votre choix. Pour retrouver votre fond d'écran au démarrage de votre session, ajoutez la ligne suivante dans votre fichier autostart :

$ nitrogen --restore &

Contrôle du volume

Je vais expliquer rapidement comment contrôler le volume dans OpenBox avec aumix. C'est sûrement adaptable à d'autres environnements. Il faut aumix . J'ai utilisé “Obkey” pour affecter les raccourcis clavier. Voir plus haut pour l'installation d'“Obkey”. On va contrôler le volume global (v).

aumix -v +5   # +5%
aumix -v -5   # -5 %
mute          # mute/unmute

Allez ensuite dans “Obkey”. Trouvez la touche correspondante, puis cliquez dessus. Cliquez sur le “+” en bas afin d'ajouter une action à cette touche. Cliquez sur l'action qui vient d'être ajoutée, un menu/panneau apparait. Cliquez sur “Execute” , la partie supérieure droite de Obkey change. Insérez dans “command” le code donné plus haut.

Menu d'extinction

Pour avoir un menu d'extinction plus sympathique que de devoir lancer une commande pour fermer sa session ou éteindre l'ordinateur… Pour les deux méthodes proposées, il faut avoir le language Python installé, si ce n'est pas le cas, installez le avec la commande “# pacman -Sy python2”, il faut également accorder les droits d'extinction de la machine aux utilisateurs grâce à sudo, pour cela éditez le fichier “/etc/sudoers” en mode root et ajoutez-y la ligne suivante :

%users  ALL=NOPASSWD: /sbin/shutdown

Menu basique

Vous pouvez choisir de vous déconnecter d'OpenBox en optant pour le menu créé à la base pour CrunchBang Linux, écrit en PyGTK par le créateur de CrunchBang. Toutefois, cette distribution utilisant normalement GDM, si vous ne l'utilisez pas, il convient de modifier légèrement le script. Pour utiliser ce menu, il faut donc créer le fichier “openbox-logout”. Si vous utilisez GDM, le script de CrunchBang suffit, vous pouvez le trouver à l'adresse suivante : http://crunchbang.org/archives/2008/04/01/openbox-logout-reboot-and-shutdown-script/. Si vous n'utilisez pas GDM, le code suivant est modifié en conséquence :

#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import os

class DoTheLogOut:

    # Cancel/exit
    def delete_event(self, widget, event, data=None):
        gtk.main_quit()
        return False

    # Logout
    def logout(self, widget):
        os.system("openbox --exit")

    # Reboot
    def reboot(self, widget):
        os.system("sudo shutdown -r now")

    # Shutdown
    def shutdown(self, widget):
        os.system("sudo shutdown -h now")

    def __init__(self):
        # Create a new window
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title("Exit? Choose an option:")
        self.window.set_resizable(False)
        self.window.set_position(1)
        self.window.connect("delete_event", self.delete_event)
        self.window.set_border_width(20)

        # Create a box to pack widgets into
        self.box1 = gtk.HBox(False, 0)
        self.window.add(self.box1)

        # Create cancel button
        self.button1 = gtk.Button("Cancel")
        self.button1.set_border_width(10)
        self.button1.connect("clicked", self.delete_event, "Changed me mind :)")
        self.box1.pack_start(self.button1, True, True, 0)
        self.button1.show()

        # Create logout button
        self.button2 = gtk.Button("Log out")
        self.button2.set_border_width(10)
        self.button2.connect("clicked", self.logout)
        self.box1.pack_start(self.button2, True, True, 0)
        self.button2.show()

        # Create reboot button
        self.button3 = gtk.Button("Reboot")
        self.button3.set_border_width(10)
        self.button3.connect("clicked", self.reboot)
        self.box1.pack_start(self.button3, True, True, 0)
        self.button3.show()

        # Create shutdown button
        self.button4 = gtk.Button("Shutdown")
        self.button4.set_border_width(10)
        self.button4.connect("clicked", self.shutdown)
        self.box1.pack_start(self.button4, True, True, 0)
        self.button4.show()

        self.box1.show()
        self.window.show()

def main():
    gtk.main()

if __name__ == "__main__":
    gogogo = DoTheLogOut()
    main()

Une fois ce fichier créé, rendez le exécutable avec la commande “$ chmod +x openbox-logout”. On déplace ensuite ce fichier dans le répertoire “/bin/” avec la commande “# mv ./openbox-logout /bin/” pour pouvoir le lancer via la commande “openbox-logout”. On peut ensuite ajouter cette commande “openbox-logout” dans le menu d'OpenBox pour y avoir accès simplement.

Menu avancé

On peut bénéficier d'un menu plus esthétique grâce à un autre script lui aussi écrit en Python. Afin de l'utiliser, il faut tout d'abord télécharger ce script “Script-quitter.zip” à l'adresse suivante : http://www.megaupload.com/?d=NCZ27Q1L. On décompresse ensuite l'archive avec Unzip par exemple. On obtient un dossier “Script-quitter” contenant un dossier “img” et le script Python “ob_logout”. Il faut éditer ce script afin d'y inclure le chemin de votre fond d'écran :

## Lien vers le fond d'écran
IMG_FILE = '/chemin/d'acces/a/votre/wallpaper.extension'

## Commande pour se déconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour redémarrer
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour éteindre

Afin de ne pas avoir à refaire cette manipulation à chaque fois que l'on change de fond d'écran, il existe une astuce si on utilise Feh pour gérer ses fonds d'écran. Si on utilise Nitrogen, c'est encore plus simple, puisque Nitrogen enregistre le chemin vers le fond d'écran dans le fichier “~/.config/nitrogen/bg-saved.cfg”. En modifiant légèrement le code Python, on peut récupérer ce chemin automatiquement :

## Lien vers le fond d'écran
wpp = os.popen('grep file= .config/nitrogen/bg-saved.cfg|cut -c 6-')
chemin_wpp = wpp.read()
wpp.close()
image = chemin_wpp[:-1]
IMG_FILE = image

## Commande pour se déconnecter
CMD_LOGOUT = 'openbox --exit'

## Commande pour redémarrer
CMD_REBOOT = 'sudo shutdown -r now'

## Commande pour éteindre

On peut ajouter les droits d'exécution au fichier “ob_logout” avec la commande “chmod +x ob_logout”. Pour que ce soit plus simple à utiliser, on peut placer le contenu du dossier “Script-quitter” dans un autre dossier caché en faisant “mv ./Script-quitter/* ./.openbox-logout-py”. Une fois ceci fait, on peut lancer le script en faisant “python2 .openbox-logout-py/ob_logout”. Il suffit alors de placer cette commande dans votre menu OpenBox pour y avoir accès simplement.

Certains utilisateurs ont eu la mauvaise surprise en lançant le script de voir qu'il ne fonctionnait pas. Python renvoie alors le message d'erreur “File ”.pylogout/ob_logout”, line 12, in <module> from PIL import Image, ImageFilter ImportError: No module named PIL” pour signifier qu'il manque PIL. Il suffit alors de l'installer en faisant “# pacman -Sy python-imaging”.

Vous pouvez également trouver des scripts alternatifs un peu plus évolués sur les forums suivants :

Liens

Site officiel (en) : http://openbox.org/

 
openbox/install.txt · Dernière modification: 2011/01/31 15:05 par pascal.lemazurier
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki