Lidecli : Un outil en ligne de commande pour interagir avec les environnements de bureau
Lidecli : Un outil en ligne de commande pour interagir avec les environnements de bureauLidecli - abréviation de
Linux Desktop CLI - est un wrapper libre (MIT) développé en Python permettant de scripter plus facilement le positionnement de vos fenêtres quel que soit votre environnement de bureau. Habituellement, scripter ou automatiser le positionnement des fenêtres nécessite :
- l’utilisation d’outils bien connus (wmctrl, xprop, qdbus, xrandr, etc.),
- ou, pour certains environnements - du code (LUA pour AwesomeWM par exemple).
En d’autres termes, il n’existe pas vraiment de moyens « simples » permettant de scripter à sa guise son environnement. Lidecli agit comme un
wrapper qui simplifie grandement cette tache.
Lidecli par l’exemple
Il vous suffit d’associer - dans votre environnement de bureau - ces commandes à des raccourcis-clavier, et le tour est joué !
Plus de 160 commandes disponibles
L’outil est livré avec plus de 160 commandes qui peuvent être affichées en tapant :
lidecli.py -l
Chaque commande possède plusieurs
tags (étiquettes), notamment pour mentionner quels outils sont nécessaires à son fonctionnement (
wmctrl,
xprop, etc.), les environnements de bureau compatibles le cas échéant, et si la commande est compatible
X ou
Wayland.
Il est possible de filtrer la liste des commandes en fonction des tags. Par exemple,
lidecli.py -l -t x11 -n kde
affichera la liste des commandes compatibles
X mais qui ne sont pas spécifiques à
KDE.
Un autre moyen de consulter les commandes disponibles est de consulter le site de l’outil :
https://lidecli.comInitialement, Lidecli a été développé pour KDE pour éviter les appels D-BUS, ce qui explique le nombre important de commandes dédiées à cet environnement de travail.
Mais Lidecli s’est ensuite étendu en utilisant les outils génériques de type
wmctrl, et on peut donc l’utiliser quel que soit son environnement. À noter que le nombre de commandes pour Wayland semble pour le moment assez limité puisque le contrôle des fenêtres est dépendante du gestionnaire de fenêtres utilisé, contrairement à X ou l’architecture (et la sécurité) est différente.
Un wrapper, mais aussi un framework
Lidecli est un
wrapper/une surcouche qui fait appel aux binaires usuels dédiés au scripting des fenêtres et écrans. Mais il s’agit également d’un framework, puisqu’il est relativement simple d’ajouter de nouvelles commandes. En effet, l’intégralité des commandes sont enregistrées dans un fichier unique - db.py - contenu dans le repository.
Chaque commande est simple à définir : nom, description, tags, les arguments, et les commandes shell à exécuter.
Exemple de définition d’une commande simple permettant de fermer une fenêtre :
{
"name": "x-kill-win-name",
"description": "Kill a window specified by its name",
"forwarded_arguments": [
{ "name": "WinName", "description": "The part of the window name to kill"}
],
"command": "wmctrl -c #1#",
"versions_working": [("x11", "all")],
"versions_not_working": [],
"tags": ["x11", "windows", "wmctrl" ]
},
Il est également possible de faire appel à des
callbacks (en Python) pour analyser le résultat de certaines commandes shell. De la même façon, une nouvelle commande peut faire appel à du code Python et non des commandes shell, pour des cas plus complexes.
Un outil pratique
L’idée de réaliser un outil unifié permettant de gérer ses fenêtres en ligne de commande semble intéressante. Même si des outils comme
wmctrl accomplissent des merveilles, certaines tâches sont parfois plus complexes et nécessitent le développement d’un script. Ce manque est comblé par
Lidecli.
À titre d’exemple, pour déplacer une fenêtre d’un moniteur à un autre sans changer sa géométrie ni son positionnement relatif, il est nécessaire d’avoir la configuration des écrans (avec xrandr par exemple), puis de faire des calculs d’offset pour repositionner la fenêtre à l’endroit souhaité.
De la même façon, pour donner le focus à la 3e fenêtre d’une application donnée (si vous avez 3 terminaux ouverts par exemple), il est possible de le faire avec
wmctrl seulement mais ce n’est pas trivial :
wmctrl -lx |grep Terminal | cut -d ' ' -f1 | head -3 | tail -1 | xargs wmctrl -i -a
Lidecli semble donc combler un manque et offrir la possibilité à tous - sans connaissances particulières - de scripter leur environnement de travail relativement aisément.
Enfin, si une communauté se développe autour de l’outil (diffusé sous license MIT), cela pourrait ouvrir la voie à une véritable bibliothèque pour gérer aisément la disposition des fenêtres en ligne de commande quel que soit son environnement.
Télécharger ce contenu au format EPUB Commentaires : voir le flux Atom ouvrir dans le navigateur