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] <message to print in the statusbar>
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
# une depeche
Posté par NeoX . Évalué à 7.
mince, ca aurait pu faire une depeche, il n'est pas trop tard ;)
[^] # Re: une depeche
Posté par David Delassus (site web personnel) . Évalué à 5.
Peut-on proposer un journal en tant que dépèche ?
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: une depeche
Posté par Grunt . Évalué à 10.
Oui, mais dépêche-toi.
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: une depeche
Posté par David Delassus (site web personnel) . Évalué à 1.
Je l'ai envoyé, c'est en cours de validation je pense :) (mais pourquoi se presser ?)
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: une depeche
Posté par VictorAche . Évalué à 6.
Pour faire de l'esprit.
"The trouble with quotes on the internet is that it’s difficult to discern whether or not they are genuine.” Abraham Lincoln
[^] # Re: une depeche
Posté par David Delassus (site web personnel) . Évalué à -7.
Peut-on proposer un journal en tant que dépèche ?
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
# XLib, barre des tâches
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
Dommage.
Il est pourtant bien pratique de pouvoir réduire des fenêtres.
[^] # Re: XLib, barre des tâches
Posté par nicolas . Évalué à 5.
Malgré ton pertinentage, je prends le risque de te signaler que ton commentaire est complètement à côté de la plaque… comment te dire… c’est comme si tu demandais pourquoi une flûte n’a pas de cordes, ou un clou pas de pas de vis.
Dans un twm, c’est juste inutile. Étant donné qu’aucune fenêtre n’en cache une autre il n’y a pas besoin de réduire une fenêtre. Il suffit d’utiliser plusieurs bureaux virtuels, onglet ou pile (tout dépend des fonctionnalités du twm choisi).
[^] # Re: XLib, barre des tâches
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
Dans ce cas, il va falloir m'expliquer pourquoi je trouve pratique, sous Awesome, de réduire des fenêtres. Exemple typique : j'ouvre un terminal, j'autojumpe dans mon répertoire d'images, je lance Gimp. Et je réduis le terminal en question.
Bureaux virtuels : non, on y perd la position de le fenêtre. Onglet ou pile : oui, c'est une solution élégante, mais pas tout à fait équivalente.
[^] # Re: XLib, barre des tâches
Posté par nicolas . Évalué à 3.
J’avais pas pensé au fait qu’on perde la position avec les bureaux virtuels. Par contre onglet ou pile me semblent plus adaptés, je pensais naïvement que les gestionnaires implémentaient au moins un (ce qui revient, au final, à avoir une barre de tâche à chaque espace de ton écran que tu as décidé de mettre en pile/onglet). Comme pour moi cette solution me semble bien plus utile, ça vire de facto la nécessité de réduire les fenêtres.
« je lance Gimp. Et je réduis le terminal en question. » Est-ce que ça signifie que Awesome garde le focus et l’affichage sur le terminal ? J’avoue que ça me plairait, à l’heure actuelle c’est ce qui me gêne le plus dans i3 : le focus et l’affichage change de main et il m’affiche automatiquement la dernière fenêtre ouverte. En l’occurence avec le mode « onglet » de i3, ça m’ouvre direct Gimp et le terminal se retrouve en onglet non visible : dans le cas que tu présentes ça fait direct ce que tu veux, mais perso. je trouve ça gonflant car un logiciel comme Gimp met quelques secondes à s’ouvrir, suffisantes pour être passé à autre chose, et donc pester quand il s’affiche enfin et prend la main sur ce que je suis en train de faire.
[^] # Re: XLib, barre des tâches
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
Non, ce serait chouette en effet, mais non.
[^] # Re: XLib, barre des tâches
Posté par Mr. Magne . Évalué à 3.
Pas par défaut mais ça se configure
[^] # Re: XLib, barre des tâches
Posté par Juke (site web personnel) . Évalué à 2.
et comment tu fais pour reduire une fenetre dans awesome ?
[^] # Re: XLib, barre des tâches
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[⊞ + n] ou cliquer sur le titre de la fenêtre dans la barre des tâches. Mais ce sont peut-être des raccourcis que j'ai défini moi-même.
[^] # Re: XLib, barre des tâches
Posté par Juke (site web personnel) . Évalué à 2.
chez moi ça passe au tag suivant.
[^] # Re: XLib, barre des tâches
Posté par Troy McClure (site web personnel) . Évalué à 10.
Je ne vois pas trop l'interet d'investir du temps dans une techno next-gen qui est déjà obsoletifiée par wayland. Au moins des WM en xlib on sait en faire, on trouve facilement des exemples et ils marchent très bien.
[^] # Re: XLib, barre des tâches
Posté par reno . Évalué à 10.
XCB est disponible maintenant, Wayland est très, très loin d'être prêt..
Et ça c'est très important: qui se souvient de Berlin/Fresco, Y et les autres?
Wayland n'est pas (et de loin!) la première tentative pour remplacer X..
La deuxième partie de l'explication me paraît plus raisonnable, je note quand même
que cela contredit grandement le nom du WM 'from scratch': je propose donc de le renommer en 'Yet another copycat WM'.
# Dispositions
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
Et si le nombre de fenêtres n'est pas un carré parfait ?
Puisqu'on parle de Gimp, lorsqu'on a plus d'une image d'ouverte, à part celle active, les autres s'entassent en petit sur un des côtés ? Qu'est-ce qui détermine si les fenêtres sont à gauche ou à droite ?
D'une façon générale, il serait bon de décrire les algorithmes des dispositions de façon complète, pour qu'on puisse comprendre exactement ce qu'ils font.
[^] # Re: Dispositions
Posté par David Delassus (site web personnel) . Évalué à 2.
Si c'est pas un carré parfait alors il y a des colones du layout qui contiendront moins de fenêtres que les autres.
Si tu as plusieurs images ouvertes alors il te faudra jouer avec nmaster (avoir plusieurs fenêtres principales). Après c'est à toi de placer tes fenêtres au bon endroit si elle ne sont pas mise selon tes désirs.
Personnellement je n'utilise pas ce layout :P
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Dispositions
Posté par erdnaxeli (site web personnel) . Évalué à 1.
Les layouts et le placement automatiques des fenêtres c'est cool mais … en fait non. Là par exemple j'ai 8 fenêtres (vim, htop, l'interpréteur ocaml plus quelques consoles pour lancer un programme qui ouvre lui-même sa propre fenêtre) et seulement 3 d'affichées à l'écran.
J'adore le tilling, mais par contre je veux pouvoir placer moi-même mes fenêtres et seulement celle que je veux. Malheureusement le nombre de tilling manager avec un mode manuel ne dépasse pas 4 (i3, ratpoison, musca, et scrotwm il me semble).
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: Dispositions
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
Qu'appelles-tu un mode manuel ?
[^] # Re: Dispositions
Posté par erdnaxeli (site web personnel) . Évalué à 1.
Pouvoir découper moi même mon écran verticalement et horizontalement, que ça ne se fasse pas tout seul dès que j'ouvre une nouvelle fenêtre.
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: Dispositions
Posté par David Delassus (site web personnel) . Évalué à 2.
Tu parles du futur layout inspiré du split/vsplit de Vim dont j'ai parlé dans la news la en fait :)
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Dispositions
Posté par erdnaxeli (site web personnel) . Évalué à 1.
Autant pour moi, je n'avais pas lu assez attentivement le journal. WMFS devient tout de suite beaucoup plus intéressant du coup.
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: Dispositions
Posté par oao . Évalué à 1.
Tu peux ajouter compiz, qui avec l'extension grille permet de placer tes fenêtres sur un rectangle (au choix) 22 ou 32, et d'ajouter les raccourcis claviers qui vont bien. Surement pas aussi puissant que les autres mais très appréciable.
[^] # Re: Dispositions
Posté par Krunch (site web personnel) . Évalué à 2.
Il y a aussi Ion (et Notion j'imagine) dans cette catégorie.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: Dispositions
Posté par erdnaxeli (site web personnel) . Évalué à 1.
j'ai vaguement regardé notion, ça ne m'a pas parue super intuitif (j'ai essayé le tutoriel).
Sinon dans mon premier message il fallait bien sûr lire stumpwm et non scrotwm.
Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.
[^] # Re: Dispositions
Posté par riaen;yun . Évalué à 2.
Il y a aussi dwm, wmii, i3 (celui que j'utilise).
me semblait que ce type de window manager s'appelait dynamic window manager mais ici par exemple : https://wiki.archlinux.org/index.php/Comparison_of_Tiling_Window_Managers il est plus question de tiling window manager
[^] # Re: Dispositions
Posté par riaen;yun . Évalué à 1.
rah.. je voulais dire de Manual tiling window manager..
enfin bon
# Captures d'écran
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
C'est là un logiciel typiquement graphique, il serait bon d'avoir quelques captures d'écran. Pas la peine de faire des captures d'un vrai écran de haute résolution, mieux vaut utiliser un (Xephyr)[http://en.wikipedia.org/wiki/Xephyr] :
[^] # Re: Captures d'écran
Posté par David Delassus (site web personnel) . Évalué à 2.
Les captures d'écrans sont disponibles sur le site de WMFS, http://wmfs.info/projects/wmfs/wiki/Example_of_wmfsrc
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
[^] # Re: Captures d'écran
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 5.
Eh bien il faut le savoir. Elles devraient être sélectionnées et mises en avant.
[^] # Re: Captures d'écran
Posté par Snoorky . Évalué à -1.
DO NOT WANT.
# Pile
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Pas de gestion de pile à la Wmii ?
[^] # Re: Pile
Posté par jiyuu . Évalué à 1.
Et aussi, j'arrive pas à déterminer si il gère les "keychain" (les combinaisons de touches à la emacs. Du genre C-x C-c M-x butterfly). J'ai du mal à lâcher ratpoison à cause de ça.
Ça et, mais là j'avoue j'ai pas cherché, les font Xft ?
[^] # Re: Pile
Posté par David Delassus (site web personnel) . Évalué à 1.
Les fonts Xft sont gérées. Pour les keychains non ce n'est pas géré, tu peux juste associer une touche à un ou plusieurs modifiers (genre Ctrl + Alt + Q = client_kill).
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
# 7886 SLOC
Posté par gouttegd . Évalué à 4.
Le nombre de lignes de code est-il une métrique à laquelle les développeurs de WMFS attachent de l’importance, à la manière des développeurs de suckless.org (wmii) qui mettent un point d’honneur à ne pas dépasser 10 000 lignes ? Il ne semble pas en être fait mention sur le site.
Je me méfie un peu de ceux qui cherchent à tout prix à réduire la taille de leur code. Small is beautiful, certes, mais à condition que ne ce soit pas au détriment de la lisibilité du code, sinon on gagne quoi ?
[^] # Re: 7886 SLOC
Posté par David Delassus (site web personnel) . Évalué à 3.
Non, on se fou totalement du nombre de ligne de code. Mais même sans y attacher d'importance, on voit que WMFS reste petit au niveau des sources (donc facilement abordable pour les développeurs!) et ne perd pas en lisibilité/fonctionnalités. :)
https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg
# Capture d'écran
Posté par weonbin . Évalué à 3.
Capture d'écran ou c'est du vent
# Pourquoi ?
Posté par Me Nut (site web personnel) . Évalué à 2.
C'est pas un troll mais une vraie question.
En lisant le journal j'ai plus ou moins l'impression de lire une description d'awesome version 2.x
[^] # Re: Pourquoi ?
Posté par Guillaume Denry (site web personnel) . Évalué à 2.
Le lua en moins :/
[^] # Re: Pourquoi ?
Posté par 태 (site web personnel) . Évalué à 3.
Il n'y avait pas de lua dans awesome 2, si ?
[^] # Re: Pourquoi ?
Posté par Bapt (site web personnel) . Évalué à 3.
Parce que awesome consomme beaucoup (pour ce type d'environnement) parce que la conf de awesome pète(ait?) tout le temps, chaque release fallait tout revoir.
Parce que c'est fun?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.