samedi 9 août 2008

Essai d'un nouveau paradigme: Tiling window managers (tiwm)

L'avantage d'un système modulaire comme les Unix libres, une fois passé le coté "usine a gaz" pour les débutants, est la facilité avec laquelle vous pouvez remplacer les parties du système qui ne vous plaisent
pas. Vous aimez bien apt-get mais préférez pf au lieu de iptables ? Vous pouvez utiliser le noyau FreeBSD avec Debian/kFreeBSD. Vous n'aimez pas le système d'init Systeme V, utilisé dans la plupart des distributions
Linux ? Vous pouvez le remplacer par runit sous Debian, utiliser upstart sous Ubuntu ou l'init BSD sous Slackware. Gnome trop gourmand en RAM ? Il existe Xfce. Xfce trop gourmand en RAM ? Il existe Equinox Desktop Environment. X trop gourmand en RAM ? Vous pouvez travailler en console ( ce qui double par exemple l'autonomie de mon portable ) étant donné que tous les outils Unix existent en version texte : navigateurs web, lecteurs de flux RSS, clients mail, clients p2p ...

Limites de gnome
Je me suis intéressé aux gestionnaires de fenêtres en tuiles ( Tiling windows manager, notés après tiwm ) après avoir rencontré des problèmes de productivité sous Gnome. Classiquement, en faisant du développement web, j'avais besoin d'avoir sous les yeux un Terminal avec un éditeur ou une console mysql ouverte, et le navigateur web pour suivre les modifications que je faisais. De la même façon, j'avais besoin de façon récurrente de lire une doc sur le web tout en tapant des commandes dans le shell. Alors que mon
navigateur web est en plein écran, j'ouvre donc un xterm. Tout d'abord pour une raison que j'ignore Gnome lance la nouvelle fenêtre derrière mon focus actuel, et se contente d'un clignotement légèrement irritant dans la barre des taches.
Je commence donc par cliquer sur la barre des taches pour donner le focus a xterm. Ensuite je diminue la taille de la fenêtre du navigateur web pour faire de la place a xterm, et je réaugmente la taille de xterm dans l'espace correspondant.
Maintenant j'ai besoin d'un deuxième xterm pour avoir la consommation cpu avec "top" sur mon serveur. Je reclique sur la barre des taches pour donner le focus, et cette fois c'est trois fenêtres que je dois
réarranger a la main sur mon espace de travail. N'y aurait-il pas moyen de laisser le gestionnaire de fenêtre ranger les fenêtres qu'il a créé ?

Les avantages
Les tiwm partent d'un paradigme différent: tous les programmes ouverts sur un bureau donné doivent être visibles simultanément. Le premier programme que vous lancez, par exemple un terminal, sera toujours
en plein écran.

Puis je lance firefox. Le gestionnaire de fenêtre
redimensionne automatiquement firefox pour laisser de la place au
terminal.

Besoin d'un gestionnaire de fichiers ? De même le gestionnaire de fenêtre
découpe l'écran en trois parties.

Besoin de plus de place sur un des xterm pour lire un log ? Si j'augmente la taille de la fenêtre xterm avec la souris, le gestionnaire de fenêtre redimensionne les deux autres programmes dans l'espace restant.
L'utilisation d'un tiwm m'a incité à organiser mon espace de travail de façon plus rationnelle ( ce que j'aurais pu faire sous gnome ceci dit ) Le fait d'avoir les fenêtres des applications en permanence ouvertes
incite au rangement. Une fois que j'ai défini la bonne taille de mes fenêtres, je laisse les programmes ouverts en permanence, ranges sur des bureaux virtuels différents, et je ne passe pas mon temps à minimiser/maximiser les programmes, ou à ouvrir/fermer 15 fois par jour les mêmes applications.

Par ailleurs étant donné que les fenêtres sont affichées en permanence, les tiwm se marient très bien avec les programmes utilisant des onglets ( firefox, gnome-terminal, screen avec sa barre de statut )
vous n'avez jamais a cliquer sur une barre des tâches pour comprendre ensuite, zut mon onglet n'était pas dans cette fenêtre.
Ce mode de fonctionnement est a mon avis adapté au développeur qui a en général besoin de deux fenêtres
lisibles simultanément plus qu'à l'utilisateur de base, qui passe d'une tâche à une autre sans overlapping ( traitement de texte, puis surf sous le web, puis regarder un film puis surf sur le web )

Les inconvénients
Le principal défaut que je vois au tiwm est lié à la taille de nos écrans standards. Pour surfer sur le web confortablement il vous faut maintenant du 1024x768, si vous n'avez pas envie de faire joujou avec la
barre de scrolling latéral en permanence, surtout depuis que Ruby on Rails et Wordpress ont mis à la mode les grosses polices sur le web.
Vu que mon écran fait du 1280x1024, la place disponible pour plusieurs fenêtres _lisibles_ est limitée. Après
divers tentatives je me suis fixé comme taille 1024x600 pour le navigateur web. Malheureusement cela ne me laisse pas la place d'avoir un xterm en 80 x 25 caractères avec une taille de police
correcte ( la monospace 12 de gnome-terminal) .
J'ai donc un mini xterm avec sur le cote droit, Nautilus.
Vais je devoir acheter un écran plus grand ?

Ensuite les tiwm ne possèdent pas de menu "Start" avec la liste des programmes comme sur un environnement de bureau classique. Sous wmii par exemple on tape Alt-P et les premières lettres du nom du
programme, les complétions possibles s'affichant dans la Status Bar de wmii. De cette façon on lance très rapidement ce dont on connaît le nom ( firefox, xterm, gnumeric ) mais pour cela devient problèmatique pour
les programmes qu'on utilise peu ou qu'on vient d'installer ( C'était quoi déjà mon programme de gravure de
CD ? gnome-foo-write, gnome-burn, graveman-mon-cd ? )
Enfin et c'est a mon avis le plus grand défaut des tiwm étant donné le paradigme employé: la maximisation d'une fenêtre suivie d'une démaximisation de cette fenêtre ignore l'ordonnancement antérieur des
fenêtres. Supposant que j'ai besoin par exemple tout d'un coup de mon xterm en plein écran, pour chercher visuellement dans le long résultat d'un select SQL une valeur. Je passe wmii en mode plein écran, ce qui
donne temporairement à la fenêtre active la taille maximale. Mais quand je sort du mode plein écran, ma fenêtre de xterm, ne trouve pas la taille antérieure que lui avait fixé avec la souris. La fenêtre xterm reprend
la taille par défaut que lui avait assignée wmii au lancement du programme. Pas très clair ? Il ne tient qu'a vous d'essayer.

Conclusion
Si vous voulez tenter d'améliorer votre productivité sur un ordinateur, je vous conseille vivement d'essayer un tiwm, cela aura au moins le mérite de vous faire réfléchir à la façon dont vous utilisez une
interface graphique. Dans l'archive Debian et dans les ports FreeBSD se trouvent dwm, larswm et wmii, cet article ayant été écrit après deux semaines d'utilisation de wmii.

6 commentaires:

Snowangelic a dit…

Un de mes rêve serait de pouvoir garder gnome (start menu, brres de lancemen rapides,...) tout en ayant la "zone centrale" dédiée aux application (l'endoit où on voit le wallpaper) qui pourrait fonctionner en mode tilling.

Une petite touche de compiz et on a, selon moi, le top en terme de productivité.

Rhyhann a dit…

T'as oublié le meilleur de tous, la réincarnation de ion: awesome.
@snowangelic: Awesome pourrait te convenir, ou à la limite demande (ou cherche) un plugin qui donne le tiling à compiz.

Tetsuo a dit…

Très bonne entrée en matiére. Tu résume bien ce que pense les nouveaux utilisateurs de twm.

Il est nécessaire aussi de préciser que le mode d'opération change:
- l'on utilise beaucoup plus le clavier et les raccourcis entiérement personnalisables.
- le passage d'espaces / bureaux ou de fenêtres en plein écran se fait beaucoup plus rapidement qu'à la souris.

Ton approche est orientée wmii alors que d'autre twm permettent de t'affranchir de tes inconvénients.

Je pense à xmonad qui posséde une librairie impressionnante de possibiltés (actions, affichages, lancement ...). Exemples:
- les fenêtres gardes leur dimensions au retour d'un modèle d'affichage
- Il est entiérement compatible avec Gnome, les bares le menu start, les applets, réserver des espaces écrans ...

Et comme dis le site de larswm:
Because managing windows is the window manager's job! :)

Emmanuel Kasper a dit…

Je me suis intéressé aux TiWM disponibles dans Debian Etch, que j'utilise chez moi et au travail, d'ou l'absence de xmonad et awesome.
L'idée de la cohabitation avec gnome est intéressante, j'ai bien envie d'essayer avec gnome pour voire ce que ca donne

en ce qui me concerne pour l'usage du clavier, je pense qu'un focus-follow-mouse est l'ideal sur un TiWM pour ma productivite personelle pour changer d'applications a l'interieur d'un meme bureau

je pense aussi a ce texte de reference sur le sujet keyboard vs mouse
http://cm.bell-labs.com/wiki/plan9/34/

Tetsuo a dit…

xmonad est dispo sur ubuntu et etch.

Pour la souris le comportement de base est que le passage au dessus d'une fenêtre la sélectionne automatiquement.

Tu trouves aussi dans les modules la possibilité de paramétrer des "mouse gestures".

Voici un screenshot de l'intégration avec Gnome:
http://haskell.org/haskellwiki/Image:Screen-ohmega-tab-gnome-twopane.jpg

Et le howto:
http://haskell.org/haskellwiki/Xmonad/Using_xmonad_in_Gnome

Perso j'ai depuis longtemps abandonné les bureaux traditionnels pour construire l'environnement le plus adapté à mon utilisation.C'est vraiment ce que j'apprécie, ce gain opérationnel énorme dans l'éxécution, la navigation et le lancement des programmes.

Les twm sont vraiment dans la philosophie d'unix :"make each program do one thing well"

Un autre inconvénient c'est pour les démos aux zindoziens, il faut préférer compiz ;-)

Christophe-Marie a dit…

Hello,

C'est vrai, une barre des taches, ça sert pas souvent, mais pour les applications peu utilisées c'est un truc qui manque pour chercher quelque chose dont le nom ne nous vient pas à l'esprit tout de suite.

Tout ça pour dire qu'il existe un moyen de se débarrasser de ce genre d'inconvénients : sous awesome, j'arrive à garder la barre gnome, et toutes les fonctionnalités gnomes (gestionnaire de mot de passe, gestionnaire de thème, etc...). Je ferais un article un de ces 4 sur mon blog pour expliquer comment on fait (je ne peux pas le faire maintenant, j'ai pas mon pc sous la main). En attendant, si tu es impatient, tu peux chercher toi-même ;)

En attendant, je te conseille moi aussi awesome, qui est tout neuf et qui fait de nouveaux adeptes chaque jours avec ses progrès très rapide.

@snowangelic : Malheureusement (je crois qu')il est aujourd'hui impossible de mettre un compiz derrière tout ça, pour des raisons de design : compiz EST un wm (et, d'après ce que je pense savoir, tu ne peux pas lancer deux wm en même temps). Je pense (mais je dis peut-être des bêtises) que si l'on veut ce type de fonctionnalité, il faut modifier son code pour soit lui faire directement supporter un tiling qu'il embarquerait (mais c'est sans doute pas la philosophie des développeurs).