Archive pour la catégorie ‘Ion’

Des bindings pour Ion

Jeudi 15 février 2007

En ce moment, je réfléchis à ma prochaine reprise de contrôle de mon système - malgré la tentative avortée de cette semaine. Et du coup je me dis que je réinstallerai bien Ion, le gestionnaire de fenêtre ultra-l33t.

Ion, pour ceux qui ne connaissent pas, fonctionne sur un principe simple : plutôt que de créer pleins de fenêtres en bordel et de les afficher à l’écran, on subdivise l’écran en cadres comme on l’entend, et on affiche les fenêtres d’applis dedans - sachant qu’un astucieux système d’onglets permet d’avoir plusieurs fenêtre dans un cadre. Les affichages en plein écran provoquent la création d’un bureau temporaire supplémentaire.

L’intérêt de ce gestionnaire, c’est qu’on peut en grande partie se passer de la souris, et configurer les raccourcis claviers comme on l’entend. La grande question est la suivante : comment configurer tout ca de manière logique ? Voici quelques propositions.

Toutes les commandes en rapport avec le gestionnaire de fenêtres devraient se baser sur la touche “windows” du clavier. Comme ca elle aura une utilité.

Déplacement du focus

Ces commandes n’altèrent pas la structure des cadres et fenêtres. On utilise le préfixe win.

  • Se déplacer entre les fenêtres d’un cadre : win + tab
  • Se déplacer entre les cadres d’un bureau : win + flèches
  • Se déplacer entre les bureaux : win + page up / page down

Altération de la structure

Ces commandes modifient le nombre de bureaux et la division en cadres. On utilise le préfixe win + alt

  • Subdivision verticale ou horizontale d’un cadre : win + alt + flèches
  • Création d’un nouveau bureau avant ou après le courant : win + alt + page up / page down
  • Suppression d’un cadre : win + alt + suppr (redistribue les fenêtres qu’il contenait)

Commandes de bases

Ion propose quelques commandes de bases à avoir toujours sous la main.

  • manpages : win + m
  • terminal : win + t
  • scratchpad : win + s
  • exécution (run) : win + r

Voila pour les commandes de base … Si vous avez des idées, si des choses vous paraissent illogiques / contre-intuitives, laissez un commentaire. Je reviendrai surement plus tard pour éditer ce post et - qui sait ? - mettre en lien un fichier de config contenant tous les bindings.

EDIT :

  • Pour récupérer le code d’une touche, il faut utiliser “xbindkeys -k”
  • Le code de la touche windows semble être Mod4
  • Inutile d’utiliser plusieurs bindings pour déplacer une fenêtre d’un cadre vers un autre. La technique par défaut est très bien : marquer la fenêtre à déplacer, déplacer le focus, coller la fenêtre dans le focus courant.

EDIT2 :

Comme annoncé, voici un premier petit bout de bindings. Cette première partie permet de définir les bindings de déplacement du focus : entre les bureaux (prior/next), entre les frames d’un bureau (flèches), entres les fenêtres d’une frame (tab/shift+tab).


-- Move focus within frame
defbindings("WFrame", {
kpress(META.."Tab", "_:switch_next()"),
kpress(META.."Shift+Tab", "_:switch_prev()")
})

-- Move focus within screen
defbindings("WScreen", {
kpress(META.."Up","ioncore.goto_next(_chld, 'up')","_chld:non-nil"),
kpress(META.."Down","ioncore.goto_next(_chld, 'down')","_chld:non-nil"),
kpress(META.."Left","ioncore.goto_next(_chld, 'left')","_chld:non-nil"),
kpress(META.."Right","ioncore.goto_next(_chld, 'right')","_chld:non-nil"),
})

-- Move focus between screens
defbindings("WScreen", {

bdoc("Switch to next/previous object within current screen."),
kpress(META.."Prior", "_:switch_prev()"),
kpress(META.."Next", "_:switch_next()"),

bdoc("Go to first object on activity/urgency list."),
kpress(META.."oe", "ioncore.goto_activity()")

})

-- Move focus to activity
defbindings("WScreen", {

kpress("K", "ioncore.goto_activity() or ioncore.goto_previous()"),

})