« Dwm » : différence entre les versions

Aller à la navigation Aller à la recherche
9 961 octets ajoutés ,  il y a 14 ans
aucun résumé des modifications
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
dwm est un gestionnaire de fenêtre tiling. Sa vraie particularité face à wmii et awesome c'est qu'il se configure à la compilation. C'est sympa au niveau légèreté il n'a pas à effectuer de lecture de fichier supplémentaire.
=='''Présentation :'''==
 
''' ''' [http://dwm.suckless.org Dwm] est le tiling windows manager (Gestionnaire de fenêtres en tuile) développé par l'équipe de [http://suckless.org suckless.org]. Fidèle à leur philosophie, il est écrit en C, permettant ainsi la contribution de chacun au projet, ce langage étant plus que répandu et éprouvé. De plus, cela oblige les codeurs à faire du code propre et léger. Il permet de gérer ses fenêtres entièrement au clavier si on le souhaite, mais aussi de passer bien moins de temps à arranger son bureau. Niveau productivité, vous serez donc servi, car il vous aidera à gagner énormément de temps. Par ailleurs, il dispose par défaut de 9 "vues". En fait, une fenêtre est associée à 1 ou plusieurs vues, et sera affichée dans chacune d'elles. On devrait plutôt dire "étiquette" que "vue". L'avantage pour le simple utilisateur, c'est que le C est très clair, et et que l'on a même pas besoin de tout comprendre pour le configurer. Eh oui, tout a été pensé, il suffit en fait d'éditer rien qu'un tout petit fichier : [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-1-le-fichier-config-h le config.h ], qui a été construit de manière à rendre la configuration accessible même aux non-initiés. De plus, cela évite les multiples fichiers de configuration tiers, on configure dwm une fois, et une fois qu'il est insallé, on n'a plus rien à toucher, tout est dans le binaire! Ainsi, dwm n'a pas à chercher et lire ces fichiers de configuration pour faire son boulot, donc le temps d'éxécution est amélioré! Debian propose un paquet de démonstration. On expliquera ici comment reconstruire un paquet proprement, une fois que l'on a configuré dwm à notre sauce. Le code de dwm a été construit dans le but de pouvoir ajouter des fonctionnalités simplement, sous forme de [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-3-ajouter-un-patch patches.] Vous pourrez alors composer votre gestionnaire de fenêtre, avec les fonctions que vous désirez. Avant de vous présenter ici les différentes configurations possible, astuces et autres, je ne peux continuer sans [http://dwm.suckless.org/screenshots/ une traditionnelle capture d'écran] :
 


Voici à quoi il peut ressembler :
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]
[[Fichier:dwm-exemple.png|200px|thumb|left|un exemple d'utilisation de dwm]]


Il est écrit en C. Pour commencer à le configurer je vous conseille de lire ce tutoriel que je ne reprendrais pas ici :
=='''Tester sur debian :'''==
http://www.xsnake.net/howto/dwm/dwm-fr.php
 
Il est obsolète sur un certain nombre de points, je posterais plus tard ici mes découvertes.
''' ''' Pour commencer, on va utiliser la version de test proposée dans les dépots Debian. Test? Eh oui, car la puissance de dwm se retrouve lorsque l'on édite le fichier config.h, et que l'on recompile. Mais rassurez-vous, cela tient du jeu d'enfant! Il est même prévu de reconstruire le paquet! Bien, installez donc le paquet dwm (aptitude install dwm), puis choisissez cette session dans gdm/kdm, ou bien ajoutez à votre .xinitrc :<code>exec dwm</code> Comme vous le voyez, la configuration par défaut n'est pas la plus belle. Mais on va y remédier! ''' '''
 
=='''Utilisation :'''==
 
Dwm a été pensé pour être entièrement piloté au clavier si besoin. Voici les raccourcis définis par défaut. On utilisera dans un premier temps la touche "alt" comme touche "Mod1". ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir la partie configuration pour plus d'informations])
 
* Mod1-Shift-Return Lance un terminal
* Mod1-b Affiche/cache la barre
* Mod1-t Passer en mode "tiling"
* Mod1-f Passer en mode flottant.
* Mod1-m Maximise la zone principale
* Mod1-space Passe du mode courant au mode précédent.
* Mod1-j Passe le focus à la fenêtre suivante
* Mod1-k passe le focus à la fenêtre précédente
* Mod1-h Réduis la taille de la zone principale
* Mod1-l Augmente la taille de la zone principale
* Mod1-Return Échange les fenêtres séléctionnées depuis/vers la zone principale
* Mod1-Shift-c Ferme la fenêtre sélectionnée
* Mod1-Shift-space Passe la fenêtre sélectionnée entre le mode tiling et flottant
* Mod1-Tab Sélectionne la vue précédente
* Mod1-Shift-[1..n] Envoie la fenêtre à la vue numéro 1...n
* Mod1-Shift-0 Affiche la fenêtre sur toutes les vues
* Mod1-Control-Shift-[1..n] Ajoute/Retire la fenêtre sélectionnée du bureau numéro 1...n , pratique si on veut qu'une fenêtre apparaisse sur plusieurs vues
* Mod1-[1..n] Aller à la vue 1...n
* Mod1-0 Affiche toutes les fenêtres de toutes les vues.
* Mod1-Control-[1..n] Retire toutes les fenêtres de la vue 1...n
* Mod1-, Change d'écran, si il y en a plusieurs
* Mod1-Shift-q Quitte dwm
 
 
 
Sur le bureau, on démarre par defaut en mode « divisé » : l'écran est divisé équitablement entre les fenêtres. Voici les modes disponibles par défaut :
 
* Le mode « flottant » (Mod+f) : Vous pourrez alors déplacer la fenêtre en maintenant la touche Mod appuyée tout en déplacant la fenêtre à la souris, la redimensionner en maintenant Mod et en faisant clic-droit avec la souris.
 
* Le mode « maximum » (Mod+m) : la fenêtre prend tout l'espace disponible, on ne voit pas les autres fenêtres
 
* Le mode « divisé » (Mod+t) : Mode écran divisé ou tiling. Une partie maître à gauche, avec une fenêtre plus grande, et une partie à droite avec les fenêtres plus petites.
 
===Obtenir dwm :===
 
Dwm est téléchargeable sur le [http://dl.suckless.org/dwm/ site officiel] (prendre l'archive la plus récente et la décompresser), ou vous pouvez télécharger les sources debian : <code># apt-get source dwm</code> . Pour les plus aventureux, vous pouver installer la toute dernière mouture de dwm ainsi (paquet mercurial nécéssaire) <code>hg clone http://hg.suckless.org/dwm</code>. Les deux dernières commandes téléchargent les sources dans le dossier courant. On se déplace dans le dossier des sources de dwm : <code>cd dwm-numéro_de_version</code>
 
===Installer dwm :===
 
Dans le dossier contenant les sources, il suffit de taper : <code>make</code>. Dwm est alors compilé, et présent dans le dossier actuel. Vous pouvez l'installer sur tout le système si vous voulez, en tapant ensuite : <code>make install</code> Les éxécutables seront dans ce cas le dossier /usr/local/bin par défaut. Pour changer ce répertoire, il faut éditer le fichier config.mk, et changer la ligne : <code>PREFIX = /chemin/du/dossier/destination</code> vers le chemin de votre choix (votre dossier utilisateur ou autre). Notez toutefois que pour lancer votre session ensuite, il faudra préciser le bon chemin.
<code>
::<nowiki>#</nowiki>Fichier ~/.xinitrc
::<nowiki>#</nowiki>commande pour lancer dwm en tapant startx
::<nowiki>#</nowiki>Lorsque dwm est dans /usr/bin ou /usr/local/bin :
exec dwm
::<nowiki>#</nowiki> lorsque dwm est dans un dossier quelconque, par exemple dans /home/user/
::<nowiki>#</nowiki>exec /home/user/dwm </code>
Les dépendances nécéssaires sont libX11-dev et éventuellement libxinerama-dev. Intéressons nous comment recréer un paquet debian à partir des sources debian : On récupère les sources, qui seront décompressées dans le dossier courant : <code> apt-get source dwm</code> On se déplace dans le dossier des sources. J'utilise le caractère "*" pour ne pas avoir à préciser la version de dwm : <code>cd dwm*</code> Maintenant, on retrouve les fichiers sources de dwm, les mêmes que dans l'archive officielle plus quelques autres relatifs à debian. On configure dwm de la même façon que pour les autres méthode, en éditant le config.h ([http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/#4-configurer-dwm voir plus loin]) Une fois que vous êtes satisfaits, vous pouvez refabriquer le paquet avec cette commande (toujours dans le dossier des sources) : <code>dpkg-buildpackage -rfakeroot -uc -b</code> Ce qui va créer un fichier dwm-version.deb dans le répertoire supérieur. Pour vous assurez d'avoir les dépendances nécéssaires, tapez ceci (Merci Knucky) : <code>apt-get build-dep dwm</code> Allons donc chercher le paquet récemment créé : <code>cd ..</code> Et installons ce paquet (il faut avoir les droits super-utilisateur) : <code> dpkg -i dwm_*.deb </code> Le paquet est maintenant installé!
 
Il se peut fichier dwm-5.7.2/debian/desktop/dwm soit mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension ".desktop". ''' '''
 
==''' [http://dwm.suckless.org/customisation/ 4. Configurer dwm :]'''==
 
''' ''' ''[http://dwm.suckless.org/customisation/ Documentation du site officiel à ce sujet]'' On va maintenant se pencher sur les configurations possibles.
 
===Le fichier config.h :===
 
Depuis le temps que je vous parle de ce fichier! Il se trouve dans le dossier des sources de dwm. Allons le chercher : <code>cd dwm-numero_de_version</code> ''Mais, que dis-tu, il n'y a pas de fichier config.h! bouh!'' Ahem... En effet, dis comme ça... Non, je ne me moque pas de vous. En fait, par défaut, le fichier s'appelle config.def.h. C'est en fait un config.h qui sert de modèle. Cependant, si un fichier config.h est présent, ce sera lui qui sera utilisé pour la configuration, sinon ce sera le config.def.h. Je vous invite à copier le fichier config.def.h en config.h, toujours dans le dossier des sources : <code>cp config.def.h config.h</code> Ainsi, vous gardez un modèle d'origine en cas de besoin. Voici à quoi ressemble le fichier par défaut, j'y rajoute ici des commentaires pour l'expliquer en français.
http://www.isalo.org/pnopaste/?14
 
====Donner des règles pour les fenêtres====
 
Voir aussi : http://dwm.suckless.org/customisation/tagmask Il est possible de définir des règles spécifique à certaines fenêtres. Par exemple, si je veux que transmission n'apparaisse que su le tag 9, il faudra mettre ceci : <code lang="c"> static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { "Transmission", NULL, NULL, 1 &lt;&lt; 8, False, -1 }, }; </code> Pour récupérer les informations sur une fenêtre, tapez xprop dans une console. Votre curseur va changer de forme. Cliquez alors sur la fenêtre voulue. Vous verrez apparaître dans la console les informations sur la classe, le titre de la fenêtre... Vous l'aurez compris, si vous voulez que la fenêtre flotte, il faudra mettre "True" dans la colonne "isfloating" Pour désigner le tag où l'on veut que la fenêtre apparaisse, c'est un peu plus complexe. Ainsi 1 &lt;&lt; 8 définit le tag 9, 1 &lt;&lt; 7 représente le tag 8, ~0 représente tous les tags, (1 &lt;&lt; 8 ) – 1 définit tous les tags sauf le 9eme.


Par contre à la place de la technique "classique" du make clean install, je vous propose ici une méthode debian bien plus jolie.
====Définir vos raccourcis:====


D'abord on va récupérer les sources :
Bien sûr, on peut éxécuter la commande de notre choix via un raccourci clavier, ou même un raccourci souris si on le souhaite. La première étape sera de définir ce raccourci. Il s'agit en fait de faire nos propres fonctions. Repérer ces lignes dans le config.h : <code lang="c"> /* commands */ static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; static const char *termcmd[] = { "uxterm", NULL }; </code> La première ligne sert à lancer dmenu avec les couleurs de dwm. C'est en fait ce qui se passe lorsque vous tapez le raccourci Mod+P . dmenu est inclus dans le paquet dwm-tools ou suckless-tools, ou[http://tools.suckless.org/dmenu/ téléchargeable sur le site officiel]. La deuxième ligne lance un terminal, c'est ce qui se passe lorsque vous faîtes Mod+Shift+Entrée. Vous pouvez modifier la commande uxterm, par votre terminal favori (xterm, urxvt, xfce4-terminal, lxterminal...). Si vous n'êtes pas sûr, suivez le conseile de MisterFreez, indiquez "x-terminal-emulator" On va ajouter en dessous ces lignes nos propres fonctions! Par exemple, je voudrais ajouter deux raccourcis : l'un pour lancer gajim, l'autre pour couper/activer le son. Il faudra définir deux fonctions sur le même modèle que les précédentes. Donnez leur le nom que vous voulez, du moment que vous vous y retrouvez. Exemple : <code lang="c"> static const char *gajim[] = { "gajim", NULL }; static const char *muteson[] = { "amixer", "-q", "set", "Master", "toggle", NULL }; </code> '''Note : '''Remarquez que lorsque une commande contient des espaces, chaque argument doit être entre guillemets suivi d'une virgule. Les commandes finissent toujours par NULL. Bien, maintenant que nos fonctions sont définies, on va les appeler. J'ai envie de lancer gajim lorsque j'appuie sur Mod4+Mod1+i, et couper le son lorsque j'appuie sur la touche multimédia de mon ordinateur associée. Voici ce que ça donnera, dans la section des raccourcis claviers : <code lang="c"> static Key keys[] = { /*il y a d'autres choses avant....*/ { MODKEY|Mod1, XK_i, spawn, {.v = gajim } }, { 0, 0x1008ff12, spawn, {.v = muteson } }, </code> ''' Ouhla, ça mérite des explications :''' - Pour définir plusieurs modifieurs, on les sépare par un "|". - XK_i correspond à la touche "i" - spawn est une fonction dans dwm, qui dit d'éxécuter la fonction désignée - On donne la fonction à éxécuter entre {.v = nom_de_fonction }. Le nom de la fonction est celui définit précédemment. - S'il n'y a pas de modificateur, on met un 0. - 0x1008ff12, c'est le code de ma touche multimédia, que j'ai récupéré en tapant xev en console, puis en faisant fn+"touche bleue" qui coupe le son" Notez qu'il est possible de le faire aussi pour la souris. Par exemple, je veux que lorsque je fais un clique droit sur le texte dans la barre de tâches, ça lance un script que j'ai fait maison. On procédera comme suit :
  apt-get source dwm
Cela nous télécharge quelques fichiers et un dossier, il nous suffit d'entrer dans celui-ci. Il contient les sources plus un dossier debian. On effectue les paramétrages que l'on souhaite. Puis on crée le paquet avec la commande :
dpkg-buildpackage -rfakeroot -uc -b
Ce qui va créer un fichier dwm_*.deb qu'on installe comme ça :
dpkg -i dwm_*.deb


Voila c'est installé. Personnellement je n'en suis qu'au début. Je posterais ici mes configurations.
* 1/On définit la commande du script. Je lui donne le petit nom "deloggue", car ça me sert à mettre fin à une session


Remarque : chez moi le fichier dwm-5.7.2/debian/desktop/dwm était mal fait. En effet pour être pris en compte par gdm il faut le renommer avec l'extension ".desktop".
<code lang="c"> static const char *deloggue[] = { "/home/xavier/Documents/Scripts/exit.sh", NULL }; </code>


== Configurer la barre de status ==
* 2/ J'appelle cette fonction ensuite avec le clic droit sur le texte.


Comme vous pouvez le voir sur la copie d'écran, il est possible d'afficher toutes sortes de choses dans la barre de dwm. Admettons que vous démarrez votre session via le fichier .xinitrc et startx , il faudra inclure ceci dans le .xinitrc
Dans la partie "souris", on aura donc : <code lang="c"> static Button buttons[] = { /* click event mask button function argument */ { ClkStatusText, 0, Button3, spawn, {.v = deloggue } }, }; </code> On peut aussi modifier les raccourcis déja existants. Je souhaitais que lorsque je fait un clic-milieu sur le titre d'une fenêtre, ça la ferme : <code lang="c"> static Button buttons[] = { /* click event mask button function argument */ { ClkWinTitle, 0, Button2, killclient, {0} }, }; </code> ''Voila, rien de bien compliqué en définitive. On définit d'abord la commande à éxécuter, en lui donnant un nom de fonction au choix. Ensuite, on peut lancer cette commande avec spawn, suivi du nom de la fonction.''
::while true; do
::  xsetroot -name "$( date +"%F %R" )"
::  sleep 1m    # Update time every minute
::done &
::exec dwm
Ici, on affiche l'heure. En somme, vous n'êtes limité que pas votre imagination sur ce que vous souhaitez afficher.
Bien entendu, si vous utilisez un gestionnaire connexion, il suffira de mettre à la place de Exec=dwm , Exec=/chemin/vers/script/de/lancement/de/dwm, script que vous aurez vous-même créé.


== Notes et astuces diverses pour la françisation ==
====Modifier la configuration pour les claviers français :====


Voici quelques astuces pour que dwm fonctionne bien avec votre clavier français.
=====Le problème des touches "chiffre":=====
Voici un config.h commenté afin de vous expliquer les petits détails, et pour que ça aille plus vite pour les fainéants :  


/* See LICENSE file for copyright and license details. */
Malheureusement, dwm est configuré par défaut pour les claviers anglais. Les chiffres au dessus des lettres de votre clavier ne seront pas lus comme tels, mais comme étant un "&amp;" pour le "1", un "é" pour le 2, un " pour le "3"... On va donc remédier à tout ça. Le code de nos touches se récupère très facilement avec xev. Il faut lancer xev en console, taper sur une touche, et lire ce qui est retourné. On va donc remplacer cette portion : <code lang="c"> TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) TAGKEYS( XK_4, 3) TAGKEYS( XK_5, 4) TAGKEYS( XK_6, 5) TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) </code> Par ceci : <code lang="c"> TAGKEYS( 0x26, 0) TAGKEYS( 0xe9, 1) TAGKEYS( 0x22, 2) TAGKEYS( 0x27, 3) TAGKEYS( 0x28, 4) TAGKEYS( 0x2d, 5) TAGKEYS( 0xe8, 6) TAGKEYS( 0x5f, 7) TAGKEYS( 0xe7, 8) </code> Ainsi que ceci : <code lang="c"> { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, </code> par : <code lang="c"> { MODKEY, 0xe0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, 0xe0, tag, {.ui = ~0 } },</code>
/* appearance */
static const char font[]            = "-*-terminus-*-*-*-*-12-*-*-*-*-*-iso10646-*"; // Changement de la police pour avoir les accents éèàù...
static const char normbordercolor[] = "#EDEDED";
static const char normbgcolor[]    = "#251C1A";
static const char normfgcolor[]    = "#D4D4D4";
static const char selbordercolor[]  = "#E2E2E2";
static const char selbgcolor[]      = "#D4D4D4";
static const char selfgcolor[]      = "#5B5453";
static const unsigned int borderpx  = 1;        /* border pixel of windows */
static const unsigned int snap      = 32;      /* snap pixel */
static const Bool showbar          = True;    /* False means no bar */
static const Bool topbar            = True;    /* False means bottom bar */


/* tagging */
=====Pour changer d'écran:=====
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };};


static const Rule rules[] = {
Il faut françiser la touche "." pour nos claviers. Donc, remplacer dans le config.h "period" par "semicolon", car pour nous, c'est le point-virgule : <code lang="c"> { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_semicolon, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_semicolon, tagmon, {.i = +1 } }, </code> Un config.h françisé est maintenant disponible ici : http://thuban.toile-libre.org/index.php/dwm-en-francais/
/* class      instance    title      tags mask    isfloating  monitor */
{ "Gimp",     NULL,       NULL,       0,           True,       -1 },
{ "Gajim",     NULL,       NULL,       1 << 6,            False,        -1 },
{ "MPlayer",     NULL,       NULL,       0,            True,        -1 },
{ "VLC",     NULL,       NULL,       0,            True,        -1 },
};


/* layout(s) */
===Ajouter un patch:===
static const float mfact      = 0.60; /* factor of master area size [0.05..0.95] */
static const Bool resizehints = True; /* True means respect size hints in tiled resizals */


static const Layout layouts[] = {
Vous pouvez ajouter toutes sortes de fonctionnalités à dwm, en ajoutant des patches. [http://dwm.suckless.org/patches Le site officiel regorge d'informations à ce sujet, et la configuration de chaque patch est expliqué.] De façon générale, pour appliquer un patch, il faudra faire ceci dans le dossier de dwm : <code>patch -p1 &lt; chemin/vers/le/patch.diff </code> Pour la version tarball (paquet debian inclus) <code>hg patch chemin/vers/le/patch.diff </code> Pour la version mercurial (hg). Personnellement, j'affectionne le patch [http://dwm.suckless.org/patches/bottom_stack bottom stack] afin d'avoir un agencement des fenetres vertical, et le patch [http://dwm.suckless.org/patches/nametag nametag] pour renommer les tags. Mais je pourrais en mettre plus c'est vrai.
/* symbol    arrange function */
{ "[]=",     tile },   /* first entry is default */
{ "><>",     NULL },   /* no layout function means floating behavior */
{ "[M]",      monocle },
};


/* key definitions */
===Avoir un menu pour la souris:===
#define MODKEY Mod4Mask
#define MODKEY2 Mod1Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY,                      KEY,      view,          {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask,          KEY,      toggleview,    {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask,            KEY,      tag,            {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },


/* helper for spawning shell commands in the pre dwm-5.0 fashion */
Il est bien entendu possible d'avoir un menu utilisable à la souris. Je vous invite à lire [http://thuban.toile-libre.org/index.php/un-menu-dans-dwm/ cette page], indiquant plusieurs façons possibles d'obtenir un menu.
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }


/* commands */
===Personnaliser la barre d'état:===
static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
static const char *termcmd[]  = { "urxvt", NULL };
static const char *monteson[]  = { "amixer", "set", "Master", "2dB+", "unmute", NULL };
static const char *baisseson[]  = { "amixer", "set", "Master", "2dB-", "unmute", NULL };
static const char *muteson[]  = { "amixer", "-q", "set", "Master", "toggle", NULL };
};
static Key keys[] = {
/* modifier                    key        function        argument */
{ MODKEY,                      XK_p,      spawn,          {.v = dmenucmd } },
{ MODKEY|ShiftMask,            XK_Return, spawn,          {.v = termcmd } },
    { 0,              0x1008ff13, spawn,          {.v = monteson } },
    { 0,  0x1008ff11, spawn,          {.v = baisseson } },
    { 0,  0x1008ff12, spawn,        {.v = muteson } },
{ MODKEY,                      XK_b,      togglebar,      {0} },
{ MODKEY,                      XK_j,      focusstack,    {.i = +1 } },
{ MODKEY,                      XK_k,      focusstack,    {.i = -1 } },
{ MODKEY,                      XK_h,      setmfact,      {.f = -0.05} },
{ MODKEY,                      XK_l,      setmfact,      {.f = +0.05} },
{ MODKEY,                      XK_Return, zoom,          {0} },
{ MODKEY,                      XK_Tab,    view,          {0} },
{ MODKEY|ShiftMask,            XK_c,      killclient,    {0} },
{ MODKEY,                      XK_t,      setlayout,      {.v = &layouts[0]} },
{ MODKEY,                      XK_f,      setlayout,      {.v = &layouts[1]} },
{ MODKEY,                      XK_m,      setlayout,      {.v = &layouts[2]} },
{ MODKEY,                      XK_space,  setlayout,      {0} },
{ MODKEY|ShiftMask,            XK_space,  togglefloating, {0} },
{ MODKEY,                      0xe0,      view,          {.ui = ~0 } }, //changement pour le 0
{ MODKEY|ShiftMask,            0xe0,      tag,            {.ui = ~0 } }, // changement pour le 0, 0xe0 est le code pour la touche 0
{ MODKEY,                      XK_comma,  focusmon,      {.i = -1 } },
{ MODKEY,                      XK_period, focusmon,      {.i = +1 } },
{ MODKEY|ShiftMask,            XK_comma,  tagmon,        {.i = -1 } },
{ MODKEY|ShiftMask,            XK_period, tagmon,        {.i = +1 } },
TAGKEYS(                        0x26,                      0) // La touche 1 a le code 0x26
    TAGKEYS(                        0xe9,                      1) //changement pour le 2...
    TAGKEYS(                        0x22,                      2)
    TAGKEYS(                        0x27,                      3)
    TAGKEYS(                        0x28,                      4)
    TAGKEYS(                        0x2d,                      5)
    TAGKEYS(                        0xe8,                      6)
    TAGKEYS(                        0x5f,                      7)
    TAGKEYS(                        0xe7,                      8) // changement jusqu'au 9
{ MODKEY|ShiftMask,            XK_q,      quit,          {0} },
};


/* button definitions */
Il est possible d'afficher ce que l'on veut dans la barre d'état. Cela se définit juste avant le lancement de dwm, donc selon les cas dans votre ~/.xinitrc ou autre. Dwm lira ce qui est passé en argument à xsetroot. Cela donnera quelque chose comme ça : <code> while true; do xsetroot -name "$( date +"%F %R" )" sleep 1m # Update time every minute done &amp; exec dwm </code> Qui affichera la date. Voici mon .xinitrc : <code> /home/xavier/Documents/Scripts/dmenu/dstatus.sh &amp; exec /usr/local/bin/dwm </code> Vous remarquerez que le lance un script dstatus.sh à part, pour plus de commodité. Ce script récupère plusieurs informations, et les renvoient dans le xsetroot. Ainsi, il y a l'heure, le débit internet, la chaque processeur, le volume sonore, des infos sur la batterie, ce que mpd joue...n peut notamment avoir une barre de progression pour mpd/mplayer/wget... Je met le script [http://pastebin.toile-libre.org/?show=457131 à disposition ici], n'hésitez pas à vous en inspirer!
/* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
/* click                event mask      button          function        argument */
{ ClkLtSymbol,         0,             Button1,       setlayout,     {0} },
{ ClkLtSymbol,         0,             Button3,       setlayout,      {.v = &layouts[2]} },
{ ClkWinTitle,          0,              Button2,        killclient,          {0} },
{ ClkClientWin,        MODKEY,        Button1,        movemouse,      {0} },
{ ClkClientWin,        MODKEY,        Button2,        togglefloating, {0} },
{ ClkClientWin,        MODKEY,        Button3,        resizemouse,    {0} },
{ ClkTagBar,            0,              Button1,        view,          {0} },
{ ClkTagBar,            0,              Button3,        toggleview,    {0} },
{ ClkTagBar,            MODKEY,        Button1,        tag,           {0} },
{ ClkTagBar,            MODKEY,        Button3,        toggletag,      {0} },
};


=='''Conclusion:'''==


Il y a un programme essentiel à utiliser dans dwm : j'ai nommé dmenu. Vous pourrez au fur et à mesure lire des exemples d'utilisation que je posterai [http://thuban.toile-libre.org/index.php/category/suckless/dmenu/ ici]. Cette page est à améliorer et il y a beaucoup de choses à préciser. Je vous invite donc à me faire part de vos remarques afin de l'améliorer. Je poste [http://thuban.toile-libre.org/wp-content/uploads/2010/11/config.h ici mon config.h] si vous voulez voir ma configuration.


Notez que le code des touches peut-être récupéré avec xev lancé en console, puis ensuite appuyez sur la touche en question.
== Liens externes ==
== Liens externes ==
* [http://forum.debian-fr.org/viewtopic.php?f=8&t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
* [http://forum.debian-fr.org/viewtopic.php?f=8&t=24798 Page de Misterfreeze pour installer proprement dwm sur sa debian]
Ligne 155 : Ligne 121 :
* http://wiki.debian.org/fr/Dwm
* http://wiki.debian.org/fr/Dwm
* [http://dwm.suckless.org Site officiel]
* [http://dwm.suckless.org Site officiel]
* [http://thuban.toile-libre.org/index.php/dwm-un-tiling-window-manager-pour-vos-besoins/ Article inspirant cette page ]


[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Gestionnaires_de_fenetres]]
[[Catégorie:Tillings]]
[[Catégorie:Tillings]]
159

modifications

Menu de navigation