OpenBox est un gestionnaire de fenêtres très léger, simple et configurable, il est similaire à BlackBox, et FluxBox.
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.
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 :
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”.
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
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…).
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 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 &
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` &
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 &
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.
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
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.
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.
Vous pouvez également trouver des scripts alternatifs un peu plus évolués sur les forums suivants :
Site officiel (en) : http://openbox.org/