Étant d'un naturel franchement bordelique je finis couramment mes sessions avec une bonne vingtaine de terminaux ouverts. d'où l'idée d'avoir une fonction qui m'active un terminal inutilisé plutôt que de m'en ouvrire un nouveau à chaque fois... voilà comment ça se passe (c'est la première fois que je fais mumuse avec sawfish, les commentaires sont les bienvenus):
À ajouter dans ~/.sawfishrc:
(define (set-xterm-ready win-id)
(window-put (get-window-by-id win-id) 'A_READY_XTERM 't))
(define (unset-xterm-ready win-id)
(window-put (get-window-by-id win-id) 'A_READY_XTERM nil))
;; Active le terminal libre ayant été privé du focus le plus longtemps, un appel
;; répété de la fonction aboutira donc à un parcours de tout les terminaux libres.
(define (get-next-xterm-ready)
(require 'sawfish.wm.util.window-order)
(let ((term (car (member-if (lambda (x)
(window-get x 'A_READY_XTERM))
(reverse (window-order))))))
(if term
(fetch-win term)
(system (getenv "MY-XTERM")))))
;; Activation "complète" de la fenêtre (déplacement vers le bureau courant si
;; nécessaire, activation du focus et mise au 1er plan).
(define (fetch-win w)
(unless (window-in-workspace-p w current-workspace)
(move-window-to-workspace
w
(car (window-workspaces w))
current-workspace
nil))
(activate-window w))
NB: Si aucun terminal inutilisé à été trouvé lors de l'appel de la fonction, un nouveau terminal est automatiquement lancé (ce dernier étant contenu dans la variable d'environnement "MY-XTERM", l'appel en dur peut se faire en remplaçant (system (getenv "MY-XTERM")) par (system "myterm")).
Et dans ~/.zshrc:
if [ "$TERM" = "xterm" -o "$TERM"="Eterm" -o "$TERM"="aterm" -o "$TERM"="rxvt" ] ; then
precmd (){
sawfish-client -q -c "(set-xterm-ready ${WINDOWID})" &> /dev/null
}
preexec () {
sawfish-client -q -c "(unset-xterm-ready ${WINDOWID})" &> /dev/null
}
fi
Voilà, ensuite il suffit de binder la fonction correspondante à une touche dans ~/.sawfishrc:
(bind-keys global-keymap "F12" '(get-next-xterm-ready))
Ou à un lanceur quelconque qui exécutera:
sawfish-client -q -c '(get-next-xterm-ready)'
Ça reste bien sûr à adapter suivant les besoins (garder un raccourcis ouvrant à tous les coups un terminal est bien évidemment plus qu'utile).
# astuces ?
Posté par Nico C. . Évalué à 3.
[^] # Re: astuces ?
Posté par marvin . Évalué à 4.
# Cool, mais...
Posté par Amand Tihon (site web personnel) . Évalué à 3.
[^] # Re: Cool, mais...
Posté par Amand Tihon (site web personnel) . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.