DWM guide

Retour à un Window Manager (WM) pris en main par le passé puis abandonné faute du temps nécessaire à sa configuration : DWM. Sa particularité comparé à ses camarades (Wmfs2, i3 ou Spectrwm pour ne nommer que les trois sur lesquels ma patience fut éprouvée) est son minimalisme : 2000 lignes de code en C, une rapidité à toute épreuve, et pas mal de cambouis dans lequel pataugera le window-tiler débutant.

  1. Installation
  2. Personnalisation
  3. Applications GTK
  4. Terminal URxvt
  5. Screenlocker

Environnement final, sous deux coloris :

dwm_autumn04

dwm02

Le tiling, ou “mosaïque”, est un mode d’affichage qui consiste à coller les unes aux autres toutes les fenêtres ouvertes : aucun pixel de l’écran n’est perdu. Pratique pour afficher de nombreuses données simultanément, comparer des documents et naviguer quasi exclusivement au clavier.

  • Guide français très complet [lien]
  • Guide français pour un DWM personnalisé [lien]
  • Guide anglais plus succinct mais utile [lien]

On commence par l’installation des librairies nécessaires puis on récupère le programme (ainsi que Lightdm, nitrogen, conky, rxvt-unicode et tout autre soft utile) ainsi que ses sources pour personnalisation :

apt-get install libx11-dev libxinerama-dev
apt-get install dwm lightdm nitrogen conky

apt-get source dwm
cd dwm/
sudo make clean install

Les liens ci-dessus explicitent le fonctionnement de la chose, pour faire simple, le WM doit être recompilé à chaque modification : sa customisation se fait sur le fichier dwm/config.h, aprés quoi on recompile avec sudo make clean install et redémarre la session. La moindre erreur mentionnée lors de compilation doit être corrigée.

dwm04

# Installation et paramétrage

Pour une installation sur machine Debian/Ubuntu multisessions avec Lightdm en login manager :

  • Installer DWM, l’entrée Lightdm est automatiquement ajoutée
  • Créer un fichier nommé .startdwm dans /home/user/ ou placer les options à démarrer avec DWM : un wallpaper que vous aurez choisi avec Nitrogen, un démon du terminal URxvt, le NetworkManager et Conky qui sera configuré aprés :
#!/usr/bin/env bash

nitrogen --restore &        # wallpaper
urxvtd -q -o -f              # URxvt daemon
nm-applet &                 # NetworManager
sleep 1 &                   # conky
conky | while read -r; do xsetroot -name "$REPLY"; done &
exec dwm
  • En faire un script exécutable avec : chmod 755 .startdwm
  • Editer /usr/share/xsessions/dwm.desktop pour pointer sur le script créé :
[Desktop Entry]
Encoding=UTF-8
Name=Dwm
Comment=Dynamic window manager
Exec=/home/user/.startdwm
Icon=dwm
Type=Application
  • Conky étant installé nous allons l’utiliser pour l’insérer dans la statusbar de DWM. Créez le fichier ~/.conkyrc :
out_to_console yes
out_to_x no
background no
update_interval 2
total_run_times 0
use_spacer none

TEXT
CPU: $cpu% | MEM: $mem | HD: ${fs_used_perc /}% | BAT: ${battery_percent}% | ${wireless_essid eth1}: ${downspeed eth1}/s | VOL: ${exec amixer get Master -M | grep -oE "[[:digit:]]*%"} | ${time %H:%M }

L’installation est terminée : redémarrez X en quittant votre session et la relançant. Le raccourci est Mod+Shift+q. Vous n’avez plus qu’à choisir la session DWM dans Lightdm. Pour les utilisateurs de SLiM ou de startx, les réglages se feront dans votre ~/.xinitrc.

dwm# Personnalisation de DWM

Vous avez récupéré les sources du programme via apt-get source dwm, ne reste qu’à le modeler à votre image.

cd path/to/dwm/ # dans /home/user/ par exemple
sudo nano config.h

Le fichier comporte tous les paramétrages : couleurs, polices, raccourcis, addons etc.

  • Polices : DWM utilise les fonts Bitmaps, à visionner avec xfontsel pour récupérer le code à inscrire dans config.h. Installez les paquets xfonts-* pour plus de choix. J’utilise le paquet Artwiz et sa police Snap. N’oubliez pas de fc-cache -fv.
"-artwiz-snap-*-*-*-*-10-*-*-*-*-*-*-*"
  • Couleurs et bordures : couleur en héxadécimal, bordures en pixels, la partie de la configuration.
  • Tags : nommez les tags à votre goûts, ils resteront numérotés de 1 à 9. Pensez à modifier les raccourcis clavier en Azerty : 1 = XK_ampersand etc.
  • Règles : vous pouvez affecter un tag à chaque application, définir sa façon de s’afficher par défaut (tile, float…)
  • Raccourcis : créez vos lanceur d’applications (navigateur, terminal etc.) et apprenez à naviguer au clavier.
  • Au passage passez en False le resizehints pour améliorer le tiling des terminaux.
static const Bool resizehints = False;

Aprés modification du fichier : sudo make clean install, puis redémarrez X.

Un grand nombre de patches est mis à disposition sur le site de DWM. Attention, tous ne s’appliquent pas avec bonheur, et vous vous retrouverez à patcher votre dwm.c à la main, en supprimant les lignes précédées de “-” et cherchant à placer celles précédées de “+”. Sauvegardez votre dossier avant de patcher, en local ou github. En cas de problèmes, voyez du côté des forums Crunchbang, toujours riches en infos.

La théorie est simple, téléchargez le fichier.diff dans votre répertoire et effectuez :

$ patch -p1 < nomdupatch.diff

Parmi les indispensables qui s’appliquent sans ciller à un dwm.c propre : Bottom Stack pour agencer les fenêtres horizontalement. En bref :

patch -p1 < dwm-6.0-bstack.diff
sudo nano config.h

Ajoutez les configurations et raccourcis nécessaires aux deux nouveaux layouts :

static const Layout layouts[] = {
    /* symbol     arrange function */
    { "[-]",      bstack },
    { "[=]",      bstackhoriz },
};

static Key keys[] = {
    { MODKEY,     XK_c,      setlayout,      {.v = &layouts[3]} },
    { MODKEY,     XK_x,      setlayout,      {.v = &layouts[4]} },

Autre amélioration utile si vous êtes sur portable : activer les touches multimédia, à commencer par les touches de volume. Ajoutez deux nouvelles commandes à votre config.h et leurs raccourcis clavier :

static const char *upvol[] = { "amixer", "set", "Master", "3+", NULL};
static const char *downvol[] = { "amixer", "set", "Master", "3-", NULL};

static Key keys[] = {
    { MODKEY|ShiftMask,   XK_a,      spawn,          {.v = downvol} },
    { MODKEY|ShiftMask,   XK_z,      spawn,          {.v = upvol} },

L’utilisation des touches réelles, façon XF86AudioLowerVolume et autres, semble difficile sur Mac, voir ici pour infos. Ce contournement fait l’affaire.

dwm03# Apparence des applications

Ne reste qu’à améliorer le rendu des applications GTK2 et 3. Sur certaines configurations l’utilisation de LXappearance suffit, sur d’autres il est nécessaire de passer par une configuration manuelle, assez simple :

cd ~/

nano .gtkrc-2.0 
    include '/home/raphael/.gtkrc.mine'

nano .gtkrc.mine
    gtk-theme-name = "Greybird"
    gtk-icon-theme-name = "Faenza-Darkest"
    gtk-font-name = "Deja Vu 9"

nano ~/.config/gtk-3.0/settings.ini
    gtk-theme-name=Greybird
    gtk-icon-theme-name=Faenza-Darkest
    gtk-font-name=Sans 9

Option n°2 : si vous êtes en multisessions avec Gnome ou Xfce, lancez leur démons respectifs dans votre fichier de démarrage .startdwm puis réglez les options d’interface avec leurs outils dédiés :

gnome-settings daemon &
# restart x
# lancez gnome-control-center

# Peaufinez votre terminal URxvt

Pour finir attaquez-vous à URxvt, le plus rapide des terminaux. Apparences et fonctions se configurent via le fichier .Xdefaults de votre répertoire utilisateur.Deux addons perl sont nécessaires à la gestion des onglets et du copier-coller.

Les addons perl sont à placer dans /usr/lib/urxvt/perl et appeler par leur seul nom dans .Xdefaults. Exemple :

! Addons
URxvt.perl-ext-common:    default,tabbed,clipboard

! urxvt tabs settings:
URxvt.tabbed.autohide:    no
URxvt.tabbed.new-button:  yes
URxvt.tabbed.title:       yes
! back + separateur & texte
URxvt.tabbed.tabbar-fg: 10
URxvt.tabbed.tabbar-bg: 8
! texte + back
URxvt.tabbed.tab-fg:    0
URxvt.tabbed.tab-bg:    2

! Fausse transparence
!URxvt.inheritPixmap:     true
!URxvt.tintColor:     #2E3436
URxvt.transparent:    true
URxvt.shading:        30

! Clipboard (selection = copy)
URxvt.keysym.Shift-Control-V: perl:clipboard:paste
URxvt.iso14755: False

# Bravo, c’est fini.

Toutes les ressources mentionnées dans l’article sont sur Github :

Et un lien indispensable pour les explorateurs virtuels : #! – 30 Window Managers in 30 days.
dwm03

# Update : ajout d’un screenlock


DWM a développé l’outil adéquat : http://tools.suckless.org/slock

Attention, aucune fioriture, il s’agit d’un écran noir : taper le mot de passe à l’aveugle et la session réapparaît.

Télécharger Slock sur DWM et installer Xautolock

apt-get install xautolock
cd slock/
sudo make clean install

Tester dans un terminal : slock, entrer le mot de passe pour sortir.

Pour ajouter un lock automatique après inactivité, éditer le startup script (ici pour activation après 10 minutes d’inactivité) :

xautolock -time 10 -locker slock
Advertisements

One thought on “DWM guide

Comments are closed.

Create a free website or blog at WordPress.com.

Up ↑