Openbox, à l'origine simple gestionnaire de fenêtres, supporte de nombreuses fonctionnalités comme des menus dynamiques accessibles d'un simple clic droit sur le bureau. Il suffit ainsi d'y ajouter une barre des tâches comme tint2 et un gestionnaire de fond d'écran comme nitrogen pour en faire un environnement de bureau tout à fait présentable, tout en alliant légèreté et rapidité.

Openbox n'utilise que 3 fichiers de configuration, situés dans ~/.config/openbox : autostart.sh, rc.xml et menu.xml. C'est dans ce dernier que l'on peut insérer ces menus dynamiques, appelés aussi pipemenus car ils fournissent sur la sortie standard un résultat (au format xml) récupéré par OpenBox tout comme la sortie d'un pipe dans une commande shell.

L'intérêt, vous l'aurez compris, est qu'il est très facile de réaliser un petit script (bash, perl, python....) qui créera un menu personnalisé tout en étant dynamique (c.a.d. régénéré en permanence pour tenir compte des modifications de son environnement). De plus il est aisé d'étudier et de modifier un script existant pour l'adapter à son besoin.

C'est donc ce que j'ai fait récemment, en reprenant dirlist.pl, un script en perl de Dave Foster, pour en faire un menu pemettant de naviguer dans son arborescence et jouer avec Audacious (ou ajouter à la liste de lecture en cours), un répertoire ou un fichier audio.

Sans plus tarder la traditionnelle capture d'écran :

obpwa

J'ai mis dans une archive le script et 3 icônes. Pour l'utiliser il vous faut Perl bien entendu, mais aussi le module MIME::Types (extra/perl-mime-types pour les archers). Le script est en GPLv3. Les instructions d'usage et d'installation sont dans les commentaires du script.

Todo :

  • faire un README et un LISEZMOI si ça intéresse quelqu'un
  • Il est possible d'utiliser le module Linux::DesktopFiles pour récupérer les icônes en accord avec le thème utilisateur, mais je ne sais pas si cela en vaut la peine et dans quelle mesure cela alourdirait le script.
  • J'en ferai bien une version gtk ce qui me permettrait d'enrichir ma collection d'applets pour tint2