Skip navigation

Bon, dans un article précédent, je vous parlais des gestionnaires de fenêtres en mode pavant. Aujourd’hui, je vais en décortiquer un plus en profondeur: RatPoison.

Comme son nom ne l’indique pas, Ratpoison a la particularité de se passer entièrement de ce cher surmulot tant affectionné des amateurs de clicodromes, contrairement à Awesome, Ion3, WMII et WMFS, qui permettent tous d’interagir avec les fenêtres soit au clavier soit dans une certaine mesure avec le rongeur. Avec Ratpoison, que nenni : rien, absolument rien ne se fait à la souris (et si vous utilisez Vimperator pour Firefox, ou uzbl, conkeror et, pourquoi pas, w3m (j’y reviendrai aussi dans un prochain article) vous pouvez même la débrancher: elle ne vous servira à rien, sauf si vous jouez, bien sûr 🙂 ).

De plus, Ratpoison est très minimaliste: pas de décorations de fenêtre, pas de barre de status – dzen2 fait parfaitement l’affaire dans ce cas -, pas de systray (mais ça on s’en fiche… ou pas, auquel cas trayer devrait vous combler), et, attention les mirettes, même pas de bureaux virtuels, qui sont gérés par rpws (je vous laisse deviner ce que cet acronyme signifie), un programme externe. Le fichier de conf’ est à la mesure de ce WM extrêmement simple (mais pas simpliste): à la fois simple et complet.

I- Les commandes de base.

Les commandes de base de Ratpoison sont toutes axées sur le concept (similaire à screen et tmux) du caractère d’échappement, Ctrl-t dans le cas de Ratpoison. Je vais l’abréger C-t par la suite, comme C-a pour screen et C-b pour tmux. Il est bien sûr possible de le modifier dans le fichier de configuration ~/.ratpoisonrc, personnellement j’utilise la touche Meta/Super_L/Windoze gauche de mon clavier.

Tout comme screen, donc, lorsque vous rentrez le caractère d’échappement, vous pouvez ensuite taper une commande. Dans le cas de ratpoison, le curseur de la souris devient un carré blanc, entouré de noir, signifiant que ratpoison est passé en mode « réception de commande ». Mais quelles sont ces commandes?

Commençons par lancer un terminal: C-t, puis c. Un terminal (par défaut ou configurable, là encore, dans votre .ratpoisonrc) apparaît alors, remplissant tout l’écran. Si vous en lancez un nouveau, contrairement, par exemple, à Awesome, l’espace de travail ne se divise pas: les deux terminaux coexistent dans la même frame, et comme pour screen, C-t p/n vous permettent de cycler de l’un à l’autre. Et c’est là que ça devient fort, parcequ’il s’agit d’une sorte d’onglet.

Maintenant, nous allons voir comment diviser une frame en plusieurs frames:

C-t s va diviser horizontalement la frame en deux frames de tailles égales.

C-t S fait la même chose, mais verticalement.

Bien sûr, rien ne vous empêche de rediviser une frame en plusieurs autres frames, à l’infini – dans les limites de la lisibilité tout de même 🙂

Pour cycler entre les frames, C-t touche_fléchée permet de passer à la frame du dessus, dessous, gauche, droite, etc. Il y a aussi d’autres moyens de cycler entre les frames. C-t w vous affiche la liste des fenêtres ouvertes, précédées d’un numéro, et avec leur nom.

C-t numéro_de_la_fenêtre vous permet alors de passer directement à la fenêtre « numéro ». Par exemple, C-t 0 vous amène à la fenêtre numéro 0, C-t 1… etc

C-t A (a majuscule!) vous permet de renommer une fenêtre (attention, une fenêtre et une frame sont deux choses différentes 😉 ). C-t ‘ vous permet de passer d’une fenêtre à l’autre en tapant les premiers caractères de son nom.

C-t r vous permet de redimensionner une frame, les autres s’adaptant à vos modifications. Pour celà, une fois C-t r entré, déplacez les bords de la fenêtre en utilisant les touches fléchées, puis appuyez sur Entrée lorsque le résultat vous convient, ou Esc pour annuler.

C-t R détruit une frame (mais pas les fenêtres qu’elle contient: elles sont assignées à la frame précédente)

C-t ! permet de lancer une application, exemple : C-t !firefox.

C-t : permet de lancer une commande de ratpoison, j’y reviendrai par la suite, c’est notamment comme cela que vous sauvegarderez vos layouts.

C-t Ctrl-touches fléchées: permet d’échanger les positions de deux frames.

Il y a de nombreuses autres commandes de base, par exemple, C-t a affiche une horloge, C-t k kille une fenêtre (et son contenu 😉 ), etc… De plus, vous pouvez créer vos propres binds dans le fichier de configuration, sur lequel nous allons nous pencher.

II- Configuration de ratpoison: le fichier ~/.ratpoisonrc.

Bon, vous commencez à saisir un peu le fonctionnement de ratpoison, on va donc se pencher un peu sur sa configuration, et en premier lieu, lui rajouter des bureaux virtuels, parcequ’on le vaut bien, merde!

Ouvrez votre éditeur de texte préféré, vim par exemple (mais alors, vraiment par exemple, hein 🙂 ), puis ouvrez le fichier ~/.ratpoisonrc, qui ne doit pas encore exister à moins que vous soyez du genre à griller les étapes.

Rajoutez les lignes suivantes:

exec rpws -1
exec /usr/bin/rpws init 6 -k
bind F1 exec rpws 1
bind F2 exec rpws 2
bind F3 exec rpws 3
bind F4 exec rpws 4
bind F5 exec rpws 5
bind F6 exec rpws 6

Sauvegardez, puis relancez ratpoison avec la commande: C-t :restart

Pour cycler entre vos bureaux virtuels, utilisez C-t Fx avec x le numéro du bureau virtuel. Bien sûr, rien ne vous empêche de binder vos bureaux virtuels ailleurs que sur F1-F12, mais bon, personnellement je trouve cette solution pratique 🙂

Bon, C-t c’est bien joli comme caractère d’échappement, mais c’est quand même mieux d’utiliser une touche qui ne sert à rien d’habitude: Windoze gauche. Et en plus, ça évite de taper deux touches pour passer le caractère d’échappement.

Là, ça se corse un peu, il va falloir utiliser un peu xmodmap:

exec xmodmap -e « keycode 133 = F19 »

escape F19

Comme mon clavier n’a pas de touches F13-F20, je remappe les touches « multimédia » (dieu que je hais ce mot) ainsi que les touches windoze sur ces touches. Notre caractère d’échappement est donc maintenant windoze gauche, Super_L, etc. Normalement son keycode est le 133, cependant, en cas de problème, vous pouvez vérifier avec l’utilitaire xev le keycode de cette touche.

Tiens, les touches « multimescouilles », parlons-en: ce serait quand même bien dommage de devoir rentrer un caractère d’échappement pour baisser ou augmenter le volume. C’est là que la commande definekey arrive. Et pour être plus précis, definekey top. Eh oui, vous pouvez avoir plusieurs caractères d’échappement, primo, et un jeu de touches au dessus de ces caractères d’échappement, deuxio:

exec xmodmap -e « keycode 122 = F17 »
exec xmodmap -e « keycode 123 = F18 »

exec xmodmap -e « keycode 121 = F16 »

definekey top F17 exec aumix -q -v-10
definekey top F18 exec aumix -q -v+10

On enregistre son fichier de conf’, on relance ratpoison ( C-t :restart, enfin Super_L, :restart maintenant 😉 ), et si les keycodes sont les bons chez vous (sinon, xev est votre ami) et que vous avez aumix installé, normalement la touche « diminuer le volume » devrait faire baisser votre volume maître de 10%, et inversement pour la touche « augmenter le volume ». Évidemment, j’ai aussi mappé C-t F16/F17/F18 pour pause, previous et next de mon client mpd (d’où le xmodmap sur le keycode 121, correspondant au mute):

bind F17 exec mpc –no-status prev
bind F18 exec mpc –no-status next
bind F16 exec mpc –no-status toggle

Bon, maintenant, attaquons-nous à la barre de status. « Hein, mais qu’est ce qu’il dit, il a fumé trop d’herbe qui fait rire ou quoi, il a dit qu’il n’y a pas de barre de status dans ratpoison ». Mis à part sur la verdure, vous avez tout à fait raison, il n’y a pas de barre de status à proprement parler dans ratpoison, mais nous pouvons, dans le fichier de configuration, déclarer un espace non géré par ratpoison sur notre écran pour pouvoir utiliser une barre de status (ou un panel genre lxpanel, mais bon, tant qu’à faire dans le minimaliste, autant utiliser du minimal: dzen2 FTW!):

set padding 0 0 0 12
unmanage dzen
exec weather.sh
exec dzenstats.sh | dzen2 -ta r -bg « #3f3f3f » -fg « #dfaf8f » -x 0 -y 1080 -h 12 -fn -*-lucida-medium-r-normal-sans-10-*-*-*-*-*-*

la commande set padding 0 0 0 12 nous réserve les 12 pixels du bas, (syntaxe: padding gauche haut droite bas) et la commande unmanage nom_de_la_fenêtre définit cette fenêtre comme étant non gérée par ratpoison: il n’essaiera donc pas de coller une fenêtre dans les 12 pixels réservés en bas. (pour obtenir le nom de la fenêtre, utilisez xprop et récupérez le(s) nom(s) de la ligne WM_NAME)

Les deux commandes exec en dessous sont les programmes lancés au démarrage de ratpoison: weather.sh, un script maison pour récupérer la météo locale, et dzenstats.sh | dzen2 blabla pour lancer mon script de statistiques qui seront envoyées à dzen2 pour affichage. Je reviendrai dans un prochain article sur dzen2. Comme ça, j’ai ma petite barre de statut en bas, qui ne me bouffe pas trop de place, ce qui est quand même toujours pratique, pour vérifier le load de sa machine, quelle musique est en train de se jouer, à quelle vitesse je télécharge mes mises à jour, la RAM libre, quelle heure il est, est ce que la mère Michelle a perdu son chat, etc etc etc…

En gros ici ça donne ça:

Bon, maintenant, quelques commandes utiles de ratpoison.
III- Les commandes internes de ratpoison.

Utilisables via la combo C-t :, il y en a un paquet: gestions de groupes de fenêtres (quasi inutile avec rpws), aliases, framedump, et même tempwm (oui oui, pour ouvrir un gestionnaire de fenêtres temporaire pour certaines applications récalcitrantes, genre The Gimp (quoiqu’on peut se débrouiller sous RP quand même). Une liste exhaustive est dispo sur le site officiel de ratpoison, je vais donc me contenter de vous faire une liste de celles que j’utilise le plus souvent:

  • alias nom commande: permet de renommer une commande spécifique pour l’utiliser via C-t : ; par exemple: alias vim exec urxvt -e vim.
  • dedicate: permet de « dédier » une frame aux fenêtres qu’elle contient déjà: si vous lancez de nouvelles applications, elle ne se lanceront pas dans cette frame mais dans les autres frames disponibles.
  • nextscreen / prevscreen: permet de passer d’un écran à l’autre dans le cas d’un dual (ou plus) screen. Petit conseil: bindez le dans votre .ratpoisonrc.
  • sselect n: permet de « sauter » directement au nième écran. Utile pour les chanceux d’entre vous qui ont trois écrans ou plus 🙂
  • source fichier: permet de lire un fichier spécifique contenant des commandes ratpoison. En gros, une sorte de script, personnellement je m’en sers pour restaurer automatiquement ma config de frames au démarrage de ratpoison. Comme j’utilise rpws, je préfère lancer un script pour chaque bureau virtuel plutôt que de l’exécuter au lancement de RP, sinon tous mes bureaux virtuels se retrouveraient splitté de la même façon (pas très pratique…)
  • split / hsplit / vsplit n: divise une frame en deux (verticalement, horizontalement), n est une fraction (exemple: vsplit 3/4, vsplit 1/3…) qui permet de s’affranchir d’un resize – quand je vous disais que c’est quand même bien foutu RP!
  • only: détruit toutes les autres frames excepté la frame actuelle.
  • remove: détruit la frame actuelle.
  • tmpwm nom_du_WM: exemple: tmpwm /usr/bin/awesome. permet de lancer un gestionnaire de fenêtres temporairement. Très pratique pour des logiciels ouvrant plein de fenêtres à la con 🙂
  • restart: se passe de commentaires: relance ratpoison (sans tuer les clients X déjà lancés). Utile quand vous bidouillez votre .ratpoisonrc.
  • quit: je vous laisse deviner 🙂

Il y a beaucoup d’autres commandes disponibles, cependant, plutôt que de vous faire une liste de trois kilomètres de long, je ne saurais que trop vous conseiller de consulter le manuel et le wiki de ratpoison:

Voilà pour ce petit tour du propriétaire de ratpoison, un WM ultra léger qui gagnerait à être connu 🙂

6 Comments

    • Brainiac
    • Posted 12 juin 2011 at 16 h 00 min
    • Permalink

    Salut,

    C’est vraiment génial comme tuto! J’aimerais seulement savoir si tu avais fais un tuto sur comment arriver à ton desktop (ton image) qui est vraiment trop top! J’adore la petite barre en bas ^_^ !

    Bonne continuation

    • lidstah
    • Posted 12 juin 2011 at 18 h 25 min
    • Permalink

    Salut, merci pour le compliment!

    Alors pour faire vite, je n’ai pas fait de tuto sur la config’ de mon desktop – mais tu viens de me donner une idée, j’essaierai de le faire dans le courant de la semaine, avec le .Xdefaults qui va bien, le thème gtk et un petit topo sur dzen2 (la petite barre de stats en bas) ainsi que le script bash que j’utilise pour lui faire afficher les différentes infos – on peut aussi utiliser conky-cli, mais dans ce cas, pas d’icones ou de couleurs différentes.

    • Brainiac
    • Posted 12 juin 2011 at 22 h 45 min
    • Permalink

    Merci beacoup! J’avais peur que le site soit fermé et que tu ne me répondes jamais 😛 Je vais attendre ton tutoriel avec impatience! Pour l’heure, je continue de chercher sur Google pour des tutos…

    Ce que j’ai trouvé : http://www.rohitab.com/discuss/topic/30864-ratpoison/ [en faisant seulement du copier/coller de ce site, ça ne marchait pas, il faudrait donc adapter]

    • lidstah
    • Posted 13 juin 2011 at 15 h 07 min
    • Permalink

    haha, non non on n’est pas fermés! Hydraze poste plus souvent que moi par contre, disons que l’année passée a été assez mouvementée ici :p

    Sinon, je vais jeter un coup d’œil à la config donnée dans ton lien – qui a l’air bien intéressante d’ailleurs – dans le courant de la semaine afin de voir ce qui déconne. Vu que je bidouille XMonad en ce moment, faudra juste que je trouve un peu de temps pour relancer le bon vieux ratpoison 🙂

  1. Salut, je suis content que tu veuilles y jeter un coup d’oeil 🙂

    Quant à moi, je me suis parti un blog wordpress où je vais publier des articles sur Linux… Un peu de tout en fait. J’ai mis quelques articles ratpoion, mais c’est sûr que je viens de commencer, alors c’est pas très complet! Aussi,je l’ai écrit en anglais, histoire de me pratiquer un peu dans cette langue 😀

    • Pheimors
    • Posted 25 juin 2011 at 13 h 11 min
    • Permalink

    A noter qu’il existe une nouvelle version de ratpoison, Stumpwm, codé entièrement en Common LISP et configurable avec le même langage.
    Le nom est moins top, mais les possibilitès restent infinies.:w


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

What is 5 + 13 ?
Please leave these two fields as-is: