Préambule
DWM est un gestionnaire de fenêtre simple, léger et rapide. Il appartient au projet http://suckless.org. Il utilise la méthode du “tilling” pour afficher les fenêtres sur l’écran, c’est à dire qu’il utilise au mieux l’espace disponible. Enfin, il se configure en modifiant directement le fichier source (en C) et se compile en un seul binaire.
Screenshots
Installation
Sur Archlinux, si vous voulez tester DWM, il suffit d’installer le paquet dwm et dmenu (optionnel) :
yaourt -S dwm yaourt -S dmenu
Cependant, si vous voulez configurer DWM, il est préférable de télécharger les sources via HG et de compiler à la main… Je vous rassure tout de suite : c’est très simple et rapide!
Installez hg :
yaourt -S hg
Placez vous dans le répertoire de votre choix et tapez la commande suivante pour récupérer la version actuelle de DWM :
hg clone http://code.suckless.org/hg/dwm
Hg va télécharger la version à jour de DWM dans le répertoire dwm/. Une fois le téléchargement fini, vous allez pouvoir commencer à configurer DWM (voir chapitre suivant).
Une fois votre configuration terminée, pour compiler DWM, il suffit de lancer la commande :
make clean
Enfin vous pouvez installer DWM avec la commande :
sudo make install
Lancement de DWM via xinitrc
Pour lancer DWM via le fichier ~/.xinitrc, il suffit d’appeler DWM de cette façon :
while true
do
xsetroot -name "`date +'%d/%m/%Y %k:%M'`"
sleep 1
done &
bgs images/wallpapers/background.png &
exec /usr/local/bin/dwm
Dans la boucle while true / do { code } / done, on exécute cette commande toutes les secondes :
xsetroot -name "`date +'%d/%m/%Y %k:%M'`"
Elle permet de remplir la barre de statut de DWM (en haut à gauche) avec l’heure. Dedans on peut par exemple afficher le réseau wifi et sa qualité, l’état de la batterie, etc.
Ensuite, la ligne suivante appelle bgs pour afficher un fond d’écran puis on appelle DWM (installé dans /usr/local/bin si compilé à la main).
Configuration
Pour configurer l’aspect, les raccourcis clavier ou encore les fonctions, tout ce situe dans le fichier config.h.
Pour configurer le thème, c’est tout au début du fichier, on déclare les constantes suivantes :
/* appearance */
#define SHOWBAR True /* False means no bar */
#define TOPBAR True /* False means bottom bar */
static const char font[] = "-*-*-medium-*-*-*-14-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#4d4d4d";
static const char normbgcolor[] = "#4d4d4d";
static const char normfgcolor[] = "#7f7f7f";
static const char selbordercolor[] = "#aeeb3d";
static const char selbgcolor[] = "#7f7f7f";
static const char selfgcolor[] = "#aeeb3d";
static unsigned int borderpx = 2; /* border pixel of windows */
static unsigned int snap = 32; /* snap pixel */
Par défaut, DWM utilise le terminal xterm… Si vous aimez les jolis desktop, vous pouvez installer urxvt et ainsi profiter de la transparence et plein d’autres options futiles mais sympa.
Dans le fichier config.h, il faut soit templacer le shortcut qui lance xerm par celui pour urxvt ou alors en ajouter un nouveau (j’ai choisit Ctrl + ModKey + Return ) :
/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
static const char *termcmd[] = { "uxterm", NULL };
static const char *rxvtcmd[] = { "urxvt", NULL };
On déclare donc dans la section /* commands */ un pointeur vers une constante statique *rxvtcmd[] puis dans la sectiondes shortcuts on ajoute une ligne (en vert) :
static Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY|ControlMask, XK_Return, spawn, {.v = rxvtcmd } },
{ 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_Escape, 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, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~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( 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,
{ MODKEY|ShiftMask, XK_q, quit, {0} },
};
Enfin il faut modifier le fichier .Xdefaults pour passer les paramétres à urxvt pour la transparence :
! ! .Xdefaults : X configuration by Julien Pecqueur ! ! GENERALITES POUR XTERM xterm*font: -*-*-medium-*-*-*-14-*-*-*-*-*-*-* xterm*visualbell: true xterm*cursorblink: true xterm*background: #333333 xterm*foreground: white ! GENERALITES POUR URXVT ! +sb -tr -fade 20 -tint black -sh 50 -fg white -bg black URxvt*font: -*-*-medium-*-*-*-14-*-*-*-*-*-*-* URxvt*fade: 20 URxvt*tint: black URxvt*background: #333333 URxvt*foreground: white URxvt*transparent: on URxvt*shading: 50 URxvt*scrollBar: off URxvt.urlLauncher: firefox URxvt.matcher.button: 2 URxvt.perl-ext-common: matcher URxvt.cursorBlink: true URxvt.visualBell: true


