                        Pekwm, le guide
                        ===============
                       par Jérôme Mahuet
Publié le 6 mai 2009 sur http://phollow.fr/2009/05/pekwm-le-guide/
             Dernier accès le 23 juin 2013 à 07 h 59
    ============================================================

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 fonctions, dont le regroupement de fenêtres,
des propriétés automatiques, xinerama et des raccourcis clavier
qui supportent les enchaînements de touches, et beaucoup plus encore.

Sources
Le site officiel de pekwm
Le wiki Archlinux
Le wiki Archlinux.fr

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 
	(mais 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 n'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 
	clavier 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 amener 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 ne 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çons 
	possibles :

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 par la suite éditer
	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ées :
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és 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 applications.

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 :) 

 07/05/2009 00:34  Ecrit par Rydgel 
 