# Manuel de Kwm, le gestionnaire de fenêtres de KDE

L'équipe KDE
v0.19.15, 29 novembre 1998

Cette documentation se réfère à la version 0.19.15 de KWM. Veuillez adresser tout commentaire et toute addition à l'auteur.

Le manuel de KWM

KDE
KWM
gestionnaire de fenêtres

## Introduction

Cette documentation contient des informations d'ordre général sur Kwm, un guide de référence des fonctionnalités et des informations techniques pour les développeurs du Module de Contrôle de Kwm et du Module système des sons.

Pour plus d'informations sur la personnalisation "bas niveau" de Kwm (intéressant pour les développeurs de kwinconfig), vous pouvez consulter le fichier Kwmrc, qui est généré automatiquement, et le code source.

A l'attention de tous les programmeurs : consultez `Kwm.h` dans libkdecore pour savoir comment utiliser Kwm pour vos besoins. Pour ceux qui veulent programmer des modules, la classe `KwmModuleApplication` est un bon exemple.

### Fonctionnalités

Kwm est le gestionnaire de fenêtres de prédilection pour KDE. Parmi les fonctionnalités qu'il offre, notons :

- Une intégration complète dans KDE.

- Un contrôle total par le clavier.

- Un 'look and feel' avec des titres de fenêtres et des icônes uniques et qui n'ont pas besoin d'être définis dans des fichiers de configuration cryptiques.

- Une mini fenêtre ligne de commande avec historique des commandes pour accès rapide à un prompt shell.

- Reconfiguration possible pendant l'exécution sans besoin de redémarrer, y compris en ce qui concerne la gestion de l'apparence ("look and feel") et des raccourcis clavier.

- Gestionnaire de fenêtres de seconde génération. Kwm utilise un toolkit moderne pour les applications (boutons, menus, listes etc...) au lieu de proposer une implémentation propriétaire ou Xlib.

- Gestion excellente du focus, même si vous travaillez sur différents bureaux virtuels (disparition des ennuis de perte de focus lors du changement de bureau, comme il arrive couramment avec les autres gestionnaires de fenêtres.)

- Inclut l'utilitaire `kstart` pour lancer des applications dans des fenêtres ayant des propriétés KDE spéciales: sous forme d'icône, maximisée, dans un certain bureau virtuel, avec une certaine décoration ou en les clouant. Tapez `kstart -help` pour plus d'informations.

- Inclut une gestion des sessions et un proxy de gestion de session pour les applications KDE. Ce proxy est capable de restaurer vos applications dans l'état où vous les avez laissées à la déconnexion, tant avec les propriétés de fenêtres (maximisée, clouée au bureau, icônifiée, etc...) qu'avec l'indication du bureau virtuel dont elles faisaient partie.

- Un concept moderne de modularisation qui utilise le serveur X lorsque c'est possible. Les modules de Kwm sont aussi très indépendants : ils peuvent être lancés avant ou après le démarrage de Kwm lui-même. Kwm peut être redémarré lorsque certains de ses modules sont actifs, et il s'y reconnectera automatiquement.

- Des modules puissants, comme la barre de tâches de KDE (kpanel) et un logiciel de commutation de bureau extrêmement séduisant.

- Il offre des extensions pour le serveur X dans `Kwm.h` ; les applications peuvent même à présent se maximiser (ou se clouer au bureau, ou se décorer/redécorer etc...) et définit des mini-icônes. Ce comportement fonctionne également pour les fenêtres mappées (visibles).

## Utilisation de Kwm

### Options de la ligne de commande

Kwm permet l'utilisation des options suivantes en ligne de commande :

-version

  Affiche le numéro de version ainsi que le numéro de patch ; ne lance pas Kwm

-nosession

  Lance Kwm sans restaurer la session précédente.

### Raccourcis clavier

Les raccourcis globaux peuvent être configurés via le centre de contrôle. Voici une liste des raccourcis tels qu'ils sont définis par défaut, sachant qu'ils peuvent être redéfinis.

Alt-Esc ou Control-Esc

  Affiche le gestionnaire de session avec un bouton de sortie

Alt-Tab et Alt-Shift-Tab

  Bascule entre les fenêtres du bureau actif

Ctrl-Tab et Ctrl-Shift-Tab

  Bascule entre les bureaux virtuels (désactivable dans Kwmrc)

Alt-F2

  Exécuter une commande

Alt-F3

  Affiche le menu "Fenêtre"

Alt-F4

  Ferme la fenêtre

Ctrl-F&lsqb;1..8&rsqb;

  Bascule vers un bureau virtuel

Ctrl-Alt-Esc

  Permet de détruire une fenêtre (le pointeur de la souris devient une tête de mort)

### Contrôle à la souris

Le contrôle à la souris obéit aux mêmes règles que les raccourcis clavier: il est configurable via le centre de contrôle. Voici une liste de réglages par défaut.

Clic sur le bord de la fenêtre ou dans la barre de titre:

- bouton gauche : active la fenêtre et la place au premier plan

- bouton du milieu : active simplement la fenêtre sans la placer au premier plan

- bouton droit : affiche le menu "Fenêtre" si la fenêtre est active, sinon active simplement la fenêtre sans la placer au premier plan

Double-clic sur la barre de titre : Maximise la fenêtre Clic maintenu sur la barre de titre

- bouton gauche bouge la fenêtre et la fait passer au premier plan

- bouton du milieu bouge la fenêtre en gardant l'organisation des fenêtres

Etirement des coins ou des bords

- bouton gauche redimensionne la fenêtre et la fait passer au premier plan

- bouton du milieu redimensionne la fenêtre en gardant l'organisation des fenêtres

Sur la fenêtre entière

- Alt + bouton gauche bouge la fenêtre

- Alt + bouton du milieu fait passer la fenêtre au premier plan

- Alt + bouton droit redimensionne la fenêtre

Options de la barre des titres (configurable)

- Menu "Opérations fenêtre"

- Clou Clouer/Déclouer la fenêtre (pour la faire apparaître sur tous les bureaux virtuels)

- Iconifier Iconifier/Désiconifier la fenêtre

- Maximiser

  - bouton gauche maximise

  - bouton du milieu maximise verticalement

  - bouton droit maximise horizontalement

- Fermeture ferme la fenêtre (le programme peut éventuellement réagir s'il a des choses à sauvegarder)

### Fenêtre mini-ligne de commande

Appuyez sur `Alt-F2` pour afficher une fenêtre contenant la place pour une ligne de commande. Entrez une commande shell UNIX (la variable d'environnement SHELL est utilisée pour déterminer quel shell va exécuter la commande), ou une parmi celles-ci :

- Entrez une URL à afficher avec Kfm. Vous pouvez omettre le http:// ou le ftp:// si le nom du serveur commence par www. ou ftp. respectivement.

- Entrez `man:commande` pour afficher la page du manuel Unix dans Kfm pour la commande 'commande'.

Vous pouvez utiliser la touche flèche vers le haut pour rappeler les commandes entrées précedemment dans cette boîte. De plus, vous pouvez utiliser la touche Tab pour compléter des noms de fichier partiellement entrés, comme dans de nombreux shells.

### Commandes

Il est possible d'envoyer des commandes à Kwm par :

`Kwm::sendKwmCommand(QString)` (dans les applications KDE) ou `Kwmcom commande` (depuis la ligne de commande)

Ceci est notamment intéressant pour les développeurs de kglobalshortcut.

Pour le moment, Kwm comprend les commandes suivantes :

- refreshScreen rafraîchit l'écran

- darkenScreen provoque un écran noir. Attention: cette commande rend le bureau sourd aux commandes clavier et souris.

- logout affiche la boîte de dialogue de déconnexion.

- commandLine ouvre la fenêtre de mini-ligne de commande

- taskManager affiche le gestionnaire de la session courante.

- configure recharge la configuration depuis Kwmrc.

- winMove winResize winRestore winIconify winClose winShade winSticky winOperations Ces commandes affectent la fenêtre active courante et se comportent comme vous l'attendez. (`winOperations` affiche le menu des opérations de fenêtre.)

- deskUnclutter deskCascade Ces commandes réorganisent les fenêtres sur le bureau

- desktop&lsqb;1-8&rsqb; change vers le bureau virtuel précisé desktop

- desktop+1 desktop+2 desktop-1 desktop-2 desktop&percnt;2 Ces commandes changent le bureau virtuel actif. `desktop&percnt;2` change entre un bureau et le suivant ayant un numéro pair, c'est-à-dire de 1 à 2 ou de 3 à 4. Ce comportement est utile pour émuler "Haut" et "Bas" dans une matrice virtuelle n*2, comme celle utilisée par le pager KDE. De même, `desktop+2` signifie "Droite", et `desktop-1` signifie "Gauche".

- go:autre La commande go sort de kwm et de tous ses modules et lance l'autre programme à la place. Par exemple autre peut être le nom d'un autre gestionnaire de fenres comme fvwm. Remarque: vous ne pouvez pas passer un chemin d'accès à la commande go, mais vous devez vous limiter au nom de l'exécutable, comme `kwmcom` est limité à 20 caractères.

## Configuration "bas niveau"

Normalement, vous n'avez pas besoin de changer à la main les options du fichier `Kwmrc`. A la place, vous pouvez utiliser le Panneau de Configuration qui permet de régler toutes ces options avec une interface graphique.

Ainsi, en ouvrant l'arborescence "Fenêtres", vous pouvez règler différentes options relatives aux fenêtres. Les raccourcis clavier peuvent être réglés via la section "Touches globales". Pour configurer les bureaux virtuels, ouvrez l'arborescence "Applications" et choisissez "Panneau".

Pour ceux qui préfèrent toutefois éditer un fichier de configuration, cette section explique les options du fichier `kwmrc` qui se touve dans /.kde/share/config.

### Le fichier Kwmrc

Le fichier de configuration kwmrc est divisé en plusieurs parties :

- Buttons

- General

- Session

- Desktop

- Decoration

- Focus

- Sticky

#### &lsqb;Buttons&rsqb;

Cette section contrôle l'emplacement des boutons de contrôle des fenêtres dans la barre de titres. Elle contient des lignes de la forme suivante : BoutonX=nom-bouton où X est une lettre de A à F et nom-bouton est `Menu, Sticky, Iconify, Maximize, Close, Off`. Les boutons A, B et C apparaissent dans la partie gauche de la barre de titre, et D, E, and F apparaissent dans la partie droite.

#### &lsqb;General&rsqb;

Cette section définit des options de configuration diverses :

- AutoRaise=valeur (en millisecondes) Si `FocusPolicy` est `FocusFollowMouse`, cette option détermine le delay entre l'obtention du focus dans une fenêtre lorsque la souris y entre, et le moment où la fenêtre est affichée au premier plan.

- BorderSnapZone=valeur (en pixels) Lorsque l'utilisateur déplace une fenêtre et qu'un des bords de cette fenêtre s'approche du bord de l'écran, la fenêtre s'alignera sur le bord. valeur détermine la distance maximale de la fenêtre au bord de l'écran au moment du déclenchement de cet alignement.

- Button3Grab=`on&verbar;off` Si l'option est à `off`, les opérations sur les fenêtres exécutées à l'aide du bouton droit de la souris sont inopérantes, pour que les applications puissent recevoir les messages événements du bouton droit de la souris.

- ControlTab=`on&verbar;off` Si l'option est à `on`, elle permet à l'utilisateur de presser `Ctrl+Tab` afin de changer de bureau virtuel.

- ElectricBorder=valeur (en millisecondes) Lorsque vous avez plus d'un bureau virtuel, l'option ElectricBorder vous permet de changer de bureau en positionnant la souris sur l'extrémité du bureau courant. valeur indique la durée pendant laquelle vous devez laisser la souris dans cette zone avant qu'intervienne le changement de bureau. Une valeur de -1 désactive cette fonctionnalité.

- ElectricBorderPointerWarp=`NoWarp&verbar;MiddleWarp&verbar;FullWarp` Si l'option `ElectricBorder` est à `on`, utilisez cette option pour que la souris se retrouve à l'endroit précisé ici lors d'un changement de bureau.

- ElectricBorderNumberOfPushes=valeur (la valeur par défault est "5") Cette option est le nombre de positionnements de la souris sur la limite de l'écran pendant le laps de temps défini à l'option `ElectricBorder` avant le changement de bureau virtuel, sans déplacement de fenêtre.

- FocusPolicy=`ClickToFocus&verbar;FocusFollowMouse` `ClickToFocus` attend que l'utilisateur clique dans une fenêtre pour lui donner le focus dans cette fenêtre. `FocusFollowMouse` donne constamment le focus à la fenêtre dans laquelle se trouve le curseur.

- MaximizeOnlyVertically=`off&verbar;on` Si l'option est à `on`, la maximisation de la fenêtre sera limitée à la direction verticale.

- ResizeAnimation=`on&verbar;off` Si l'option est à `on`, les opérations de minimisation et de maximisation sont effectuées avec une animation graphique.

- RstartProtocol=`...` (la valeur par défaut est "rstart -v")

- ShapeMode=`off&verbar;on` Si l'option est à `on`, Kwm utilise des pixmaps définis par l'utilisateur pour les bords des fenêtres, au lieu des pixmaps par défaut (voir ci-dessous).

- ShapePixmapTop=pixmap ShapePixmapBottom=pixmap ShapePixmapLeft=pixmap ShapePixmapRight=pixmap ShapePixmapTopLeft=pixmap ShapePixmapTopRight=pixmap ShapePixmapBottomLeft=pixmap ShapePixmapBottomRight=pixmap Ces options précisent quelles images sont affichées dans les côtés/coins respectifs des fenêtres lorsque `ShapeMode` est à `on`. pixmap devrait être le nom d'un fichier pixmap (.xpm) qui doit se trouver dans share/apps/Kwm/pics.

  Les sources de Kwm incluent un sous-répertoire "images" contenant un exemple d'extensions de pixmaps.

- TitlebarLook=`shaded&verbar;plain&verbar;pixmap` Ce paramètre détermine l'apparence des barres de titre. Choisissez `pixmap` pour que Kwm affiche une image fournie par l'utilisateur dans la barre de titre, comme précisé par les options suivantes.

- TitlebarPixmapActive=pixmap TitlebarPixmapInactive=pixmap Ces options précisent quelles images sont affichées dans les barres de titre des fenêtres actives et inactives, respectivement, lorsque TitleBarLook est `pixmap`.

- TitleAnimation=valeur (en milliseconds) Activer TitleAnimation demande à Kwm de faire défiler continuellement les titres de fenêtre trop longs pour figurer en entier dans la barre de titre. valeur précise la vitesse de cette animation. Fixez-la à 0 pour désactiver cette fonctionnalité.

- TitlebarDoubleClickCommand=`winMaximize&verbar;winShade&verbar;winMove&verbar; winResize&verbar;winRestore&verbar;winIconify&verbar;winClose&verbar;winSticky&verbar; winOperations` Cette option vous permet de préciser quel comportement une fenêtre doit adopter lorsque l'utilisateur double-clique sur la barre de titres.

- TraverseAll=`on&verbar;off` Si l'option est à `on`, la commande `Alt-tab` boucle sur toutes les fenêtres et sur tous les bureaux virtuels. Si l'option est à `off`, `Alt-tab` boucle sur toutes les fenêtres uniquement sur le bureau virtuel courant.

- WindowMoveType=`Opaque&verbar;Transparent` Cette option contrôle l'affichage qui intervient lorsque l'utilisateur déplace une fenêtre d'un endroit à l'autre du bureau. `Transparent` montre seulement les bords de la fenêtre pendant le déplacement, et `Opaque` dessine la fenêtre dans son intégralité.

- WindowsPlacement=`cascade&verbar;interactive&verbar;manual&verbar;random&verbar;smart` Cette option détermine la politique de placement des fenêtres par Kwm sur le bureau lors de leur première ouverture. `manual` permet à l'utilisateur de placer la fenêtre lui-même. `interactive` se sert d'une valeur de pourcentage, comme suit : `WindowsPlacement=interactive,25` Avec `interactive`, Kwm utilise la politique `smart` pour placer la fenêtre sauf si la position projetée cacherait une ou des fenêtres à plus de la valeur de pourcentage précisée, dans quel cas la politique `manual` sera utilisée pour permettre à l'utilisateur de placer la fenêtre lui-même. Le pourcentage peut être supérieur à 100. Les options restantes laissent Kwm placer seul la fenêtre.

- WindowSnapZone=valeur (en pixels) Lorsque l'utilisateur positionne une fenêtre et que l'un des bords de la fenêtre s'approche du bord d'une autre fenêtre, elle se positionnera automatiquement contre le bord de l'autre. valeur précise la distance à laquelle les deux fenêtres devront se trouver lors du déclenchement de cette fonctionnalité.

#### &lsqb;Session&rsqb;

- proxyignore=`xemacs,xterm,...,` Liste de (non-KDE) applications séparées par une virgule, pour lesquelles l'état de la fenêtre n'a pas à être sauvé lors de la déconnexion de l'utilisateur. Précisez ici le nom de l'application ainsi que les paramètres de la ligne de commande avec lesquels vous appelez l'application.

#### &lsqb;Desktop&rsqb;

Cette partie définit le nombre de bureaux virtuels, leur nom, leur position. Elle contient des lignes du type suivant :

- NumberOfDesktops=valeur Précise le nombre de bureaux virtuels. A l'heure de l'écriture de ces lignes, Kwm prend en compte jusqu'à 8 bureaux.

- Desktop&num;&lsqb;C&rsqb;=name Précise le nom du bureau &num;, par exemple `Desktop1[C]=Premier` Les bureaux sont numérotés de 1 à 8.

- Desktop&num;Region=geometry Précise la taille du bureau &num;, par exemple `Desktop1Region=101+0+923+722`

  Notez que de modifier les régions dans le fichier de configuration aura très peu d'effetn comme kpanel indiquera à kwm des valeurs raisonnables pour le bureau courant dès son démarrage. Quand vous vous déconnectez, kwm enregistre ces nouveaux réglages.

#### &lsqb;Decoration&rsqb;

- noDecorationTitles=,

- tinyDecorationTitles=,

- noDecorationClasses=,

- tinyDecorationClasses=,

#### &lsqb;Focus&rsqb;

- noFocusTitles=,

- noFocusClasses=,

#### &lsqb;Sticky&rsqb;

- stickyTitles=,

- stickyClasses=,

Chaque propriété vous permet de spécifier une liste d'expressions régulières séparées par des virgules. Une fenêtre dont le titre ou la classe correspond à l'une de ces expressions sera décorée en conséquence. Note: Ces réglages affectent seulement les NOUVELLES fenêtres. N'oubliez pas d'appeler `kwmcom configure` ou de redémarrer `kwm` après avoir changé le fichier kwmrc.

Au lieu de bidouiller le fichier de configuration vous auriez peut-être intérêt à utiliser l'utilitaire `kstart` utility.

## Evénements sonores

Kwm peut lancer des événements sonores, qui peuvent être utilisés dans un module sonore. Pour le moment, les événements sonores suivants sont implémentés :

- Iconification d'une fenêtre

- Désiconification d'une fenêtre

- Maximisation d'une fenêtre

- Démaximisation d'une fenêtre

- Clouage d'une fenêtre

- Déclouage d'une fenêtre

- Ouverture d'une fenêtre

- Fermeture d'une fenêtre

- Nouvelle boîte de dialogue

- Fermeture d'une boîte de dialogue

- Réduction d'une fenêtre en sa seule barre de titre

- Restauration d'une seule barre de titre en fenêtre

- Fermeture de session

- Message de fermeture de session

## Questions fréquemment posées (FAQ)

### Pourquoi devrais-je utiliser Kwm?

J'ai passé des jours entiers à apprendre comment configurer 10 gestionnaires de fenêtres différents. Et maintenant que j'ai 678 lignes de configuration qui font parfaitement ce que je souhaite, vous arrivez et voulez m'en faire changer ?

Réponse: Vous n'êtes pas obligé, c'est une simple suggestion. KDE fonctionne avec tous les gestionnaires de fenêtres courants, mais, pour profiter de tous ses avantages, il est recommandé d'utiliser Kwm. Veuillez vous référer à la liste des fonctionnalités.

### Pourquoi ne puis-je pas définir de nouveaux raccourcis pour mes applications ?

Réponse: Parce que ce n'est pas le rôle du gestionnaire de fenêtres. Toutefois, vous pouvez écrire une petite application qui fait cela. En utilisant la classe KGlobalAccel de libkdecore, chaque application KDE a facilement accès aux raccourcis globaux.

### Pourquoi Kwm ressemble-t-il tant à Windows 95 ?

Réponse: Ah bon ? Voyons voir... (Matthias est en train d'essayer de trouver quelqu'un qui a Windows 95 parce qu'il ne l'a sur aucun de ses ordinateurs. Personne n'a Windows 95 ici ? Bien, prenons une vieille distribution de Linux et installons fvwm95-2...) Non, décidément, impossible de vérifier cela ! De toutes façons, Kwm est bien plus joli et offre plus de fonctions fondamentales.

### Est-il possible d'ajouter des extensions de KDE aux autres gestionnaires de fenêtres ?

Réponse: Bien sûr ! Il suffit d'aller dans `Kwm.h` et `Kwm.C` dans `libkdecore` et d'améliorer votre gestionnaire de fenêtres favori pour qu'il réponde correctement à ce genre de requêtes. Nous avons eu des échos selon lesquels certains gestionnaires de fenêtres supportent ainsi déjà la totalité ou une partie de ces extensions.

### Est-ce que Kwm supporte les dégradés à la OpenStep ?

Réponse: Oui.

## Conclusion

### Développeur

`Matthias Ettrich`

### Auteurs

`Matthias Ettrich` - Design et auteur de Kwm

`Stephen Schaub` - Editeur

`Kalle Dalheimer` - Copy editor

`Robert Williams` - Editeur et auteur SGML

`François Darras` - Version française SGML

`Serge 'sergio' Tellène` - Mise à jour de la documentation pour v.0.11.5