
Le 23 octobre 2014 par misterair. (7 commentaires)
Openbox est léger. Openbox gère les fenêtres bien mieux que nombre d‘autres gestionnaires. Openbox fait le café… Enfin presque!
Réputé, à tort, difficile à configurer, Openbox est un outil puissant qui n‘a de limite que l‘imagination de l‘utilisateur. Il est plus qu‘un gestionnaire de fenêtre classique, moins qu‘un tiling manager, mais il peut très bien se rapprocher de ce dernier. On peut définir des actions en tout genre avec le clavier ou la souris.
Nous allons nous intéresser uniquement aux actions au clavier dans l‘optique de gérer finement les tailles de fenêtres et leurs positions.
Nous allons n‘éditer qu‘un seul fichier (qui a dit qu‘Openbox était compliqué !?!):
vi ~/home/USERNAME/.config/openbox/rc.xml
Openbox est assez explicite dans le nom des commandes et la syntaxe facile à assimiler. Il faut juste retenir que:
<ul>
<li>W = touche Super;</li>
<li>A = Alt;</li>
<li>C = Control;</li>
<li>S = Shift.</li>
</ul>
Maintenant attaquons le plus dur. Entre les lignes ”“ insérons, parce qu‘il faut commencer par le début, les lignes de code pour les interactions de base avec les fenêtres tel que fermer, ”icônifier“, plein écran, ou encore rendre la fenêtre présente sur tout les bureaux:
<!-- Keybindings for windows -->
<keybind key="A-q"><action name="Close"/></keybind>
<keybind key="A-m"><action name="ToggleMaximizeFull"/></keybind>
<keybind key="W-m"><action name="ToggleDecorations"/></keybind>
<keybind key="W-i"><action name="Iconify"/></keybind>
<keybind key="W-r"><action name="ToggleShade"/></keybind>
<keybind key="A-p"><action name="ToggleOmnipresent"/></keybind>
<keybind key="A-space"><action name="ShowMenu"><menu>client-menu</menu></action></keybind>
Passons au gros morceau qui permet de changer de bureau virtuel au clavier, et déplacer la fenêtre active sur un autre bureau. À la des lignes précédentes ajoutons celles-ci:
<!-- Keybindings for desktop switching -->
<keybind key="C-A-Left"><action name="GoToDesktop"><to>left</to><wrap>no</wrap></action></keybind>
<keybind key="C-A-Right"><action name="GoToDesktop"><to>right</to><wrap>no</wrap></action></keybind>
<keybind key="C-A-Up"><action name="GoToDesktop"><to>up</to><wrap>no</wrap></action></keybind>
<keybind key="C-A-Down"><action name="GoToDesktop"><to>down</to><wrap>no</wrap></action></keybind>
<keybind key="S-C-Left"><action name="SendToDesktop"><to>left</to><wrap>no</wrap></action></keybind>
<keybind key="S-C-Right"><action name="SendToDesktop"><to>right</to><wrap>no</wrap></action></keybind>
<keybind key="S-C-Up"><action name="SendToDesktop"><to>up</to><wrap>no</wrap></action></keybind>
<keybind key="S-C-Down"><action name="SendToDesktop"><to>down</to><wrap>no</wrap></action></keybind>
<keybind key="C-S-F1"><action name="SendToDesktop"><to>1</to></action></keybind>
<keybind key="C-S-F2"><action name="SendToDesktop"><to>2</to></action></keybind>
<keybind key="C-S-F3"><action name="SendToDesktop"><to>3</to></action></keybind>
<keybind key="C-S-F4"><action name="SendToDesktop"><to>4</to></action></keybind>
<keybind key="C-S-F5"><action name="SendToDesktop"><to>5</to></action></keybind>
<keybind key="C-S-F6"><action name="SendToDesktop"><to>6</to></action></keybind>
<keybind key="C-F1"><action name="GoToDesktop"><to>1</to></action></keybind>
<keybind key="C-F2"><action name="GoToDesktop"><to>2</to></action></keybind>
<keybind key="C-F3"><action name="GoToDesktop"><to>3</to></action></keybind>
<keybind key="C-F4"><action name="GoToDesktop"><to>4</to></action></keybind>
<keybind key="C-F5"><action name="GoToDesktop"><to>5</to></action></keybind>
<keybind key="C-F6"><action name="GoToDesktop"><to>6</to></action></keybind>
<keybind key="W-d"><action name="ToggleShowDesktop"/></keybind>
Ceci était la base, l‘indispensable même. Nous allons pouvoir passer aux choses sérieuses, créer un comportement de pseudo tiling-manager. Commençons par le déplacement en le redimensionnement des fenêtres au clavier. Toujours à la suite ajoutons ceci:
<!--Windows moving-->
<keybind key="W-a"><action name="ToggleOmnipresent"/></keybind>
<keybind key="W-c"><action name="MoveResizeTo"><x>center</x><y>center</y></action></keybind>
<keybind key="W-S-Right"><action name="MoveToEdgeEast"/></keybind>
<keybind key="W-S-Left"><action name="MoveToEdgeWest"/></keybind>
<keybind key="W-S-Down"><action name="MoveToEdgeSouth"/></keybind><keybind key="W-S-Up"><action name="MoveToEdgeNorth"/></keybind>
<!-- Windows resize-->
<keybind key="W-C-Right"><action name="ResizeRelative"><right>10</right></action></keybind>
<keybind key="W-C-Left"><action name="ResizeRelative"><right>-10</right></action></keybind>
<keybind key="W-C-Down"><action name="ResizeRelative"><bottom>10</bottom></action></keybind>
<keybind key="W-C-Up"><action name="ResizeRelative"><bottom>-10</bottom></action></keybind>
Notez que pour limiter le nombre de raccourcis à retenir je préfère ne redimensionner les fenêtres que vers le bas et la droite. Vu que je peux les déplacer facilement ce n‘est pas un soucis. La valeur entre les balises est en pixels. 10 est une valeur qui permet de conserver une certaine précision tout en déplaçant la fenêtre assez rapidement. J‘ai aussi configuré un placement au centre avec Super + C.
Finissons maintenant par le comportement tiling:
<!--Tiling-->
<keybind key="W-Right"><action name="MoveResizeTo"><height>100%</height><width>50%</width><x>-0</x><y>0</y></action></keybind>
<keybind key="W-Left"><action name="MoveResizeTo"><height>100%</height><width>50%</width><x>0</x><y>0</y></action></keybind>
<keybind key="W-Up"><action name="MoveResizeTo"><height>50%</height><width>100%</width><x>0</x><y>0</y></action></keybind>
<keybind key="W-Down"><action name="MoveResizeTo"><height>50%</height><width>100%</width><x>0</x><y>-0</y></action></keybind>
<keybind key="W-h"><action name="MoveResizeTo"><height>50%</height><width>50%</width><x>0</x><y>0</y></action></keybind>
<keybind key="W-j"><action name="MoveResizeTo"><height>50%</height><width>50%</width><x>-0</x><y>0</y></action></keybind>
<keybind key="W-k"><action name="MoveResizeTo"><height>50%</height><width>50%</width><x>-0</x><y>-0</y></action></keybind>
<keybind key="W-l"><action name="MoveResizeTo"><height>50%</height><width>50%</width><x>0</x><y>-0</y></action></keybind>
<keybind key="W-S-1"><action name="MoveResizeTo"><height>100%</height><width>1/3</width><x>0</x><y>0</y></action></keybind>
<keybind key="W-S-2"><action name="MoveResizeTo"><height>100%</height><width>1/3</width><x>1/3</x><y>0</y></action></keybind>
<keybind key="W-S-3"><action name="MoveResizeTo"><height>100%</height><width>1/3</width><x>-0</x><y>0</y></action></keybind>
<keybind key="W-S-4"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>0</x><y>0</y></action></keybind>
<keybind key="W-S-5"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>1/3</x><y>0</y></action></keybind>
<keybind key="W-S-6"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>-0</x><y>0</y></action></keybind>
<keybind key="W-S-7"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>0</x><y>-0</y></action></keybind>
<keybind key="W-S-8"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>1/3</x><y>-0</y></action></keybind>
<keybind key="W-S-9"><action name="MoveResizeTo"><height>50%</height><width>1/3</width><x>-0</x><y>-0</y></action></keybind>
Pour un maximum de flexibilité j‘ai prévu des placements avec tailles qui correspondent à des 1/2, 1/3, 1/4, et 1/6e d‘écran. Ainsi Super+Direction permet des moitiés droite/gauche et haut/bas. Super + h,j,k, ou l, permettent des quarts dans un sens horaire en partant du coin supérieur gauche de l‘écran. Comme le pavé numérique ne semble pas pris en compte, c‘est avec Super + Shift + 1,2, et 3 que je divise en 3 colonnes l‘écran. Pour finir, Super + Shift + 4 à 9 permettent des sixièmes d‘écran avec toujours un placement en sens horaire. Avec cela on comble presque tout les besoins. Sur mon écran 15“ les tiers ne servent pas à grand chose d‘ailleurs 😀
Pour les personnes un peu fainéantes, je mets à disposition en dl mon fichier rc.xml. Attention! Cela modifie le thème, la décoration de fenêtres ou encore le nombres de bureaux!
À utiliser de préférence comme exemple. Il y a aussi la documentation officielle qui reste le meilleur moyen d‘appréhender ce fabuleux outil.
7 commentaires
Joli boulot… Perso, pour du tiling sous Openbox, j’utilise pytyle2 (https://github.com/Excedrin/pytyle2/), un script python fait à peu près la même chose que ton rc.xml (tiling manuel), mais qui propose aussi du tiling automatique, où les fenêtre se placent automatiquement en fonction d’un schéma prédéfini. Il y à aussi une version compatible avec openbox multihead (version d’OB adaptée aux duals screens) : pytyle3(https://github.com/BurntSushi/pytyle3 )
Merci 😉
Je ne connaissais pas Pystyle. Après il faut voir l’intérêt de transformer un gui comme Openbox en réel Tiling alors qu’il existe plein de tiling managers.
Il faut passer à pystyle3 il me semble. Openbox 3 gère nativement les écrans multiples.
Je déterre ce post une semaine plus tard pour te répondre, désolé…
Pour moi l’intérêt de Pytyle était surtout de pouvoir passer en mode tiling dès que nécessaire, sans qu’il soit forcément activé tout le temps.
Ceci dit j’ai tellement pris goût au tiling que je ne désactive quasiment jamais Pytyle. Je pense de plus en plus sérieusement à passer sous un vrai Tiling WM (Wmi ou Awesome, par exemple), mais la flemme de ré-apprendre tout les raccourcis claviers ou de refaire toute un config me ralenti un peu, et j’apprécie beaucoup mon environnement de travail actuel…
A une époque j’utilisais WMFS v1. Ce tiling manager était vraiment puissant avec sa possibilité de rendre des fenêtres flottantes et de personnaliser toute l’interface et créer des régles pour les fenêtres. La v2 a changé pas mal de chose, pour rendre l’outil plus « intelligent » au niveau du placement.
C’est un tiling manager souvent oublié.
J’aime bien utiliser le tiling avec Awesome, du coup le fait de transformer Openbox en tiling wm me laisse perplexe.
@orfeo34 le but est de pouvoir utiliser Openbox comme un tiling en cas de besoin. Cela reste avant tout un gestionnaire de fenêtres flottantes. La personne qui veut du tiling majoritairement ira voir du côté d’Awesome ou WMFS par exemple.
[…] Pro Gnome 2, puis quelques errances du côté d‘Openbox et WMFS, un court passage sous Gnome 3.4, puis Mate et enfin KDE4. KDE avec en parallèle XFCE4 sur l‘Eeepc. Puis au fur et à mesure que je découvris les possibilités du Lego XFCE4 j‘ai commencé à le forger selon mes besoins, puis lui greffer le puissant Openbox. C‘est ainsi que ce combo remplaça KDE sur mon pc portable. Et au final cette simplicité ainsi que cette stabilité à toute épreuve font que je passe moins de temps à configurer mon environnement. En effet il suffit d‘installer XFCE, lui donner le look voulu, configurer le panel, puis installer Openbox et Obconf, trouver un thème raccord avec celui GTK, configurer un fichier et c‘est tout! Rappelez-vous mes tutoriels pour mettre les fenêtres automatiquement en plein écran ou encore transformer Openbox en pseudo-tiling-manager. […]