Pekwm le guide

Ce guide a pour but de vous accompagner durant l’installation du gestionnaire de fenêtres Pekwm, de sa configuration et de son utilisation. De la même manière que mon guide sur Openbox, je vais rester le plus général possible pour que les manipulations fonctionnent sur toutes les distributions GNU/Linux et *BSD.

Note: Je me base sur la distribution Archlinux pour l’installation des paquets (pacman), vous devez donc adapter ces commandes à vos gestionnaires de paquets (aptitude, yum…)

Introduction

The Pek Window Manager est écrit par Claes Nästen. Le code est basé sur le gestionnaire de fenêtre aewm++, mais le code a vraiment évolué, si bien qu’aujourd’hui il ne ressemble plus du tout à aewm++. Il possède beaucoup de fonctionnalités, dont le regroupement de fenêtres, des propriétés automatiques, xinerama et des raccourcis claviers qui supportent les enchaînements de touches, et beaucoup plus.

Sources

Installation

Pekwm est disponible dans le dépôt d’Archlinux

sudo pacman -S pekwm

Il faut maintenant mettre en place le démarrage de Pekwm

Méthode 1: GDM/KDM

Généralement une session pekwm sera ajoutée automatiquement. Selectionnez pekwm dans le menu. Si jamais la session n’apparaît pas dans le menu, pas de soucis on va la créer :

Dans un fichier /usr/share/xsessions/Pekwm.desktop on ajoute ceci :

[Desktop Entry]
Encoding=UTF-8
Name=PekWM
Comment=Start PekWM
Exec=/usr/bin/pekwm
Icon=
Type=Application

Méthode 2: xinitrc

Dans votre ~/.xinitrc, on démarre pekwm de cette façon :

exec pekwm

Configuration

La première chose à faire avant de lancer Pekwm est de créer nos fichiers de configurations dans notre home. Nous allons prendre les fichiers par défaut qui nous servirons de base dans notre installation.

mkdir ~/.pekwm
cp /etc/pekwm/* ~/.pekwm/

Les fichiers de configurations sont les suivants :

  • ~/.pekwm/config: Concerne la configuration propre de pekwm (thème, comportement des fenêtres)
  • ~/.pekwm/mouse: Concerne les réglages de la souris
  • ~/.pekwm/keys: Concerne les raccourcis claviers
  • ~/.pekwm/menu: Pour configurer le menu du bureau, de la fenêtre
  • ~/.pekwm/vars: Stockage de variables
  • ~/.pekwm/start: Le fichier qui permet de lancer des programmes au démarrage de pekwm
  • ~/.pekwm/autoproperties: Le fichier le plus intéressant de pekwm :)

Le fichier config

Ce fichier comme expliqué plus tôt permet de configurer le comportement des fenêtres, le nom des bureaux par exemple et diverses options. La configuration se fait en plusieurs sous-sections:

  • Files { }: les fichiers à utiliser
  • MoveResize { }: la section permettant de configurer le comportement des fenêtres lors d’un déplacement/redimensionnement.
  • Menu { }: section permettant de définir l’utilisation du menu (pas son contenu).
  • CmdDialog { }: cette section permet de configurer le lanceur d’applications.
  • Harbour { }: la section pour configurer harbour.
Files {
    Keys = "~/.pekwm/keys"
    Mouse = "~/.pekwm/mouse"
    Menu = "~/.pekwm/menu"
    Start = "~/.pekwm/start"
    AutoProps = "~/.pekwm/autoproperties"
    Theme = "~/.pekwm/themes/Miro"
}

Je ne vous conseille pas de changer les 5 premiers sauf si vous savez ce que vous faites. Au niveau du champ Theme vous devez indiquer le répertoire du thème à utiliser.

MoveResize {
    EdgeAttract = "10"
    EdgeResist = "10"
    WindowAttract = "5"
    WindowResist = "5"
    OpaqueMove = "true"
    OpaqueResize = "false"
}

EdgeAttract: cette valeur est la distance (en pixel) à partir de laquelle la fenêtre “colle” aux bords.
WindowAttract: même chose par rapport aux fenêtres.
OpaqueMove: doit-on dessiner la fenêtre pendant le déplacement.
OpaqueResize: doit-on dessiner la fenêtre pendant le redimensionnement.

Screen {
    Workspaces = "6"
    WorkspacesPerRow = "2"
    WorkspaceNames = "Main;Chat;Music;Web;Games;Code"
    ShowFrameList = "true"
    ShowStatusWindowCenteredOnRoot = "true"
    ShowWorkspaceIndicator = "500"
    ShowClientID = "false"
    FocusNew = "true"
    FocusNewChild = "true"
    PlaceNew = "true"
    FullscreenAbove = "true"
    FullscreenDetect = "true"
    EdgeSize = "18 0 0 0"
    EdgeIndent = "true"
    DoubleClicktime = "200"
    Placement {
    Model = "CenteredOnParent Smart MouseNotUnder"
    Smart {
        Row = "false"
        TopToBottom = "true"
        LeftToRight = "true"
        OffsetX = "100"
        OffsetY = "100"
        }
    }
 
}

Workspace: le nombre de bureaux.
WorkspacesPerRow: le nombre de bureaux par colonne (0 pour mettre en ligne).
ShowFrameList: doit-on afficher la liste des fenêtres lorsque l’on navigue parmi elles.
WorkspaceNames: noms des bureaux séparés par ;.
ShowStatusWindowsCenteredOnRoot: si oui les informations de la fenêtre seront au centre du bureau sinon au centre de la fenêtre.
FocusNew: doit-on mettre automatiquement en avant une nouvelle fenêtre.
EdgeSize: l’espacement par rapport aux bords (dans l’ordre haut bas gauche droite).
EdgeIndent: si oui les fenêtres n’iront pas d’elles même dans l’espacement inscrit dans EdgeSize.
DoubleClickTime: la vitesse de double click en ms.
Placement {: configuration du placement des fenêtres, regardez la documentation de pekwm pour plus de détails.

Menu {
    DisplayIcons = "true"
    Icons = "Menu" {
      Minimum = "16x16"
      Maximum = "16x16"
    }
    Select = "Motion"
    Enter = "Motion"
    Exec = "ButtonPress"
}

DisplayIcons: doit-on afficher des icônes.
Icons = “Menu”: paramètres à utiliser pour la section “Menu” du fichier .pekwm/menu.
Select: comment choisir un élément du menu.
Enter: comment entrer dans un sous-menu.
Exec: comment exécuter un élément.

CmdDialog {
    HistoryUnique = "true"
    HistorySize = "500"
    HistoryFile = "~/.pekwm/history"
    HistorySaveInterval = "16"
}

HistoryUnique: doit-on afficher qu’une fois une application déjà lancée plusieurs fois.
HistorySize: taille du fichier historique.
HistoryFile: le fichier historique à utiliser.

Les fichiers mouse et keys

Ces deux fichiers vont nous permettre de définir les raccourcis claviers et souris.

les identifiants pour mouse

  • 1: click gauche.
  • 2: click du milieu.
  • 3: click droit.
  • 4/5: molette haut/molette bas.

les identifiants pour keys

  • Ctrl: touche contrôle.
  • Mod1: touche alt.
  • Mod4: touche super ou windows.

Petit exemple pour la souris :

FrameTitle {
     ButtonRelease = "1" { Actions = "Raise; Focus" }
}

Va faire venir une fenêtre au premier plan en cliquant sur la barre de titre avec le clic gauche.

Exemple pour les raccourcis clavier :

INCLUDE = "vars"
Global {
  KeyPress = "Mod4 e" { Actions = "Exec $TERMINAL &" }
  KeyPress = "#123" { Actions = "Exec $MIXINC &" }
  KeyPress = "Mod1 Tab" { Actions = "NextFrame EndRaise" }
  Chain = "Mod4 Mod1 M" {
    KeyPress = "P" { Actions = "Exec $PLAY &" }
  }
}

INCLUDE = “vars”: on inclue le fichier vars où on définira certaines applications.
KeyPress = ”#123” { Actions = “Exec $MIXINC &” }: sur la pression de la touche 123 identifiée par xev on lance $MIXINC défini dans .pekwm/vars.
Chain = “Mod4 Mod1 M” {: le raccourci Super + Alt + M, à lui seul il donne rien, il faut ensuite rajouter une autre touche.
KeyPress = “P” { Actions = “Exec $PLAY &” }: appuyer P après Super + Alt + M lancera $PLAY défini dans .pekwm/vars.

Il est possible de lancer plusieurs programmes à la fois :

KeyPress = "Ctrl Mod1 R" { Actions = "Exec osdctl -s 'Reconfiguring'; Reload" }

Pour une liste complète des variables et propriétés, jettez un coup d’oeil à la documentation.

Le fichier menu

Le paquet archlinux installe un fichier menu par défaut, qui contient divers raccourcis. On va donc vouloir changer ça. Deux façon possible :

Menumaker

Ce programme va générer un menu automatiquement avec les programmes que vous avez installé.

mmaker --no-desktop -f pekwm

Regardez les options disponible avec mmaker –help. Ce petit programme peut nous donner une bonne base pour pouvoir après édité notre menu à la main

À la main

Comme mentionné un peu avant, les modifications se font dans le fichier ~/.pekwm/menu . La syntaxe est assez compréhensive. Voici une entrée de menu :

Entry = "NAME" { Actions = "Exec COMMAND &" }

Et là un sous-menu possédant 2 entrée :

Submenu = "NAME" {
     Entry = "NAME" { Actions = "Exec COMMAND &" }
     Entry = "NAME" { Actions = "Exec COMMAND &" }
}

Un séparateur :

Separator {}

Pekwm supporte aussi les menus dynamiques. Ce sont des entrées de menus générées par des scripts. Vous trouverez un exemple ici pour afficher la date et l’heure actuelle.

Le fichier vars

On y met les variables qu’on peut réutiliser ensuite dans les fichiers de configurations (il faut bien sur inclure le fichier vars )

$TERM="xterm -fn fixed +sb -bg white -fg black"

Le fichier autoproperties

Nous voilà au fichier le plus complexe de pekwm mais aussi le plus puissant, avec celui ci vous pourrez faire en sorte qu’une application se lance sur tel ou tel bureau, de manière maximisée ou bien groupée avec d’autres.

Tout d’abord vous devez connaître la valeur WM_CLASS de l’application que vous voulez définir. pour cela en terminal faites

xprop WM_CLASS

puis cliquez sur l’application désirée, par exemple firefox → WM_CLASS(STRING) = “Navigator”, “Firefox”

Maintenant admettons que je veuille que firefox démarre sur le bureau 4 automatiquement au lancement je fais ceci:

Property = "Navigator", "Firefox" {
  ApplyOn = "New Start"
  Workspace = "4"
}

Property = “Navigator”, “Firefox” {: la propriété visant firefox.
ApplyOn = “New Start”: New = quand une nouvelle fenêtre démarre, Start = quand firefox se lance.
Workspace = “4”: on dit de lancer firefox sur le bureau 4.

Il y a beaucoup d’autres méthodes utiles, pour ça je vous conseille d’aller faire un tour sur la documentation.

Le fichier start

Un fichier assez simple, c’est le même que le autostart.sh d’openbox, donc rendez le executable (chmod +x) et remplissez le comme ceci :

#!/bin/sh
pidgin &
firefox &

Conclusion

J’espère qu’avec cet article vous envisagerez au moins d’essayer Pekwm, comme d’habitude vous savez où me contacter si vous avez des questions :)

Vus : 439
Publié par Rydgel : 137