Porneia delights

[EN: You can find an archive of the last official webpage of LarsWM's project and others ressources and links here | FR : Vous pouvez trouver une archive de la dernière page officielle du projet LarsWM ainsi que d'autres ressources et liens ici]

— « Parce que la gestion des fenêtres est le boulot du gestionnaire de fenêtre ». C'est sous cette formule que Lars Bernhardsson présente le gestionnaire de fenêtre qu'il a écrit : larswm (mirroir).

Tables des matières

Je compte ici vous présenter un gestionnaire de fenêtre que j'utilise maintenant depuis quelques petites années et dont je n'arrive plus à me passer (c'est pas faute d'avoir essayé). Le contenu de cette page ne se veut pas le plus complet qui soit, il y a tellement de facons différentes d'utiliser larswm que ça en serait impossible. Cependant, je vais essayer de décrire tous les aspects que j'en connais, depuis le téléchargement des sources, jusqu'à l'utilisation de programmes supplémentaires histoire d'y ajouter du potentiel (programmes en relation directe avec larswm bien sûr), en passant par la façon dont je l'utilise. Ceci donc est mis à disposition en guise d'inspiration. Si vous avez des questions particulieres sur ce tutorial, n'hésitez pas a me contacter.

Présentation

Larswm fait partie de ces gestionnaires de fenêtre que l'on nomme tiled windows managers. Cela signifie que les fenêtres s'organisent d'elle-même en mosaïque selon un schéma prédéfini dans le code source du gestionnaire et potentiellement customisable par l'utilisateur selon les possibilités du gestionnaire. Ceci dans l'unique but de vous permettre de vous concentrer sur votre travail ou sur votre activité, sans jamais vous soucier de la façon dont vous devrez ranger les fenêtres pour rendre votre travail efficace : non ça le gestionnaire s'en charge. Après tout, c'est son boulot non ?

Par un beau samedi de ce début du mois de juin de l'an 2000, Lars, de son petit nom, s'est mis en tête d'ajouter une fonction qui lui manquait à son gestionnaire du moment, 9wm : la gestion automatique des fenêtres. Et voilà le projet lancé sur un excès de feignantise de devoir toucher à sa souris pour déplacer les fenêtres. Le bougre ne s'arrêtera pas là et continuera de faire évoluer son gestionnaire de fenêtre jusqu'à la version stable 7.5.3 qui sortira un peu plus de quatre ans plus tard. Cela peut en surprendre plus d'un et on peut penser que le développement a été stoppé en cours de route, puisqu'aucun commit, ni aucune release n'a été officiellement mis à disposition des utilisateurs depuis lors par Lars. Mais que nenni mes chers amis, il est plus probable que Lars ayant considéré son gestionnaire totalement achevé, il n'ait pas ressenti le besoin d'ajouter d'autres fonctions ou de réécrire du code pour larswm. Bien sûr ceci n'est qu'une supposition, vous pouvez aussi tres bien considéré qu'il a décidé de passer sous KDE et qu'il s'amuse depuis peu comme un petit fou à foutre le feu à ses fenêtres à l'aide de compiz ; possibilité peu envisageable selon moi, mais qui peut cependant intégrer l'univers des possibles.

Larswm est un gestionnaire de fenêtre héritier de grands principes gravés dans le marbre il y a déjà des années par le gestionnaire 8 1/2 du Ô combien vénérable système Plan 9 ; 9wm étant en effet basé sur 8 1/2. Pas de froufrou inutile, une interface sobre et fixe ainsi que la possibilité d'utiliser une souris à trois boutons.

Larswm est donc fait par défaut pour que vous ne vous souciez pas des fenêtres. Dès qu'une fenêtre est créée, elle est arrangée par rapport aux autres comme une mosaïque. Malgré cela, il est tout à fait possible d'avoir une influence plus fine sur les fenêtres, de la même façon qu'avec un autre gestionnaire de fenêtre plus conventionnel. De surcroît, larswm est entièrement pilotable au clavier. Vous pouvez effectuer toutes les manipulations de fenêtre en mode mosaïque ou non qui peuvent vous passer par la tête depuis celui-ci : agrandissement, réduction, élargissement, maximisation, etc, etc. Cela dit, il permet aussi de faire ces opérations à la souris, mais cela n'est pas vraiment dans l'esprit et la souris devient très vite inutile. Pour cette raison, je n'aborderai pas du tout ici, la façon de piloter larswm à la souris. Nous allons nous concentrer uniquement sur le clavier.

Ceci dit, ne nous leurrons pas. Sans vouloir paraître élitiste, larswm ne conviendra pas à tout le monde. Simplement déjà parce qu'il est différent. Ensuite et surtout parce qu'il mérite un certain apprentissage. Vous qui venez de gestionnaire très conventionnel, vous trouvez votre interface graphique très intuitive, presque naturelle. Cependant ce n'est pas le cas. Vous avez dû apprendre à l'utiliser. Où cliquer pour agrandir, combien de fois faut-il cliquer, comment faire pour avoir tel ou tel comportement, où aller et quoi faire pour avoir tel comportement. Ce sont des gestes que vous répétez probablement plusieurs fois par jour, à tel point qu'après des semaines, des mois, voir des années, c'est devenu pour vous quelque chose de naturel. Prenez une personne qui n'a jamais touché à un ordinateur ou presque et demandez lui d'effectuer des opérations même simples avec les fenêtres. Vous remarquerez alors ses hésitations et le besoin de réflexion, voir même ses erreurs. Si vous comptez utiliser un tiled window manager et que vous ne l'avez jamais fait, attendez-vous à vous retrouver dans ces situations, à devoir prendre quelques secondes pour vous remémorer comment on fait pour minimiser une fenêtre. Mais ne désespérez pas, c'est un moment certes pénible, mais qui passe au bout de quelques minutes, voir heures pour certaines opérations que vous n'effectuerez pas souvent. Je vous promet cependant que vous tirerez une grande satisfaction de cette nouvelle façon de procéder et d'appréhender votre gestionnaire de fenêtre (non je rembourse rien du tout si c'est pas le cas pour vous :P). Après quelques temps, tout cela vous semblera le plus naturel du monde, et quand vous vous retrouverez à nouveau devant un gestionnaire de fenêtre fainéant, ou vous serez obliger de bouger vos mains du clavier ne serait-ce que pour déplacer cette fenêtre qui vous gène, vous regretterez votre bon vieux larswm.

Installation

Généralement vous trouverez larswm dans les dépôts officiels de votre distribution. Si cette méthode vous convient, referez-vous au manuel de votre distribution afin de procéder de la sorte (sous debian/ubuntu, le larswm est une version patchée qui par là donc obtient un peu plus de features, cf. la section plus bas). De plus le site officiel propose des binaires pré-compilées pour Enterprise Linux 4 (binaire | source) mais aussi pour Fedora Core 4 (binaire | source). Mais vous pouvez aussi compiler larswm, ce que nous allons faire de suite.

Question dépendance, il va vous falloir certaines librairies de developpement de X11 : libx11-dev, libxext-dev, libxmu-dev, x-dev (x11proto-core-dev) (ce sont les noms des librairies sous debian).

La configuration des sources de larswm se fait au travers de la commande xmkmf que vous trouverez dans le paquet imake ou xutils-dev selon les distributions.

Ceci fait, nous allons ensuite récupérer les sources de larswm-7.5.3. Après décompression rentrez dans le dossier des sources et lancez la configuration (pensez aussi à jeter un coup d'oeil au README, ce n'est jamais du temps perdu (il y a des infos pour Solaris notamment)) :

$ tar xvf larswm-7.5.3.tar.gz && cd larswm-7.5.3/
(...)
$ xmkmf -a
mv -f Makefile Makefile.bak
imake -DUseInstalled -I/usr/lib/X11/config
make Makefiles
make: Nothing to be done for `Makefiles'.
make includes
make: Nothing to be done for `includes'.
make depend
gccmakedep  -- -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE
-D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -DFUNCPROTO=15 -DNARROWPROTO
-- main.c event.c manage.c buttons.c client.c error.c tiling.c prefs.c
keys.c mouse.c bar.c larsremote.c larsclock.c larsmenu.c

Puis nous allons passer à l'installation proprement dite qui se fera dans /usr/local avec les droits de root :

# make install install.man

La compilation va suivre son cours et en l'absence de tout message d'erreur, vous pouvez vous satisfaire d'avoir correctement installer larswm. Dans d'autres cas, pensez à vérifier que vous avez les bonnes dépendances et que les liens vers les librairies sont bien présents et corrects.

Premier lancement et utilisation par défaut

NB: la partie utilisation par défaut de cette section est très largement inspirée de la page de manuel de larswm. Si vous lisez l'anglais, je ne peux que vous recommander d'aller lire cette page très bien écrite si vous ne voulez pas vous abîmez les yeux sur mon malheureux plagia que certains appelleront traduction libre pour me faire plaisir...

Si vous disposez d'un lanceur de session comme GDM ou KDM et que vous avez installé larswm depuis les dépôts, vous devriez le voir disponible dans le menu proposé. Si vous avez installé larswm depuis les sources ou d'une autre façon, vous devrez sûrement rajouter l'entrée du menu vous même. Je n'utilise pas ce genre d'application et ce n'est pas ici le but de mon propos, je vous laisse donc vous débrouillez, il y a multitudes de documentation sur le sujet par ailleurs. Ceci dit, ces gestionnaires de sessions ont généralement une option par défaut qui va utiliser le fichier ~/.xsessionrc. Ce fichier peut être rempli exactement de la même façon que le fichier dont nous allons parler plus bas. Je vous invite à passer par cette méthode du fichier xsessionrc, qui vous laisse une plus grande flexibilité en ce qui concerne le lancement de votre session larswm (et de vos autres sessions aussi d'ailleurs).

Pour ceux qui utilise directement startx, rajoutez simplement une ligne exec larswm dans votre fichier ~/.xinitrc. Nous reviendrons un peu plus tard sur ce dernier auquel on ajoutera quelques petites choses histoire de pimenter un peu notre larswm.

Un startx plus tard et vous y voilà : bienvenue dans larswm. Oui c'est encore un peu austère, je vous l'accorde, mais nous allons configurer tout cela ne vous en faîtes pas.

Cependant avant cela, il va falloir y mettre un peu de votre personne et appréhender les touches par défaut de larswm. Commençons par la base : ouvrez un terminal en tapant en même temps Shift-Control-Enter. Il va se positionner seul à la gauche de votre écran et occuper 60% de l'espace disponible. Entrez n'importe quel commande dans ce terminal histoire de vous repérer, par exemple echo "je suis ici". À présent, faites à nouveau un Shift-Control-Enter et observer comment se positionne le nouveau terminal. La fenêtre qui était à gauche se retrouve à droite et est plus petite, et le nouveau terminal a pris sa place à gauche. Encore un Shift-Control-Enter et vous voilà avec trois terminaux. Pour passer d'une fenêtre à l'autre, il vous suffira de faire de simple Shift-Control-Haut et Shift-Control-Bas. Jouez avec ces combinaisons pour voir le comportement qu'elles ont (notamment ce qui concerne la fenêtre précédente, c'est vraiment la fenêtre précédente à celle où vous vous trouviez).

L'espace de gauche est votre espace de travail principal. Il n'y aura jamais qu'une seule fenêtre dans cet espace. La droite sert aux espaces de travail secondaires et peut disposer d'autant de fenêtres que vous voulez. Ceci est le comportement par défaut, avec une disposition automatique des fenêtres en mosaïque (mode tiled), comme expliqué précédemment. Cependant, il est aussi possible d'avoir des fenêtres dans un mode plus conventionnel, où c'est vous qui gérez totalement les fenêtres, on parlera alors de mode untiled.

Pour travailler en mode untiled, nous allons utiliser le programme Xlogo. Lancer xlogo depuis n'importe quel terminal. Vous voyez alors ce dernier apparaître au milieu de votre écran. Vous pouvez passer de l'espace non mosaïque à l'espace mosaïque simplement en pressant la combinaison de touche Shift-Control-BackSpace. Remarquez en bas dans la barre de status le T qui vous indique que vous êtes en mode Tiled et le U pour vous indiquer que vous êtes en mode Untiled ([UCRSB-]). Remarquez aussi que quand vous mettez l'espace mosaïque au premier plan, Xlogo se retrouve derrière.

En mode non mosaïque, vous pouvez déplacer la fenêtre dans 9 régions prédéfinies. Mettez en avant plan l'espace non mosaïque histoire de pouvoir travailler sur Xlogo. Quand vous êtes certain que Xlogo est sélectionné, mettez xlogo sur le coté droit de l'écran en faisant simplement Shift-Control-KP_6 ou KP_6 est le 6 de votre clavier numérique. Amusez vous avec tous les chiffres histoire de voir ce que cela donne. Si vous êtes sur un portable, évidemment, ça va être difficile à faire, mais vous pourrez tout à fait changer les touches par défaut pour cette fonction dans le fichier de configuration.

Toujours dans le mode untiled, avec Xlogo de sélectionné et au premier plan, vous pouvez zoomer sur ce dernier grâce à Shift-Control-space. Et faites le une seconde fois pour le voir retrouver sa taille et son emplacement d'origine. Maintenant pressez Control-Alt-space pour mettre Xlogo de coté et voir ce qu'il se passe dessous. Deux solutions pour la faire revenir de sa cachette : soit vous cliquez sur la partie visible de Xlogo soit vous faîtes à nouveau la combinaison Control-Alt-space. Notez que cette seconde solution ne fonctionnera pas si vous avez une autre fenêtre dans le mode untiled. En effet, presser à nouveau ces touches cachera cette seconde fenêtre au lieu de ramener Xlogo. Nous verrons un peu plus tard comment avoir une utilisation plus fine de tout cela.

Enfin, une petite dernière pour les deux modes cette fois-ci : pressez Control-Alt-z pour cacher/minimiser la fenêtre qui a le focus (remarquez le H qui apparaît dans la barre de statut). Pour le revoir, pressez Control-Alt-x.

Voila, c'est un bon début, mais ce n'est qu'une petite partie des possibilités de larswm. Cependant vous devez déjà pouvoir vous en sortir un minimum avec la gestion des fenêtres. Mais attendez ce n'est pas terminé. Larswm, comme tout gestionnaire de fenêtre qui se respecte à plusieurs bureaus virtuels. Vous pouvez vous déplacez de l'un à l'autre en y allant à coup de Shift-Control-Gauche et Shift-Control-Droit (observer la barre de statut qui vous indique où vous êtes).

Le fichier de configuration

Larswm se configure au travers d'un fichier qui se trouve à la racine de votre $HOME. Nous allons générer ce fichier dans lequel vous finirez par passer un peu de temps à un moment ou à un autre. Le gestionnaire de fichier dispose d'un générateur, si l'on peut dire, de ce fichier avec les configurations par défaut.

$ larswm -defaults > ~/.larswmrc

Je ne vais pas beaucoup m'étendre sur chaque partie de ce fichier. Il est assez bien commenté, et vous devriez pouvoir vous en sortir seul. Si vous voulez un exemple, voici mon fichier larswmrc qui pourra vous servir d'exemple. Vous pourrez d'ailleurs en profiter pour voir quels options sont disponibles en ce qui concerne le déplacement des fenêtres et arranger les combinaisons de touches comme bon vous semblera.

Les instances de larswm c'est la classe

Larswm dispose de plusieurs classes afin de gérer les fenêtres. Nous en avons deja vu deux : Tiled et Untiled, qui gèrent les fenêtres globalement. Mais le gestionnaire de fenêtre dispose d'autres classes pour des besoins spécifiques.

Tout d'abord la floatclass. Si une fenêtre est tagguée par cette classe alors elle restera au-dessus des autres fenêtres (id est des fenêtres qui ne sont pas en floatclass). Ensuite le mode toolclass pratique si on utilise des widgets par exemple : la fenêtre restera dans son coin et ne sera pas prise en compte quand vous vous déplacerez de fenêtre en fenêtre (pour avoir le focus dessus, pas d'autres solutions que de cliquer). Enfin le mode stickclass qui stipule qu'une fenêtre sera présente sur tous les bureaux virtuels en même temps.

Vous pouvez voir la classe de vos fenêtres en bas dans la barre de statut. Par exemple, si vous avez une fenêtre qui a le focus et qui a les trois classes présentées ici dans le mode untiled, vous pourrez voir en bas [nfts-].

Il reste encore une classe qui est dtclass et qui permet de fixer une application sur un bureau virtuel en particuliers (mettre xlinks2 sur le bureau WEB à chaque fois qu'on le lance par exemple).

Les classes peuvent se configurer à la volée pendant l'utilisation de larswm, mais généralement, elles sont définies pour chaque application voulue au sein du fichier de configuration (par exemple larswm.toolclass., je vous laisse vous référer à votre propre fichier).

Cela me permet d'amener une autre particularité de larswm. Pour sélectionne une application dans son fichier de configuration, on peut simplement utiliser le nom de l'application, mais aussi son instance. Par exemple, pour Xload, l'instance sera XLoad~xload ; pour mplayer ca sera MPlayer~xv ; pour conky ca sera conky~conky ; etc. La maniéré la plus simple de connaître l'instance d'une application reste de la lancée dans larswm (mais pas trop fort) et de regarder dans la barre de statut, vous la verrez entre parenthèse.

Les applications de larswm

D'autres applications pour personnaliser larswm

Dans cette partie, je vais présenter quelques applications que j'ai utilisé ou que j'utilise avec larswm afin de lui donner un peu plus de fonctions. Et bien là, c'est vraiment selon votre bon vouloir évidemment. Mais je me dis que ça pourrait vous donner des exemples. Toutes ces applications sont assez bateau, et très connues dans leur grande majorité.

On peut bien sur commencer par citer conky qui vous permettra d'avoir divers informations sur votre système présentées en transparence (ou pas) sur votre bureau. Toujours dans le même esprit on peut aussi penser à GKrellM. Sachez aussi que les dockapp issues du monde WindowMaker s'intègre très bien dans larswm.

Je ne saurai aussi que très fortement vous conseiller de tester dzen qui a de grandes qualités.

Personnellement, je suis revenu un peu vers les sources en utilisant des widgets de base, comme xclock, xload ou encore xbiff.

En ce qui concerne le fond d'écran, vous pouvez utiliser des choses très simple comme xsetroot pour mettre une couleur unie ou dégradée, mais aussi qui sert à mettre en fond des images du type .xpm. Si vous préférez ou avez plus l'habitude d'image sous des formats plus diffusés (comme .jpg|.png), vous pouvez utiliser le très simple xsetbg fourni par le paquet xloadimage. J'utilise aussi unclutter afin de faire disparaître le curseur de la souris (lorsqu'il est inactif) qui m'agace plus qu'autre chose.

Afin de lancer tout cela facilement, vous pouvez rajouter ces applications au lancement de la session dans votre fichier ~/.xinitrc (ou xsessionrc si vous l'utilisez (vous pouvez aussi prendre exemple sur le fichier sample.xsession disponible dans les sources de larswm)) :

# I don't want the 'blank screen after 30 minutes' thing
xset -dpms
xset s 0 0
xset s off

# Hide my mouse
unclutter -root -idle 2 -jitter 10 &

# Background
#xsetroot -solid black
xsetbg ~/w/gotmilk.jpg

# Widgets
xbiff &
xload -label unisys -geometry 80x48+664+534 &
xload -label britney -remote britney -geometry 80x48+580+534 &
xclock &

# larswm app
larsbiff -string "[DEAD LIKE ME]" &
#larsclock -format "[DEAD LIKE ME] [%a %m/%d %I:%M%p %Y]" &

# Now we can launch larswm
exec larswm

Plus de customisation en patchant larswm

Malgré que Lars ai arrêté le développement (pour le moment) de larswm, certains avaient des idées et/ou ont trouvés des petits défauts qu'ils ont crus bon de nous faire partager au travers de patch. Si vous avez installé larswm sous debian/ubuntu depuis les dépôts, les patches ont déjà été appliqués, car en effet, les devels ont intégrés ces patches à leur paquet (vous pouvez donc d'ores et déjà utiliser les options qui suivent).

Pour les autres, et si cela vous intéresse, il va falloir y aller à la main. Au delà des corrections de bugs, ces patches rajoutent des fonctions intéressantes à larswm que je vais décrire plus bas.

Avant tout récupérez le tarball des patches ici. Attention, ces patches sont pour la version 7.5.3 de larswm. Décompressez la nouvelle archive, et mettez le dossier qui en résulte dans le dossier des sources de larswm, puis rentrez dans le dossier de patch et lancez le script livré avec :

$ tar xvf larswm-patches_7.5.3-5.tar.gz
(...)
$ mv larswm-patches_7.5.3-5 /path/to/larswm-7.5.3
$ cd /path/to/larswm-7.5.3/larswm-patches_7.5.3-5
$ ./patch.sh

Relancez la compilation et l'installation de larswm. Les patches ajoutent donc des modifications dont voici le résumé :

  1. Patch de Florian Forster (bugfixes) (00_larswm-7.5.3+patches.patch).
  2. L'option -update de larsclock (aa_larsclock-update.patch).
  3. Passer à une fenêtre selon la class/nom (ca_larswm-switchclass.patch).
  4. Deux fenêtres dans l'espace gauche (da_larswm-two_on_left.patch).
  5. Déplacer une fenêtre vers un autre bureau (ea_larswm-move_other_desktop.patch).
  6. Activer le skip focus depuis une combinaison de touches (fa_larswm-toggle_skip_fokus.patch).

Je ne reviens pas sur les deux premiers qui sont assez explicites.

De quoi n'ai-je pas parlé concernant larswm ?

Comme dit en introduction, je n'ai pas du tout parlé de l'utilisation de la souris sous larswm (sinon comment la cachée). Ceci implique notamment que je n'ai pas du tout parlé du menu dont dispose larswm et basé bien sûr sur le 9menu de 9wm. J'imagine que certains pourront y trouver une utilité, je vous renvoie donc pour cela vers la page de manuel de larswm.

Je n'ai pas non plus parlé de l'intégration de Xinerama pour larswm n'utilisant pas du tout cette fonction servant au multi-desktop. Je vous renvoie vers le lien en bas de cet article si vous voulez plus d'informations.

This is the end, beautiful friend...

Voilà donc pour cette présentation de mon utilisation de larswm. Comme vous avez pu le remarquer, on peut moduler larswm comme bon nous semble. Vous pouvez voir des exemples de résultat un peu partout sur le net. Voici notamment le mien à l'heure ou j'écris ces lignes ; j'aime beaucoup aussi la page de screenshot de Vico où l'on peut retrouver plusieurs de ses bureaux ; il y en a aussi ici (avec la page d'ormaxx).

N'attendez pas plus que ce qu'il peut vous proposer. Larswm est un gestionnaire de fenêtre, et c'est ce qu'il fait, ni plus ni moins. Et pour cela on peut dire que Lars a réussi son ambition : pouvoir se centrer sur son travail, et laisser larswm faire son boulot.

Remerciements

Quelques liens


Vous pouvez envoyer par mail vos commentaires et vos remarques à illovae[at]bk[dot]ru.

Contrat
Creative Comons
Howto larswm - The tiled window manager (4640 mots) de illovæ est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 (CC BY-NC-SA 3.0).

Vulnerant omnes, ultima necat. Sic transit hominis regnum.
Copyleft © 2009 — illovæ