Skip navigation

Bon, alors, aujourd’hui, je vais vous parler des tiling window managers. Et là normalement, première question: C’est quoiiii?

I- Définition:
Un gestionnaire de fenêtres en mode pavant (je vais abréger en TWM), comme son nom l’indique (ou pas), est un gestionnaire de fenêtres où les dites fenêtres ne se recouvrent pas, en général (il peut y avoir des exceptions, notamment pour les fenêtres d’enregistrement de fichiers, de confirmation, etc…).

Là, on peut se demander à quoi ça sert… Eh bien à maximiser l’espace utile de votre écran: pas de pixels perdus (enfin pas beaucoup…), un maximum de lisibilité (toutes vos fenêtres d’un bureau virtuel/tag/Workspace sont visibles en même temps), une utilisation qui fait la part belle au clavier (au revoir syndrome du canal carpien), et en général, de part la philosophie de ces environnements, une légèreté et une configurabilité maximales.

On va donc voir différents exemples de TWMs: tout d’abord ceux à pavage « préfixé », les « intermédiaires », puis ceux à pavage « libre »:

  • Pavages « préfixés »: Awesome WM, WMFS.
  • Pavage « intermédiaire »: WMII
  • Pavage « libre »: Ratpoison, Ion3

Il en existe -beaucoup- d’autres, par exemple XMonad, StumpWM, scrotwm, qui ont tous leurs spécificités (config en haskell, raccourcis claviers « à la screen/ratpoison », ultrasimplicité, etc…) mais que n’ayant testés que succintement, je ne préfère pas aborder ici.

II- Les TWMs à pavage « préfixé ».

Par là, je veux dire que la répartition des « tiles » se fait de façon -relativement- arbitraire, gérée par le gestionnaire de fenêtres en fonction des modes qu’il propose: en gros, on peut redimensionner la (ou les) fenêtre « maître », augmenter ou diminuer le nombre de colonnes/lignes, mais pas redimensionner verticalement dans une colonne, la répartition des tiles étant fixée algorithmiquement dans le code du gestionnaire de fenêtres. Un bon exemple avec AwesomeWM:

Bien sûr, ils disposent tous deux d’un mode « flottant », permettant à un client de se superposer aux autres (cf le screenshot d’Awesome plus bas).

Alors ici, c’est le mode tiling « de fibonnacci »: la première fenêtre prendra tout l’écran, si vous en rajoutez une deuxieme, elles prendront chacune la moitié de l’écran, une troisième fenêtre se partagera, avec la seconde, la moitié de la moitié de l’écran, et ainsi de suite (ouf!). Dans ce mode, on ne peut pas modifier la taille des fenêtres. Du tout. Et si vous êtes pas d’accord, eh bien changez de crèmerie :).

Bien sûr, il existe différents modes de pavage: fenêtre maître à gauche, les autres fenêtres se partagent l’espace restant, fenêtre maître au dessus, en dessous, etc… Awesome comme WMFS proposent de nombreux modes de tiling différents, chacun ayant leurs avantages (et défauts, par exemple dans le cas du tiling type « fibonnacci » ci dessus, vous ne pouvez pas redimensionner la fenêtre maître et encore moins les autres…).

Un avantage (ou un défaut) d’AwesomeWM réside dans son fichier de configuration: il est écrit en lua, et permet de vraiment presque tout customiser (widgets, barres de statuts, assignation de clients (les fenêtres) à des tags (les bureaux virtuels, en gros) prédéfinis) pour peu que l’on ait quelques connaissances de bases en lua. De plus le wiki regorge d’exemples (pas toujours à jour, je vais y revenir) pour se faire la main. Son gros défaut (qui peut ne pas en être un, tout dépend des goûts): à chaque version majeure (3.2,3.3, 3.4… etc), la syntaxe de certains éléments du fichier de configuration a la bonne idée d’être modifiée. Croyez moi, passer deux heures tous les 4 matins à refaire son fichier de conf’ (conséquent, en plus) pour retrouver ses réglages aux petits oignons de la version précédente, ça peut vite devenir … pète couilles 🙂 )

Un avantage (ou défaut, là aussi au choix) de WMFS, c’est son fichier de configuration simple, et la possibilité d’utiliser des scripts shell maison pour envoyer des informations à la barre de statut. Il est moins « customisable » qu’Awesome, mais aussi plus simple et plus cohérent, à mon avis, au niveau de l’évolution de sa configuration: une nouvelle version ne « pètera pas » votre conf’… Il est aussi plus léger (Awesome commence un peu à « s’usine-à-gazifier, du fait de tous les plugins lua pouvant tourner en même temps et actualisés chaque seconde: sur mon petit atom dual-core, il me bouffe allègrement 2% d’un coeur, là où wmfs et son script de status (pourtant bien rempli), ne doit pas dépasser les 0,5%)), et dispose d’un mode permettant de l’utiliser « à la Vim ». Et j’aime Vim, donc quand je retrouve mes habitudes de mon éditeur de texte dans mon gestionnaire de fenêtres, j’apprécie 🙂

WMFS est encore assez jeune, mais se développe rapidement, et son équipe de dev (xorg62, linkdd & co sur #wmfs@irc.freenode.net) est bien active, jeune, et sympa comme tout! Et, ce qui ne gâche rien, francophone 😉

Quelques screens d’Awesome et WMFS, ainsi que les liens vers leurs sites respectifs:

  • WMFS:

Et le site: http://wmfs.info

Pour l’installation, je vous conseille de passer par la version git, celle dispo dans les repos arch (et probablement les autres) datant un peu, mais vous pouvez utiliser la version git d’AUR.

  • AwesomeWM:

Et le site: http://awesome.naquadah.org

D’ici peu, je vous ferai un article détaillant leurs configurations respectives.

III- Les intermédiaires: l’exemple de WMII.

WMII, quant à lui, fonctionne un peu sur le même principe, sauf qu’il ne propose par défaut que 3 layouts: default, qui se « customise » à la main, stacked, qui empile les clients d’une colonne créée dans le mode défaut, et float, qui, comme son nom l’indique, est un mode flottant. Contrairement aux précédents WMs, il permet (par drag de la barre de titre, donc, avec la souris (beurk)) de redimensionner verticalement les tiles d’une colonne:

ici, je peux donc redimensionner les deux tiles à droite verticalement, si l’envie m’en prend. Je peux aussi les stacker (mod-s par défaut, là aussi je reviendrai sur le fichier de configuration) comme bon me semble.

Un des atouts de wmii est qu’il se comporte comme Plan9 sur beaucoup de points: il dispose d’une arborescence interne (wmiifs) où chaque client apparaît, et où l’on peut donc modifier les paramètres d’un client en temps réel, ainsi que son comportement. Idem pour la barre de status, les tags, etc… assez déroutant au premier abord, mais très puissant quand on commence à comprendre le concept.

J’y reviendrais plus longuement quand je détaillerai sa configuration, elle aussi assez complète.

le site: http://wmii.suckless.org/

IV- Les libres: Ratpoison et Ion3.

Bon, Ion3©® est excellent. Mais son dev a pété les plombs en beauté (il est passé sous windows, après avoir insulté les packageurs de distros ainsi que ses utilisateurs, enfin bref…) et de plus sa licence est « bizarroïde »: en gros, on peut modifier son source, mais le nom « Ion3 » est déposé par son auteur…

Sa configuration se fait en lua, il vous permet de splitter verticalement et horizontalement vos « frames » comme vous le voulez et de les redimensionner dans tous les sens, il dispose en plus d’un mode « tabbed » (les clients d’une même « frame » apparaissent dans des onglets, très pratiques), il est configurable à souhait, d’une grande richesse, mais son dev est complètement fractale. Bien dommage. Cependant, si le coeur vous en dit, voici un screenshot pour vous faire baver, si la licence en question et le dev foldingue ne vous rebutent pas:

et l’adresse du site: http://www.modeemi.cs.tut.fi/~tuomov/ion/

Actuellement, il semble n’être plus maintenu. J’attends avec impatience qu’une bonne âme le forke (par contre il va pas se marrer, apparemment le dev a viré tous les commentaires de son code source, rien que pour emmerder le monde…)

Alors jusque là, je me languissais d’un TWM libre, gérant des onglets d’une façon ou d’une autre, sans dev complètement fracasse et sans licence moisie… Lorsque je suis (re)tombé récemment sur: RatPoison! Et là, j’ai trouvé mon bonheur:

  • fichier de configuration simple – ce qui ne veut pas dire que ratpoison soit simple. Oh que non 🙂
  • statusbar: y’en a pas, dzen2 fait parfaitement l’affaire, avec un petit script bash maison.
  • vous pouvez splitter vos frames verticalement, horizontalement, les redimensionner comme bon vous semble.
  • Il se contrôle entièrement au clavier. Tout, absolument tout, se fait au clavier.
  • Il utilise un caractère d’échappement comme screen et tmux: C-t de base (je l’ai remplacé par mod4 aka Super_L, aka touche windoze)
  • il permet de rentrer des commandes « à la vim »: C-t : de base, Mod4 puis : ici.
  • Et ce qui ne gâche rien, il permet de lancer plusieurs clients dans une frame, et de cycler entre eux via C-t p/n, ou mod4 puis p/n ici, de les renommer (ou de leur affecter un nom au démarrage) et de les appeller directement par C-t ‘ nom_du_client (exemple: mutt)
  • Il ne dispose pas de tags/workspaces de base, il faut utiliser rpws pour les créer, dans son fichier de conf’. Avantage, vous pouvez les créer à la volée via C-t ! rpws blabla (C-t ! application lance une appli, ex: C-t !firefox)
  • Il est über méga léger: 1.5Mo de RAM ici utilisée par ratpoison. Conséquemment, il est über méga speed 😀
  • Petit défaut: mis à part les « transient windows » (genre « ouvrir un fichier »), il n’y a pas de mode flottant, il faut donc dédier une frame à mplayer par exemple. Pas vraiment gênant sachant qu’on peut tabber les frames.

Petit screenshot:

et l’adresse du site: http://www.nongnu.org/ratpoison/

Voilà pour ce petit tour du propriétaire des différents TWMs disponibles (il y en a d’autres, mais ne les ayant pas tous testés, je vous laisse ce plaisir. Xmonad est paraît il assez jouissif, mais en haskell, stumpwm fonctionne sur le principe de ratpoison et EvilWM, mais en Common Lisp, scrotwm est ultra minimaliste, dwm est similaire à awesome (ce dernier en descend, d’ailleurs), sauf que sa conf’ se fait à… la compilation (miam!)… Enfin bref, ce n’est pas le choix qui manque!

D’ici peu, je vous ferai plusieurs petits tutos sur la configuration d’AwesomeWM, de WMFS, de WMII et bien sûr de ratpoison. Et peut-être aussi sur Ion3, malgré son dev -je ne le dirai jamais assez- complètement foldingue.

Laisser un commentaire

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

What is 5 + 3 ?
Please leave these two fields as-is: