doc

<h1 id="header">
    <a href="#"  id="logo">
         <img src="../logo_noDE.png" alt=".:: noDE ::." id="logo"/>
    </a>
</h1>


<h2>noDE -- <em>spectrwm</em> -- doc</h2>
<p>
    <a href="https://opensource.conformal.com/wiki/spectrwm">spectrwm</a> est un gestionnaire de fenêtres de type tiling inspiré par xmonad et dwm. spectrwm a été écrit par des hackers pour des hackers et tente de rester rapide, léger et compact.<br>
    spectrwm est en constant développement et demande encore quelques améliorations, mais ça ne l'empêche pas d'être un gestionnaire de fenêtres très rapide et hautement configurable.
</p>
<ul>
    <li><a href="#specificites">spécificités</a></li>
    <li><a href="#installation">installation</a></li>
    <li><a href="#lancement">lancement</a></li>
    <li><a href="#configuration">configuration</a></li>
    <li><a href="#raccourcis_clavier">raccourcis clavier</a></li>
</ul>

<h2 class="sectionedit2" id="specificites">spécificités</h2>
<ul>
    <li>support du multi écran grâce à xrandr &amp; xinerama</li>
    <li>navigation à la souris ou au clavier</li>
    <li>status bar personnalisable</li>
    <li>fichier de configuration en mode texte</li>
    <li>rechargement de la configuration sans quitter la wm (on-the-fly-reloading)</li>
    <li>lanceur de menu (dmenu)</li>
    <li>disposition tile/bottomstack/fullscreen</li>
    <li>manipulation des clients master/stack/screen facilité</li>
    <li>support des clients libres</li>
    <li>définition possible de “régions” sur l'écran</li>
    <li>personnalisation des raccourcis et lanceurs</li>
    <li>utilisation des “quirks”</li>
    <li>support multi-<abbr title="Operating System">OS</abbr>(*BSD, Linux, OSX, Windows/cygwin)</li>
</ul>

<h2 id="installation">installation</h2>
<p>spectrwm est présent dans les dépôts Debian, ou sur les sources git.</p>
<ul>
    <li>installation depuis les dépôts :<pre><code class="w3-code">apt-get install spectrwm</code></pre></li>
    <li>installation depuis les sources git :<pre><code>git clone git://opensource.conformal.com/spectrwm.git

cd spectrwm/linux make make install

<h2 id="lancement">lancement</h2>
<p>spectrwm se lance simplement depuis votre ~/.xinitrc grâce à :</p>
<pre><code class="w3-code">#launch window manager

exec spectrwm

<h2 id="configuration">configuration</h2>
<p>
    la configuration de spectr/scrotwm passe par l'édition de son fichier de configuration ~/spectrwm.conf ou ~/.scrotwm.conf selon la version installée.<br>
    on commence par récupérer le fichier de conf donné en exemple :
</p>
<code>cp /etc/scrotwm.conf ~/.scrotwm.conf</code><br/>
ou<br/>
<code>cp ~/spectrwm/spectrwm.conf ~/.spectrwm.conf</code>
<p>vous pouvez aussi récupérer le fichier de raccourcis adapté à votre clavier (Debian/Sources) :</p>
<code>cp /usr/share/doc/spectrwm/examples/scrotwm_fr.conf ~/.scrotwm_fr.conf</code><br/>
ou<br/>
<code>cp ~/spectrwm/spectrwm_fr.conf ~/.spectrwm_fr.conf</code>
<p>la syntaxe du fichier de conf est du type &lt;keyword&gt; = &lt;setting&gt;. ex :</p>
<pre>color_focus = red</pre>
<p>les lignes précédées d'un "#" sont des commentaires. si vous désirez afficher un "#", vous devez inscrire <pre>"\#"</pre>.</p>

<h3 id="options_de_configuration">options de configuration</h3>
<table class="inline">

optiondescription autorun lance une application au démarrage. format ws[<idx>]:application, ex: ws[2]:xterm lance xterm dans l'espace de travail 2. bar_action script externe à lancer pour un affichage dans la status bar. bar_at_bottom place la status bar en bas de l'écran. bar_border[x] couleur de la bordure de la status bar sur l'écran x. bar_border_unfocus[x] couleur de la bordure de la status bar de la région en arrière plan sur l'écran x. bar_border_width épaisseur de la bordure de la status bar. pas de bordure si 0. bar_color[x] couleur de fond de la status bar sur l'écran x. bar_enabled afficher la barre. bar_enabled_ws[x] afficher la barre sur l'espace de travail x; par defaut 1. bar_font police utilisée pour la status bar. format Xft ou X Logical Font Description(XLFD). vous pouvez spécifier plusieurs polices séparées par “,”. si une des polices est en XFT, elle sera utilisée par défaut. notez que dmenu n'utilise pas les polices XFT. ex: bar_font = --profont-medium----11-------,Terminus:pixelsize=14,--clean-medium----12------- . bar_font_color[x] couleur de la police de la status bar pour l'écran x. bar_format définit le format de la status bar en écrasant toutes les autres options. le format utilise la syntaxe strftime(3). séquences disponibles en fin de tableau. bar_justify alignement du texte de la status bar. valeurs: left, center, et right. bind[x] associer une touche au programme x. voir la section raccourcis plus bas. border_width épaisseur de la bordure des clients. pas de bordures si 0. clock_enabled affiche l'heure dans la status bar. color_focus couleur de la bordure du client ayant le focus. color_unfocus couleur de la bordure des clients en arrière plan. dialog_ratio redimensionnement des fenêtres type dialog. ex: 0.6 = 60% de l'écran. disable_border n'affiche pas la bordure si la status bar est masquée et qu'il n'y a qu'un seul client. focus_close dirige le focus à la fermeture d'un client. valeurs: first, next, previous (défaut) et last. focus_close_wrap donne le focus au dernier clients lors de la fermeture d'un client. focus_default client ayant le focus par défaut. valeurs: first et last (défaut). focus_mode mode du focus. valeurs: default, follow et manual. keyboard_mapping charge une disposition de clavier. voir la section KEYBOARD MAPPING FILES plus bas. layout sélection de la disposition par défaut. valeurs: vertical, vertical_flip, horizontal, horizontal_flip et fullscreen. modkey touche de modification. Mod1=ALT, Mod4=windows. program[p] définir une action “p” à lancer. voir la section PROGRAMS plus bas. quirk[c:n] ajoute une règle “quirk” pour le client de class ‘c’ et nommé ‘n’. voir la section QUIRKS plus bas. region définir des régions sur l'écran, en écrasant toute auto-détection. format: screen[<idx>]:WIDTHxHEIGHT+X+Y, ex: screen[1]:800×1200+0+0. vous pouvez aussi couvrir deux écrans: screen[1]:2048×768+0+0. region_padding espace libre entre les régions. spawn_position placement des nouveaux clients. valeurs: first, next, previous et last (default). stack_enabled afficher la disposition dans la status bar. term_width définir une taille moinimale pour xterm (le seul supporté pour le moment). tile_gap espace libre entre les clients. title_class_enabled afficher la class du client dans la status bar title_name_enabled afficher le titre du client dans la status bar. urgent_enabled notification des clients urgents. verbose_layout précise l'affiche de la disposition dans la status bar. window_name_enabled affiche le nom du client, limité à 64 caractères. workspace_limit définir le nombre d'espace de travfail disponible. Minimum=1, maximum=22, défaut=10.

<h4>séquences de la barre</h4>
<table class="inline">

Character sequenceReplaced with +< un espace +A résultat d'un script externe +C ‘Window class’ du client +D nom de l'espace de travail +F indicateur de client libre +I index des espaces de travail +N numéro de l'écran +M nombre de clients minimisés +P ‘Window class’ et titre du client séparés par “:” +S disposition +T titre du client +U indicateur d'application urgente +V version du programme +W nom du client ++ un ‘+’

toutes les séquences sont limitées en nombre de caractères, par exemple +64A.

<h3 id="keyboard_mapping_files">keyboard mapping files</h3>
<p>
    <em>Keyboard mapping files</em> sont des fichiers de configuration reprenant les raccourcis claviers adaptés à votre disposition.<br/>
    ces fichiers peuvent être chargés dans spectrwm.conf avec l'option 'keyboard_mapping“. ces fichiers sont situés dans les sources ou, si vous avez installé spectrwm depuis Debian, dans /usr/share/doc/spectrwm/examples/.
</p>
<pre>spectrwm_cz.conf     Czech Republic keyboard layout

spectrwm_es.conf Spanish keyboard layout spectrwm_fr.conf French keyboard layout spectrwm_fr_ch.conf Swiss French keyboard layout spectrwm_se.conf Swedish keyboard layout spectrwm_us.conf United States keyboard layout

<h3 id="quirks_aka_regles">quirks aka règles</h3>
<p>spectrwm peut définir des “quirks” ou règles à certains clients selon leur class et leur titre. voici les règles par défaut :</p>
<pre>Firefox-bin:firefox-bin                 TRANSSZ

Firefox:Dialog FLOAT Gimp:gimp FLOAT + ANYWHERE MPlayer:xv FLOAT + FULLSCREEN + FOCUSPREV OpenOffice.org 2.4:VCLSalFrame FLOAT OpenOffice.org 3.1:VCLSalFrame FLOAT pcb:pcb FLOAT xine:Xine Window FLOAT + ANYWHERE xine:xine Panel FLOAT + ANYWHERE xine:xine Video Fullscreen Window FULLSCREEN + FLOAT Xitk:Xitk Combo FLOAT + ANYWHERE Xitk:Xine Window FLOAT + ANYWHERE XTerm:xterm XTERM_FONTADJ

syntaxe des règles :

vous pouvez ajouter ou enlever des règles avec la syntaxe :

quirk[<class>:<name>] = <quirk> [+ <quirk> …]

par exemple :

quirk[MPlayer:xv] = FLOAT + FULLSCREEN + FOCUSPREV
quirk[pcb:pcb] = NONE  # enlève la règle par défaut

spectrwm attribue également des règles automatiques pour certains clients en se basant sur les propriétés NET_WM_WINDOW_TYPE* :

NET_WM_WINDOW_TYPE_DOCK             FLOAT + ANYWHERE
NET_WM_WINDOW_TYPE_TOOLBAR          FLOAT + ANYWHERE
NET_WM_WINDOW_TYPE_UTILITY          FLOAT + ANYWHERE
NET_WM_WINDOW_TYPE_SPLASH           FLOAT
NET_WM_WINDOW_TYPE_DIALOG           FLOAT

<p><strong>note</strong> les règles spécifiés dans le ~/.spectrwm.conf écrasent les règles par défaut.</p>

<h3 id="normes_ewmh">normes EWMH</h3>
<p>
    spectrwm respecte partiellement les normes EWMH (Extended Window Manager Hints). vous pouvez utiliser wmctrl et xdotool pour envoyer des messages sur certains clients.<br>
    <strong>identification du client</strong> avec _NET_ACTIVE_WINDOW, ce qui permet d'afficher le nom de ce client grâce à xprop et grep :
</p>
<pre><code>WINDOWID=`xprop -root _NET_ACTIVE_WINDOW | grep -o "0x.*"`</code>

xprop -id $WINDOWID WM_NAME | grep -o “\”.*\“”

un client peut obtenir le focus en envoyant un message de type NET_ACTIVE_WINDOW. par exemple, avec wmctrl(1) pour lancer le message (avec ID client = 0x4a0000b) :

wmctrl -i -a 0x4a0000b

fermeture d'un client avec un message de type NET_CLOSE_WINDOW :

wmctrl -i -c 0x4a0000b

libère ou tile le client en ajoutant/enlevant NET_WM_STATE_ABOVE du NET_WM_STATE. on envoi un message du type NET_WM_STATE. code pour libérer/attacher un client :

wmctrl -i -r 0x4a0000b -b toggle,NET_WM_STATE_ABOVE

déplacement/redimensionnement d'un client libre :

wmctrl -i -r 0x4a0000b -e 0,100,50,640,480

déplace le client (100,50) et le redimensionne (640×480). les messages de type _NET_MOVERESIZE_WINDOW sont ignorés par les clients attachés.

<h2 id="raccourcis_clavier">raccourcis clavier</h2>
<h3 id="programs">programs</h3>
<p>
    spectrwm vous permet de spécifier des séquences d'actions à associer à des combinaisons de touches.<br>
    les programmes par défaut :
</p>
<pre>term             xterm

screenshot_all screenshot.sh full screenshot_wind screenshot.sh window lock xlock initscr initscreen.sh menu dmenu_run -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_border -sf $bar_color

synatxe des programmes :

program[<name>] = <progpath> [<arg> [… <arg>]]

avec :

les variables suivantes seront reconnues dans les programmes à lancer :

Exemple:

program[ff] = /usr/local/bin/firefox http://spectrwm.org/
bind[ff] = Mod+Shift+b # Mod+Shift+B lance firefox

pour effacer le programme précédent:

bind[] = Mod+Shift+b
program[ff] =

<h3 id="bindings">bindings</h3>
<p>M=Alt, S=Shift, M1=bouton1, M2=bouton2, M3=bouton3</p>
<table class="inline">

action de la sourisdescription M1 donne le focus M-M1 déplace le client M-M3 redimensionne le client M-S-M3 redimensionne le client depuis le centre

action du clavierprogram/fonctiondescription
M-S-<Return> term ouvre le programme définit par ‘term’
M-p menu lance la commande de ‘menu’
M-S-q quit quitte spectrwm
M-q restart relance spectrwm
M-<Space> cycle_layout change la disposition
M-S-<&gt; flip_layout échange la zone master avec le stack
M-S-<Space> stack_reset rétablit la proportion stack/master
M-h master_shrink réduit la taille du master
M-l master_grow agrandit la taille du master
M-, master_add ajoute un client dans le master
M-. master_del enlève un client du master
M-S-, stack_inc ajoute un client dans le stack
M-S-. stack_dec enlève un client du stack
M-<Return> swap_main échange le client avec le master
M-j, M-<TAB> focus_next donne le focus au client suivant
M-k, M-S-<TAB> focus_prev donne le focus au client précédent
M-m focus_main donne le focus au master
M-S-j swap_next échange le client avec le client suivant
M-S-k swap_prev échange le client avec le client précédent
M-b bar_toggle affiche/masque la barre
M-S-b bar_toggle_ws affiche/masque la bar sur l'espace de travail courant
M-x wind_del ferme le client
M-S-x wind_kill tue le client
M-<1-9,0,F1-F12> ws<1-22> rejoint l'espace de travail <1-22>
M-S-<1-9,0,F1-F12> mvws<1-22> envoi le client sur l'espace de travail <1-22>
M-<Keypad 1-9> rg<1-9> rejoint la region <1-9>
M-S-<Keypad 1-9> mvrg<1-9> envoi le client dans la region <1-9>
M-<Right> ws_next rejoint l'espace de travail occupé suivant
M-<Left> ws_prev rejoint l'espace de travail occupé précédent
M-<Up> ws_next_all rejoint l'espace de travail suivant
M-<Down> ws_prev_all rejoint l'espace de travail précédent
M-a ws_prior rejoint le dernier espace de travail visité
M-S-<Right> rg_next rejoint la region suivante
M-S-<Left> rg_prev rejoint la region précédente
M-s screenshot_all capture d'écran
M-S-s screenshot_wind capture du client
M-S-v version affiche la version dans la barre
M-t float_toggle libère/attache le client
M-S-<Delete> lock vérouille l'écran
M-S-i initscr script défini par ‘initscr’
M-w iconify minimise
M-S-w uniconify restaure
M-S-r always_raise permettre aux clients attaché de passer au-dessus des clients libres
M-v button2 simule un clic central
M– width_shrink réduit la largeur du client libre
M-= width_grow augmente la largeur du client libre
M-S– height_shrink réduit la hauteur du client libre
M-S-= height_grow augmente la hauteur du client libre
M-[ move_left déplace le client libre sur la gauche
M-] move_right déplace le client libre sur la droite
M-S-[ move_up déplace le client libre vers le haut
M-S-] move_down déplace le client libre vers le bas
M-S-/ name_workspace nomme l'espace de travail courant
M-/ search_workspace recherche un espace de travail
M-f search_win recherche un client dans l'espace de travail courant

<p>syntaxe des raccourcis:</p>
<pre>bind[&lt;action&gt;] = &lt;keys&gt;</pre>
<ul>
    <li> &lt;action&gt; une des actions décrites ci-dessus (ou vide pour effacer une règle)</li>
    <li> &lt;keys&gt; une touche de modification (MOD, Mod1, Shift, etc.) et une ou plusieurs touches (b, space, etc.), séparés par un "+".</li>
</ul>
<p>exemple:</p>
<pre>bind[reset] = Mod4+q # associer la touche 'windows + q' à l'action 'reset'

bind[] = Mod1+q # effacer la règle précédente

pour spécifier la touche de modification par défaut, utiliser ‘MOD’. plusieurs raccourcis peuvent être associés à la même action.
pour associer les caractères spéciaux, utiliser xev afin d'identifier la touche.