Introduction
************

A propos de cette documentation
===============================

Ceci est la documentation de WeeWM, un gestionnaire de fenêtre pour XFree. Elle est créée à partir d'un fichier .texi (format texinfo) disponible avec les sources de WeeWM et dans les paquets disponibles. Nous utilisons ce format dans le but de rendre cette documentation facilement adaptable à différents formats de sortie.

Actuellement la personne responsable de la documentation est Nicolas ``Bounga'' C. Vous pouvez le contacter à l'adresse suivante bounga@altern.org. N'hésitez donc pas à le contacter pour toutes les questions relatives à la documentation de WeeWM. Vous pouvez également essayer de le joindre sur irc.freenode.net, canal #weewm (Nick: Bounga). Nicolas s'occupe de la version française et anglaise de cette documentation.

Participations / propositions : Nous acceptons bien évidemment les propositions de documentations si celles ci sont bien rédigées. En particulier à propos des sujets non ou trop peu couverts ici. Les traductions sont également les bienvenues, en particulier dans les langues les plus courantes (italien, espagnol, allemand, etc). Envoyez simplement un email à l'adresse donnée précédemment si vous avez des questions sur la manière dont vous pourriez aider ou si vous avez de la documentation que vous voudriez nous fournir.

A propos de WeeWM
=================

Qu'est ce qu'est WeeWM ?
------------------------

WeeWM est un gestionnaire de fenêtre rapide et léger pour XFree.

Tout peut être contrôlé au clavier. Entièrement paramétrable, il gère le dock, le placement intelligent des fenêtres, les bureaux virtuels, et bien d'autres choses encore...

Fonctionnalités
---------------

Réalisées :

  * décorations de fenêtres légères

  * placement intelligent des fenêtres

  * jusqu'à 256 bureaux virtuels

  * contrôle total au clavier

  * pour une touche, une infinité de commandes associées

  * touches configurables

  * exécutable très léger

En développement :

  * gestion intelligente du dock

  * relecture à chaud de la configuration

Options de la ligne de commande
-------------------------------

WeeWM accepte les options suivantes sur la ligne de commande :

weewm [ -cdfhklmov ] [long-options]

-c, --config
     Choisir un autre fichier de configuration

     (par défaut : $HOME/.weewm/config.rc)

-d, --display
     Choisir un autre <<display>> pour X.

-f, --font
     Choisir une fonte X (pour les messages, comme le redimensionnement des fenêtres).

-h, --help
     Afficher l'aide et quitter.

-k, --keys
     Choisir un fichier de configuration des touches

     (par défaut : $HOME/.weewm/keys.rc)

-l, --licence
     Afficher la licence WeeWM et quitter.

-m, --list-commands
     Afficher les commandes de WeeWM (pour keys.rc) et quitter.

-o, --list-options
     Afficher les options WeeWM (pour config.rc) et quitter.

-v, --version
     Afficher la version de WeeWM et quitter.

Poser des questions et trouver du support
-----------------------------------------

Bien que WeeWM soit facile à utiliser et configurer, il est possible que des questions ou des problèmes subsistent. Tout d'abord, avant de poser votre question sur les mailing lists ou sur le canal IRC de WeeWM, pensez à lire la FAQ disponible avec les sources.

Installation
************

De nombreux paquets binaires de WeeWM sont ou seront bientôt disponibles pour les différentes distributions les plus courantes. Ces paquets vous permettront une installation simplifiée de WeeWM. Cependant, vous pourriez avoir besoin pour une raison ou pour une autre de compiler les sources. Par exemple, la version le plus récente de WeeWM peut ne pas être disponible en paquet binaire. Vous pouvez encore vouloir compiler WeeWM avec certaines options qui ont étés laissées de côté dans les paquets binaires.

Cette partie de la documentation permettra donc aux moins aguerris d'entre vous, de pouvoir tout de même compiler et installer le gestionnaire de fenêtre WeeWM.

Pré-requis
==========

Vous devez disposer de ces programmes pour faire fonctionner WeeWM sur votre système :

  * XFree, version 6 ou plus récente (X11R6)

Installation depuis les sources
===============================

Obtenir le code source
----------------------

Vous pouvez télécharger un paquet avec le code source ou bien récupérer la base CVS.

  * Installation d'un paquet source (recommandé)

     Téléchargez le paquet des sources sur l'un de ces deux sites :

       - http://www.weewm.org/download.php

       - http://savannah.nongnu.org/files/?group=weewm

  * Récupération des sources du CVS (utilisateurs avancés seulement)

     ATTENTION ! Les sources du CVS peuvent être instables et ne pas compiler !

     Créez un répertoire vide ``weewm'' où vous le souhaitez, allez dans ce répertoire et tapez ces commandes :

     cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/weewm login

     cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/weewm co weewm

Extraction et compilation
-------------------------

Pour extraire l'archive, selon le fichier que vous avez récupéré, tapez l'une de ces 2 commandes :

tar xvzf weewm-x.y.z.tar.gz

tar xvjf weewm-x.y.z.tar.bz2

où x.y.z est la version (par exemple 0.1.2)

Allez ensuite dans le répertoire contenant les sources et tapez cette commande :

make

Le code est ainsi compilé.

Puis, en tant qu'utilisateur root :

make install

ce qui installera les fichiers dans les différents répertoires.

Autres paquets
==============

Paquet Debian
-------------

Tapez cette commande sous l'utilisateur root :

dpkg -i weewm_x.y.z_i386.deb

Vous pouvez également créer vous même votre paquet .deb à partir des sources. Il vous suffit pour cela, une fois dans le répertoire des sources, de taper la commande suivante :

debuild -rfakeroot -sd

un fichier weewm_x.y.z_i386.deb sera alors disponible dans le répertoire parent.

Un dépôt pour apt est également mis à votre disposition. Pour en profiter, il vous faut ajouter dans votre fichier /etc/apt/sources.list la ligne suivante :

deb http://apt.bounga.ath.cx/ unstable main

Vous pourrez ensuite installer WeeWM en tapant (en tant que root) les commandes suivantes :

apt-get update

apt-get install weewm

Grâce à cette méthode les mises à jour s'en trouveront fortement simplifiées. En effet, lorsque une nouvelle version sera mise à disposition un simple :

apt-get update

apt-get upgrade

vous permettra de passer à la nouvelle version.

Paquet Mandrake/Redhat
----------------------

Tapez cette commande sous l'utilisateur root :

rpm -i weewm_x.y.z-i386.rpm

Paquet BSD
----------

*** Non développé ! ***

Paquet Gentoo
-------------

*** Non développé ! ***

Paquet Sorcerer
---------------

*** Non développé ! ***

Paquet Slackware
----------------

*** Non développé ! ***

Lancer WeeWM
============

Maintenant que l'installation s'est déroulée avec succés, il faut lancer WeeWM.

Il y a géneralement deux manières de démarrer X (et donc WeeWM). La voie traditionnelle est d'utiliser la commande startx. L'autre manière est d'utiliser un gestionnaire de login graphique (tels que gdm, xdm ou kdm).

Si X est demarré par la voie traditionnelle (via startx), le fichier important est appelé .xinitrc et est présent dans votre répertoire personnel. Dans le cas où vous démarrez via un gestionnaire de login graphique, le fichier est .Xsession et est également présent dans votre répertoire personnel.

La prochaine étape est de trouver l'exécutable pour WeeWM. Pour la plupart des personnes, il est situé dans /usr/bin/weewm. Désormais vous devez éditer (ou créer) le fichier mentionné ci-dessus. Ajoutez seulement la ligne suivante au bas de ce fichier :

exec /usr/bin/weewm

Modifiez le /usr/bin/weewm pour le lieu où est votre exécutable WeeWM. Si vous ne le trouvez pas, un simple type weewm vous donnera son emplacement exact. Une fois cette étape terminée vous pouvez sauvez le fichier en cours d'édition et fermer votre éditeur favori.

Si vous lancez XFree à l'aide de la commande startx, il vous faut taper la commande suivante, pour rendre éxecutable votre fichier fraîchement édité :

chmod 700 ~/.xinitrc

Dans le cas d'un login graphique cette manipulation n'est pas nécessaire.

Vous pouvez maintenant tenter de lancer WeeWM en tapant :

startx

Configuration
*************

Options générales
=================

Les options générales sont stockées dans le fichier config.rc (par défaut : $HOME/.weewm/config.rc).

Vous pouvez donc modifier à souhait les valeurs des options disponibles dans ce fichier pour faire correspondre WeeWM à vos attentes.

Détail des options :

border
     largeur de la bordure des fenêtres (en pixels)

     min: 1, max: 3, défaut: 1

space
     espace entre la fenêtre et sa bordure (en pixels)

     min: 0, max: 5, défaut: 1

desktops
     nombre de bureaux disponibles

     min: 1, max: 256, défaut: 5

minwidth
     largeur minimale d'une fenêtre

     min: 1, max: 4096, défaut: 15

minheight
     hauteur minimale d'une fenêtre

     min: 1, max: 4096, défaut: 15

move_offset
     incrément de déplacement des fenêtres (en pixels)

     min: 1, max: 256, défaut: 16

color.border.active
     couleur de la bordure de la fenêtre active

     défaut: 'green'

color.border.inactive
     couleur de la bordure des fenêtres inactives

     défaut: 'black'

color.sticky
     couleur de la bordure pour les fenêtres collées

     défaut: 'blue'

info.width
     largeur de la fenêtre d'information - NON DEVELOPPE !

     min: 10, max: 4096, défaut: 100

info.height
     hauteur de la fenêtre d'information - NON DEVELOPPE !

     min: 10, max: 4096, défaut: 50

dock.use
     utilisation du dock (1=oui, 0=pas de dock)

     min: 0, max: 1, défaut: 1

dock.size
     taille du dock (en pixels)

     min: 8, max: 512, défaut: 64

dock.position
     position du dock (1=en haut, 2=à gauche, 3=à droite, 4=en bas)

     min: 1, max: 4, défaut: 3

dock.align
     alignement du dock (0=haut/gauche, 1=centré, 2=bas/droite)

     min: 0, max: 2, défaut: 0

Un exemple de fichier config.rc
-------------------------------

Voici un extrait du fichier d'exemple livré avec les paquets de WeeWM. Vous pouvez le trouver dans son intégralité dans le répertoire /usr/share/doc/weewm/examples/.

border               1

space                1

desktops             5

minwidth             15

minheight            15

move_offset          16

color.border.active  green

color.border.inactive black

color.sticky         blue

info.width           100

info.height          50

dock.use             1

dock.size            64

dock.position        2

dock.align           0

Configuration des touches
=========================

La configuration des touches est stockée dans le fichier keys.rc (par défaut: $HOME/.weewm/keys.rc). Ce fichier va vous permettre de choisir quelle combinaison de touches lancera telle ou telle commande.

Détail des touches :

Tous les noms de touches peuvent être trouvés dans le fichier

/usr/include/X11/keysymdef.h (noms de touches sans le préfixe ``XK_'')

Les modificateurs sont :

- ``Mod1'': touche alt

- ``Mod4'': touche windows

- ``Control'': touche control

- ``Shift'': touche shift

Voici la liste des commandes internes de WeeWM pour les associations de touches :

next_win
     active la fenêtre suivante

prev_win
     active la fenêtre précédente

pos_top_left
     déplace la fenêtre dans le coin supérieur gauche

pos_top
     déplace la fenêtre sur le bord supérieur de l'écran

pos_top_right
     déplace la fenêtre dans le coin supérieur droit

pos_left
     déplace la fenêtre sur le bord gauche de l'écran

pos_center
     centre la fenêtre sur l'écran

pos_right
     déplace la fenêtre sur le bord droit de l'écran

pos_bottom_left
     déplace la fenêtre dans le coin inférieur gauche

pos_bottom
     déplace la fenêtre sur le bord inférieur de l'écran

pos_bottom_right
     déplace la fenêtre dans le coin inférieur droit

move_win_left
     déplace la fenêtre horizontalement (-X pixels)

move_win_right
     déplace la fenêtre horizontalement (+X pixels)

move_win_up
     déplace la fenêtre verticalement (-X pixels)

move_win_down
     déplace la fenêtre verticalement (+X pixels)

prev_desktop
     affiche le bureau précédent

next_desktop
     affiche le bureau suivant

desktop[1-256]
     affiche le bureau numéro N

send_prev_desktop
     envoie la fenêtre sur le bureau précédent

send_next_desktop
     envoie la fenêtre sur le bureau suivant

win_max_horizontal
     maximise la fenêtre horizontalement

win_max_vertical
     maximise la fenêtre verticalement

win_max
     maximise la fenêtre

win_fix
     colle/décolle le fenêtre

win_memo_pos
     mémorise la position et la taille de la fenêtre

win_memo_desktop
     mémorise le bureau de la fenêtre

win_forget_pos
     oublie la position mémorisée de la fenêtre

win_forget_desktop
     oublie le bureau mémorisé de la fenêtre

win_kill
     ferme la fenêtre active

reconfigure
     recharge la configuration - NON DEVELOPPE !

quit
     quitte WeeWM

Un exemple de fichier key.rc
----------------------------

Voici un extrait du fichier d'exemple livré avec les paquets de WeeWM. Vous pouvez le trouver dans son intégralité dans le répertoire /usr/share/doc/weewm/examples/.

Mod1|Control              Left       prev_desktop

Mod1|Control              Right      next_desktop

Mod4                      Left       send_prev_desktop

Mod4                      Right      send_next_desktop

Mod4                      F1         desktop_1

Mod4                      F2         desktop_2

Mod4|Shift                Up         pos_top

Mod4|Shift                Down       pos_bottom

Mod4|Shift                Left       pos_left

Mod4|Shift                Right      pos_right

Mod1|Control              Escape     quit

Mod4            Return  run     aterm   0   7913    xterm

Mod4            c       run1    xclock  1   0       xclock

Dans cet exemple, on a :

Mod1|Control              Left       prev_desktop

donc utiliser les modificateurs Mod1 + Control (Mod1|Control) + la touche fléche gauche (Left) effectuera l'action d'aller sur le bureau précédent (prev_desktop).

Mod4            Return  run     aterm   0   7913    xterm

va lancer (paramètre ``run'') un terminal aterm à une position donnée.

Si vous cherchez le nom d'une touche, vous pouvez utilisez xev pour le trouver. Par exemple, vous désirez connaître le nom de la touche ``fléche droite''. Lancer donc xev, placez vous dans le fenêtre qui apparaît et presser la touche ``fléche droite''. Dans votre terminal apparaîtra quelque chose ressemblant à :

KeyPress event, serial 24, synthetic NO, window 0xa00001,

root 0x3e, subw 0x0, time 11617881, (122,71), root:(126,88),

state 0x0, keycode 102 (keysym 0xff53, Right), same_screen YES,

XLookupString gives 0 characters:  ""

La partie qui nous intéresse est : keycode 102 (keysym 0xff53, Right) où l'on peut voir le mot-clef ``Right''. Notre touche s'appelle donc ``Right''.

Fond d'écrans
=============

Tout d'abord, il faut savoir que les fond d'écrans ne sont pas gérés directement par WeeWM mais par un programme externe. Nous vous présenterons ici les plus connus et nous vous expliquerons comment s'en servir de façon basique.

xsetroot :

xsetroot est le logiciel de fond d'écrans livré avec XFree. Il peut mettre en place des fonds d'écrans seulement s'ils sont simples, comme une couleur unie. Il peut aussi utiliser une image bitmap. Pour plus d'information sur ce logiciel reportez vous à son manuel (man xsetroot).

Esetroot :

Esetroot est quant à lui plus destiné à l'affichage d'image et à la gestion de la transparence. En effet, si vous chargez votre image de fond d'écran à l'aide de Esetroot et que vous utilisez la console Eterm, vous pourrez alors activer la transparence de cette dernière. Pour afficher un fond d'écran sur toute la totalité de votre bureau, il vous suffit de taper Esetroot -f votre_fichier.png.

Pour automatiser le chargement de votre fond d'écran préféré au chargement de WeeWM, vous pouvez par exemple (si vous n'utilisez pas de gestionnaire de login graphique) ajouter cette commande :

Esetroot -f /chemin/vers/mon/image.png

à la fin de votre fichier ~/.xinitrc.

.xinitrc / .xsession
====================

L'utilité de .xinitrc
---------------------

Il faut savoir qu'un gestionnaire de fenêtres n'est qu'une application pour X tout comme mozilla, gimp ou aterm. On peut, au premier abord, penser que X lance un gestionnaire de fenêtres et que c'est ce dernier qui va se charger d'exécuter les programmes. Pourtant, en réalité, les choses ne se passent pas comme ça. C'est bien XFree qui lance les applications et le gestionnaire de fenêtres, comme son nom l'indique, ne fait que de s'occuper de la gestion des fenêtres. Vous pouvez par exemple lancer un gestionnaire de fenêtre, lancer vos applications puis tuer le gestionnaire de fenêtres et en lancer un autre et continuer à travailler.

Lorsque X est lancé, il lit votre script .xinitrc ou .xsession. Une fois que l'ensemble des commandes de ce fichier ont finit leur éxecution, X se termine. Et ce n'est pas le fait de sortir de son gestionnaire de fenêtre qui fait que X se termine comme on pourrait le penser.

Syntaxe du script
-----------------

Pour comprendre la suite, vous devez avoir quelques connaissances de base sur le shell. Par exemple, quand vous tapez une commande dans un shell, vous ne pouvez pas faire autre chose dans ce shell jusqu'à ce que la commande soit finie. Les fichiers de script (et donc .xinitrc ou .xsession) se comportent de la même façon.

Il y a évidemment une méthode qui permet de lancer une commande dans un shell et de reprendre tout de suite la main. Cette méthode va vous permettre de pouvoir lancer des programmes que vous voulez automatiquement voir s'éxecuter au démarrage de X. Ces applications doivent être misent en tâches de fond. On peut faire cela en ajoutant un ``&'' à la fin de la ligne de commande. Ainsi, si vous voulez que xclock s'exécute à chaque lancement de XFree, ajoutez cette ligne à votre .xinitrc :

xclock &

Une fois toutes les commandes à lancer automatiquement ajoutées, vous pouvez passer au lancement du gestionnaire de fenêtre. Pour cela, nous allons utiliser la commande exec.

Un exemple de .xinitrc pourrait être :

# on lance quelques applications

xmms &

gkrellm -w &

idesk &

# puis on lance notre gestionnaire de fenêtres

exec weewm

Debuggage
*********

Informations générales
======================

Le débuggage peut paraître une tâche réservée aux développeur au premier abord mais vous pouvez facilement en apprendre les bases. Deux adresses utiles pour apprendre à rédiger un bon rapport de bug sont les suivantes : http://www.mozilla.org/quality/bug-writing-guidelines.html et http://www.chiark.greenend.org.uk/~sgtatham/bugs.html. Ces documents n'existent malheureusement pas en français à notre connaissance et ce sont les seuls vraiment bons que nous connaissons.

Informations à spécifier
========================

Les informations que vous devez absolument nous transmettre lorsque vous nous faîtes un rapport de bug sont principalement :

- Votre OS / distribution et sa version.

- La version de WeeWM, si il s'agit d'une CVS (ou d'un tarball de développement) alors de quel jour ?

- Quand cela se produit t il ? Avez vous fait quelque chose ? Pouvez vous le reproduire ?

- Vos réglages. Ils peuvent être trouvés dans ~/.weewm/

Et les core-dumps ?
===================

Si lors de l'utilisation de WeeWM survient un crash et que vous obtenez un core-dump, nous vous conseillons de venir sur le canal #weewm sur le serveur irc.freenode.net et de dire à l'un des ops présent que vous avez un coredump. Il vous demandera très certainement un certain nombre d'informations.

Pour pouvoir obtenir des informations intéressantes à partir des core-dumps, vous devrez posséder une version de WeeWM compilée avec les options adéquates ce qui n'est pas le cas des versions de ``release'' proposées sur le site. Il vous faudra donc compiler vous même WeeWM.

Recompilez WeeWM
----------------

Pour que WeeWM soit compilé avec les possibilités de débuggage, il vous faudra récupérer les sources de WeeWM. Lorsque vous voudrez lancer le ``make'', pensez à ajoutez les options suivantes :

$ OPTIONS=-Wall -W -pedantic -pipe -O2 -g3 make

Une fois la compilation terminée, dans votre shell tapez :

$ ulimit -c unlimited

ce qui vous permettra d'obtenir des core-dumps de taille non limitée.

Démarrez maintenant X et commençons le débuggage. Reproduisez l'action qui a fait crasher WeeWM la dernière fois afin d'obtenir le core dump. Puis démarrons le débuggage :

$ gdb weewm core

Vous taperez ensuite cette commande dans gdb :

(gdb) where

De nombreux messages devraient s'afficher. Les développeurs de WeeWM seront intéressés par tous les messages commençant par un #.

Une fois tout cela récupéré vous pouvez envoyer un e-mail décrivant la manipulation qui plante WeeWM, les messages récupérés précédemment ainsi que vos fichiers de configuration disponibles dans ~/.weewm/.

Ne supprimez pas le fichier core et le répertoire des sources immédiatement après. Les développeurs pourraient vous demander d'autres détails et vous auriez donc encore besoin de ces fichiers. N'envoyez aucun fichiers aux développeurs sans avoir d'abord exposé votre problème soit sur le canal IRC, soit par messages instantanées (AIM, ICQ, Jabber) à l'un des développeurs. Le problème pourrait être spécifique à votre système, et il serait probablement inutile aux développeurs d'avoir le fichier core qui est en général assez volumineux.

Reporter un bug
===============

Avant de reporter un bug, vérifiez si le problème est déjà connu (en regardant le fichier BUGS dans le dernier paquet source ou le CVS).

Si vous avez découvert un nouveau bug, merci de le soumettre sur cette page :

http://savannah.nongnu.org/bugs/?func=addbug&group=weewm

Auteurs / Support
*****************

Auteurs
=======

WeeWM est écrit par :

  * FlashCode:

       - e-mail: flashcode AT flashtux DOT org

       - web: http://www.weewm.org

       - irc: serveur: irc.freenode.net, canal: #weewm

       - jabber: flashcode@jabber.org

       - icq: 160677660

       - aim: FlashCode AIM

       - yahoo: FlashCode_Y

  * Xahlexx:

       - e-mail: xahlexx AT weeland DOT org

       - web: http://www.weeland.org

       - irc: serveur: irc.freenode.net, canal: #weewm

  * Bounga:

       - e-mail: bounga AT altern DOT org

       - web: http://bounga.ath.cx

       - irc: serveur: irc.freenode.net, canal: #weewm

       - jabber: Bounga@jabber.org

       - icq: 178297842

Obtenir de l'aide
=================

Aide via IRC :

- serveur: irc.freenode.net

- canal: #weewm

Forum WeeWM : http://forums.flashtux.org

Aide via la liste de diffusion : Vous pouvez souscrire et utiliser la liste de diffusion des utilisateurs pour obtenir de l'aide :

- pour souscrire : http://mail.nongnu.org/mailman/listinfo/weewm-support

- pour envoyer un mail á toutes les personnes de la liste : envoyez à weewm-support@nongnu.org

Ou vous pouvez contacter les développeurs, see Auteurs.