URL: https://linuxfr.org/users/linkdd/journaux/wmfs-window-manager-from-scratch Title: WMFS, Window Manager From Scratch Authors: David Delassus Date: 2011年04月11日T17:35:33+02:00 License: CC By-SA Tags: wmfs, tiling, x11, franglais et gestionnaire_de_fenêtres Score: 16 WMFS, Window Manager From Scratch =========== WMFS est un gestionnaire de fenêtre dit **tiling**. Développé par *xorg62* (et quelques utilisateurs du logiciel) en C à l'aide de la ***XLib***, WMFS se distingue des autres *tiling window manager* sur de nombreux points. I. Les layouts ----------- La est le point fort de tout *tiling WM*, les layouts sont les différents modes d'organisations des fenêtres sur votre environnement de travail. En plus des classiques *free*, *max* et *tile* (right, left, bottom, top), on peut utiliser les layouts suivant : * *Grid* : Un simple tableau de NxN fenêtres. * *Mirror Vertical* : Layout développé pour une utilisation plus aisée de **gimp**, la fenêtre principale est au centre de l'écran et les fenêtres secondaires sont placées à gauche et à droite. * *Mirror Horizontal* : De même que le layout *Mirror Vertical* sauf que les fenêtres secondaires sont placées au dessus et en dessous de la fenêtre principale. ***Remarque:** Un nouveau layout est en cours de développement et sera inspiré du traditionnel **{v}split** de Vim.* Vous connaissez sans doute le layout *magnifier* dans awesome, qui permet de placer une fenêtre spécifique au dessus des autres qui sont organisées en tile. WMFS s'inspire de se layout en implémentant le **above_fc**, une option qui permet de placer le client au dessus des autres et cela dans tout layouts. II. Les tags ----------- Comme beaucoup de WM, WMFS gère les **tags** (bureaux virtuels), ainsi que le ***dynamic tagging*** (ajout/suppression de tags à la volée). Il vous est possible de fusionner plusieurs tags, de définir un layout spécifique aux nouveaux tags, d'échanger deux tags, etc... III. Selbar / Statusbar / Launcher & Systray ----------- Dans un WM classique (non tiling) il est utile d'avoir une barre de tâches pour avoir une liste des applications ouvertes. Sous WMFS, on pense que le tiling nous permet d'outre-passer ce besoin (on voit tout ce qui est à l'écran, donc pas besoin). Il a cependant été développé une optiojn bien pratique : la **selbar** * Elle permet d'afficher dans l'*infobar* de WMFS le titre de la fenêtre ayant le focus. * On définit dans la configuration les événements souris suivants : * L'affichage d'un menu contextuel contenant la liste des clients ouverts (un clic sur l'un d'eux permet de lui donner le focus) * De donner le focus au client suivant (dans la liste des clients) ou précédent. Vous connaissez peut-être *awesome* et son immense souplesse vis-à-vis des informations affichées dans les *infobars*. WMFS implémente à peu près la même chose : $ wmfs -s [screen number] Example : $ wmfs -s "hello world" $ wmfs -s 0 "hello" ; wmfs -s 1 "world" Créez votre programme/script afin d'afficher le résultat des commandes voulues (trafic réseau, usage disque, lecture mpd, etc...) dans l'*infobar*. Bien sur, cela n'est pas limité à du texte tel quel. A l'aide de différent format on peut intégrer des images, des couleurs, des progressbar, des graphs, etc... ***Remarque:** Je développe actuellement une bibliothèque C qui permet d'envoyer le nouveau status à WMFS sans passer par `wmfs -s`.* En dernier point, WMFS possède également (comme la plupart des autres WM) un launcher (prompt dans l'*infobar* permettant d’exécuter diverses commandes) et un systray. IV. Une configuration aisée ----------- La configuration se fait via le ficher **`~/.config/wmfs/wmfsrc`** mais peut-être découpé en de nombreux fichiers (un par section par exemple) grâce à la fonction `@include "/path/to/file/to/include"`. La syntaxe est extrêmement simple, le parseur a été développé par **ksh** basé sur la syntaxe de libconfuse mais simplifié : # Comments start with a '#' @include "other_file.rc" [section] option = "valeur" option2 = 18.2 [sous_section] option = true option2 = false [/sous_section] [/section] Les espaces ne sont pas important comme vous pouvez le constater. Un fichier de configuration par défaut est fourni dans le dépôt git (ou installé par votre gestionnaire de paquet, ou via `make install`, dans **`/etc/xdg/wmfs/wmfsrc`**). La configuration permet de configurer les layouts voulus, le nombre de tags voulus et leurs propriétés, les raccourcis clavier et tout ce qui est couleurs, etc... Si le fichier **`~/.config/wmfs/status.sh`** est présent ET exécutable, alors il sera exécuté par WMFS pour remplir la *statusbar*. V. Conclusion ----------- WMFS c'est en premier lieu très léger : * **7886 SLOC** * Un exécutable de **203K** Et en second lieu simple à installer : $ git clone git://github.com/xorg62/wmfs.git $ cd wmfs $ ./configure $ make # make install Je vous invite à regarder `./configure --help` pour plus d'infos :) WMFS c'est convivial, vous pouvez venir sur le salon IRC (**#wmfs** @ **irc.freenode.net**) là ou de nombreux utilisateurs vous aiderons à commencer avec WMFS ! C'est un projet actif en continuel développement , selon moi l'essayer c'est l'adopter :) Voici quelques liens : * Le site de WMFS : http://wmfs.info * Github : http://github.com/xorg62/wmfs * Un tutoriel WMFS : * WMFS, acte I : Installation http://msud.pl/pt * WMFS, acte II : Lancement d’applications à l’ouverture d’une session http://msud.pl/zw * WMFS, acte III : Les raccourcis claviers http://msud.pl/q4gE * Sur le wiki *Archlinux* : https://wiki.archlinux.org/index.php/WMFS

AltStyle によって変換されたページ (->オリジナル) /