Entries Tagged as 'stumpwm'

Meilleure gestion des groupes avec StumpWM

StumpWM est un gestionnaire de fenêtres en mosaïque, comme awesome, écrit entièrement en Common Lisp. Pour plus d’informations, je vous recommande d’aller voir sa documentation.

Un des seuls points négatifs que j’y ait trouvé, est la gestion des groupes (l’équivalent des bureaux virtuels). Si vous voulez mettre une fenêtre dans un autre groupe, il faut d’abord créer le groupe (C-t g c), nommer le groupe, ensuite déplacer la fenêtre vers le groupe (C-t g m suivis du nom du groupe). Le fait que StumpWM soit écrit entièrement en Common Lisp nous permet d’implémenter un peu toutes les fonctionnalitées que l’on veut. J’ai donc développé une gestion des groupes similaires à wmii ou awesome.

Il faut donc modifier le .stumpwmrc situé dans le home. Tout d’abord, on va créer 5 groupes, nommés de 0 à 4, puis supprimer le groupe créée automatiquement au démarrage (« Default »). On se déplace ensuite sur le premier groupe (groupe 0), et finalement on bind des raccourcis pour changer de groupe, et pour déplacer une fenêtre d’un groupe à l’autre. Les raccourcis seront C-t [1,2,3,4,5] Pour changer de groupe, et C-t C-[1,2,3,4,5] pour déplacer une fenêtre.

Voilà le code :

;; Modification des groupes : 5 groupes crées par défaut (nommés 0, 1, 2, 3, 4)
; On crée les 5 groupes si ils n'existent pas déjà (appel de loadrc par ex.)
(loop for n in '("0" "1" "2" "3" "4") do
      (if (not (find-group (current-screen) n))
	  (add-group (current-screen) n)))
; On supprime le groupe Default s'il existe (groupe au démarrage)
(let ((default-group (find-group (current-screen) "Default")))
  (if default-group
      (kill-group default-group (find-group (current-screen) "0"))))
 
; On se place bien sur le groupe 0
(switch-to-group (find-group (current-screen) "0"))
 
;; Meilleurs raccourcis pour la gestion des groupes
; C-t 1, C-t 2, ... -> va au groupe 0, 1, ...
; C-t C-1, ... -> bouge la fenêtre dans le groupe 0, ...
; Les touches &, é, ", ', ( sont les caractères présents
; sur les touches 1, 2, 3, 4, 5 sur un clavier belge,
; à adapter selon le clavier
(let ((keys '("&" "eacute" "\"" "'" "(")))
  (loop for key in keys ; Les touches 1, 2, ...
	do
	(progn
	  (define-key *root-map* (kbd key)
	    (concatenate 'string
			 "gselect "
			 (write-to-string (position key keys))))
	  (define-key *root-map*
	    (kbd (concatenate 'string "C-" key))
	    (concatenate 'string
			 "gmove "
			 (write-to-string (position key keys))))
	)))

Et en « bonus », une autre feature à la wmii : pour se déplacer entre les fenêtres, on bind C-t [h,j,k,l], et pour déplacer les fenêtres, C-t C-[h,j,k,l] :

;; Utilisation de C-t h,j,k,l pour se déplacer dans les fenêtres
;; Si controle pressé, ça déplace la fenêtre dans cette direction
;; Si controle pressé, ça déplace la fenêtre dans cette direction
(let ((directions '(("h" "left")
		    ("l" "right")
		    ("k" "up")
		    ("j" "down"))))
  (dolist (dir directions)
     (define-key *root-map* (kbd (car dir))
      (concatenate 'string "move-focus " (cadr dir)))
    (define-key *root-map* (kbd (concatenate 'string "C-" (car dir)))
      (concatenate 'string "move-window " (cadr dir)))
    ))

Sur ce, bon amusement avec StumpWM :)

awesome 3 et les tilings wm

Cela fait quelques jours que je suis en train de tester awesome, un tiling wm, qui est sortit dans sa version 3 il y a quelques temps.

À première vue, ça fait beaucoup penser à wmii (ils sont tous deux dérivés de dwm, normal donc), et en regardant d’un peu plus près le fichier de configuration en Lua, la configuration à l’air assez puissante, y a moyen de faire des trucs bien sympatique avec ça.

Sinon à part ça, on peut ressortir le fait qu’il soit dynamique, et place lui même les fenêtres, vous pouvez juste intervertir les fenêtres et choisir une autre disposition de fenêtre (et il y a un concept très intéréssant de « Fenêtres maîtres » qui permet d’avoir certaines fenêtres privilégiées dans l’affichage).

Niveau rapidité, on a pu lire qu’il serait plus rapide car il utilise xcb et non plus xlib, mais le changement est très peu voyant (voir invisible, je ne le trouve pas spécialement plus rapide que wmii).

Pour ma part, je continuerait donc à utiliser stumpwm, qui à certains avantages que je n’ai retrouvé chez aucun autre wm (possibilitée de modifier absolument tout via Common Lisp, une fonction ultra pratique « run-or-raise » qui permet de mettre au premier plan emacs ou le navigateur par exemple), mais je garde une bonne estime de awesome, qui m’a agréablement surpris surtout au niveau de la configuration.

À conseiller donc.