WMFS²

De ArchwikiFR


Tiré du site officiel du projet:

WMFS² (Window Manager From Scratch 2), successeur de WMFS, est un gestionnaire de fenêtres tiling, léger et grandement configurable pour X écrit en C. Il s'agit d'un logiciel libre distribué sous la licence BSD. Il peut être piloté à l'aide du clavier et de la souris, et possède un unique fichier de configuration facilement compréhensible.

Différences entre WMFS et WMFS2

Suite à cette mise à jour, certaines différences ont été constatées sur cette dernière version:

  • Les fenêtres ne sont plus disposées suivant un carrelage prédéfini fixe, mais peuvent être redimensionnées et replacées à l'aide du clavier et de la souris.
  • La syntaxe de ~/.config/wmfs/wmfsrc (le fichier de configuration par défaut) a légèrement changé; ceux qui souhaitent fusionner des fichiers de configuration doivent faire attention.
  • Il n'y a plus de menu d'application
  • Xft n'est plus supporté
  • D'un point de vue esthétique, WMFS² est plus minimaliste.

Et bien entendu, de nouvelles fonctionnalités:

  • Les Statusbars peuvent être plus configurables, avec la possibilité d'en mettre plusieurs simultanénement
  • Les Tags peuvent être détruits et créés à la volée
  • On peut insérer du texte personnalisé et des lanceurs à base d'icônes, et on peut créer un dock cliquable
  • Des images peuvent être placées à la place d'un nom de Tag

Installation

WMFS² peut être installé à partir du paquet wmfs2-git dans les dépots AUR.

Usage basique

WMFS² diffère tout d'abord du premier WMFS dans la façon dont les fenêtres sont gérées. Alors que dans WMFS les fenêtres étaient disposées suivant un agencement prédéfini, -comme les gestionnaires de fenêtre Awesome ou DWM - WMFS² permet de lancer des programmes dans des Tags définis à l'aide du fichier de configuration, comme c'est par exemple le cas avec wmii et i3.

Si l'on ouvre, par exemple, plusieurs instances d'un terminal (par défaut, Super + Entrée), ils seront disposés à la manière d'une «spirale» sur l'écran, avec chacun ouverture sur le côté gauche en tailles de plus en plus petites. Ceux-ci peuvent alors être mis en rotation, en changeant l'orientation de la fenêtre principale (celle qui occupe l'écran en majorité) et des fenêtres esclaves (celles qui se rétrécissent quand vous ouvrez plus de fenêtres). Aussi, les fenêtres peuvent être classées par onglets, en maximisant toutes les fenêtres et en plaçant les onglets indépendants dans une seule barre de titre en haut de la fenêtre. Cela permet de maintenir la fenêtre ciblée maximisée en plaçant les autres "derrière", et permettant à l'utilisateur de faire défiler les fenêtres, évitant ainsi la nécessité de cliquer sur une barre des tâches ou le dock afin de minimiser / maximiser différentes fenêtres à plusieurs reprises.

Les fenêtres individuelles peuvent être réorganisées à l'aide de raccourcis clavier, ou bien avec la souris: une fenêtre peut être déplacée par sa barre de titre à la manière du drag and drop, ou peut être déplacée depuis n'importe quel point dans le client tout en maintenant une touche mod enfoncée comme Alt ou Super (la touche "Windows").

Les fenêtres peuvent également suivre le mode "free" ou "floating" et être disposées et déplacées comme dans un gestionnaire de fenêtre classique. Les liasons souris/clavier sont spécifiées dans la section [keys] du wmfsrc, et les combinaisons de touches et fonctions sont expliquées sur le wiki de WMFS².

Configuration

Copiez le fichier de configuration par défaut dans votre dossier personnel:

cp /etc/xdg/wmfs/wmfsrc ~/.config/wmfs/wmfsrc

Par défaut, toutes les configurations sont écrites dans un seul fichier. Vous pouvez séparer ce fichier en écrivant dans le wmfsrc:

@include ~/.config/wmfs/wmsrc_themes

Ceci inclura le contenu du fichier wmfsrc_theme au wmfsrc au chargement de WMFS².

Thèmes

La section [themes] du wmfsrc règle la couleur et l'épaisseur des Statusbars, Tags, bordures de fenêtres et des barres de titre. Les couleurs sont définies à l'aide du code hexadécimal de cette-première c.à.d. que "#FFFFFF" énonce par exemple du blanc, tandis que "#000000" correspond au noir. Comme il est mentionné plus haut, de nombreux thèmes peuvent être écrits dans des fichiers textes différents, et appliqués pour chaque élément de façon individuelle en ajoutant une section "theme" pour la partie appropriée.

Clients

La section [client] du wmfsrc règle le comportement et l'apparence des clients, tandis que [rules] gère la façon dont les clients sont manipulés par le gestionnaire de fenêtre.

Fichier: ~/.config/wmfs/wmfs_clients
[client]

  theme = "default"
  key_modifier = "Super"

  [mouse] button = "1" func = "client_focus_click"    [/mouse]
  [mouse] button = "1" func = "mouse_swap"            [/mouse]
  [mouse] button = "2" func = "mouse_tab"             [/mouse]
  [mouse] button = "3" func = "mouse_resize"          [/mouse]
  [mouse] button = "4" func = "client_focus_next_tab" [/mouse]
  [mouse] button = "5" func = "client_focus_prev_tab" [/mouse]

[/client]

[rules]

  [rule]
      instance = "chromium"
      # class = ""
      # role   = ""
      # name   = ""
      # theme  = "default"

      tag    = 1  # 2nd tag
      screen = 0

      free       = false
      tab        = false
  [/rule]

[/rules]

Par défaut, tous les clients sont ouverts dans le Tag actif, et peuvent être manipulés avec des combinaisons de touches ou avec la souris. En spécifiant une règle par application, l'utilisateur peut choisir quelle application s'ouvre dans quel Tag, si elle doit être en mode flottant, si elle doit être rangée dans un onglet, ...


  • theme: Les couleurs choisies pour la barre de titre et la bordure d'une fenêtre, sont spécifiées dans [theme] (Note: si name n'est pas défini dans [theme] alors il prend par défaut name = "default")
  • key_modifier: Les touches modificatrices (Alt, Shift, Super, Ctrl) sont utilisées dans l'ordre pour glisser-déposer un client.
  • tag: Dans quel Tag le client doit-il être ouvert. Les numéros de tag commencent à zéro (0),et correspondent dans l'ordre des Tags de gauche à droite.
  • screen: Si plusieurs moniteurs sont utilisés, il définit sur quel écran le client doit être affiché, l'écran principal étant défini comme zéro (0).
  • free: Si le client est ouvert en mode "float" ou non.
  • tab: Si le client doit être mis en onglet avec un client déjà existant.
  • ignore_tag: Spécifie au client d'ignorer les autres onglets (le client apparaît sur tous les onglets).
  • autofocus: Donne le focus aux nouveau client. Désactivé par défaut.

Les premières options qui composent essentiellement tous les noms potentiels qu'un programme/processus doit posséder, sont précisées dans la sortie de xprop.Tant que l'entrée de l'instance affiche correctement la partie "WM_CLASS" de la sortie de xprop, il devrait y avoir aucun besoin de s'inquiéter à propos de la classe, le rôle ou sections de noms, et ils peuvent être laissés en commentaire.

Statusbar

La Statusbar est un panel qui affiche des informations sur les Tags et les clients. Les données du système peuvent également être appelées par des scripts externes, puis passés à wmfs par l'intermédiaire de la commande wmfs-c, qui affiche les informations dans la Statusbar spécifiée. Ceux qui souhaitent utiliser plusieurs Statusbar dans WMFS2 auront besoin de spécifier des noms distincts dans wmfsrc pour imprimer des données différentes dans chaque bar. Quelque chose d'aussi simple que «haut» et «bas» suffira.

Fichier: ~/.config/wmfs/wmfs_statusbar
# Position:
  #
  # 0  Top
  # 1  Bottom
  # 2  Hide

  # Element type:
  #
  # t  Tags
  # s  Statustext (will take available space)
  # y  Systray (can be set only ONE time among all element)
  # l  Launcher (will be expended at launcher use)

  [bar]
     name = "top"
     position = 0
     screen = 0
     elements = "tsy"   # element order in bar
     theme = "default"
  [/bar]
  
  [bar]
     name = "bottom"
     position = 1
     screen = 0
     elements = "s"   # element order in bar
     theme = "default"
  [/bar]

Si vous n'utilisez qu'un panel, donner un attribut à "name" est optionnel.

Elements

  • Tags: Affiche les Tags (équivalents de bureau virtuel) et quels sont ceux visibles et dans lesquels des clients sont ouverts.
  • Statustext: Affiche des informations concernant le système, comme la date et l'heure, et est alimenté à partir de sources externes comme les scripts bash ou Conky.
  • Systray: Affiche les programmes ouverts ou tournant en fond.
  • Launcher: Ressemble au lanceur dmenu. Fonctionne uniquement en mode textuel.

Les options pour chaque élément utilisent à peu près la même syntaxe, que vous pouvez trouver sur le de WMFS²

Tags

Comme la plupart des gestionnaires de fenêtre, WMFS² utilise les Tags pour aménager les bureaux. Les Tags ressemblent aux bureaux virtuels ou aux espaces de travail, mais avec quelques différences. Par exemple, plusieurs Tags peuvent être affichés sur un écran, et les clients peuvent être assignés à plus d'un Tag. Ils se situent sur le coté gauche de la Statusbar, et peuvent être désignés par des chiffres (comme c'est le cas par défaut), ou par des noms via le wmfsrc.

Fichier: ~/.config/wmfs/wmfs_tags
[tags]

  # Use no screen option or screen = -1 to set tag on each screen
  [tag]
      screen = -1
      name = "1"
      # statusline ""
  [/tag]

  [tag] name = "2" [/tag]
  [tag] name = "3" [/tag]
  [tag] name = "4" [/tag]
  [tag] name = "5" [/tag]
  [tag] name = "6" [/tag]
  [tag] name = "7" [/tag]

  # Mousebinds associated to Tags element button
  [mouse] button = "1" func = "tag_click" [/mouse]
  [mouse] button = "4" func = "tag_next"  [/mouse]
  [mouse] button = "5" func = "tag_prev"  [/mouse]

[/tags]

Des icônes peuvent également être mises à la place du nom, il suffit de faire comme ceci:

[tag] screen = 0 name = "   " statusline = "^i[x;y;ww;hh;path/to/image/file]" [/tag]

"x" et "y" représentant les positions horizontale et verticale ; "ww" et "hh" la largeur (width) et la hauteur (height).

Launchers

À la différence de son prédécesseur, WMFS² n'a pas de menu d'applications. Par contre, il possède un lanceur textuel qui supporte l'autocomplétion se lançant avec SUPER+P

Statustext

Il s'agit de la section de la barre d'état dédiée à l'affichage des données de différents systèmes, telles que l'espace disponible du disque dur, la fréquence du CPU, ou des informations sur la chanson en cours de lecture dans MPD. Le texte est introduit dans la barre via la commande wmfs-c. L'information peut être affichée sous forme de texte ou de couleur, de boîtes colorées, de barres de chargement, de graphiques, d'icônes et d'info-bulles. Ceci peut être accompli en utilisant soit des scripts bash individuellement écrits pour répondre aux besoins de l'utilisateur, ou à l'aide de Conky.