OpenBox en mode tiling
Afin d’optimiser mon espace de travail, je me suis penché sur une solution permettant de faire d’OpenBox un tiling manager. Pour ceux qui ne le savent pas, voici les caractéristiques principales du tiling :
- Tout l’espace disponible sur l’écran est utilisé.
- Les fenêtres se placent automatiquement et ne se chevauchent jamais.
- La navigation se fait grâce à des raccourcis clavier.
Histoire de comprendre un peu mieux, voici des images de mon desktop utilisant la méthode du tiling :
Comme vous pouvez le voir, l’espace de travail est utilisé de manière optimal. L’agencement des fenêtres est automatique, pas besoin de les placer et/ou redimensionner manuellement : On gagne donc en productivité. Les raccourcis claviers permettent de naviguer rapidement entre les fenêtres, avec un peu d’entraînement la souris se fait très vite oublier !
OpenBox permet à la base de faire ce que l’on pourrait appeler du « pseudo tiling », c’est à dire qu’il est possible de redimensionner et de déplacer les fenêtres grâce aux raccourcis clavier. Accoupler à PyTyle 2, celui-ci devient un « véritable » tiling manager.
PyTyle 2 est une application écrite en langage Python, elle se configure facilement via un fichier texte unique qui a le mérite d’être compréhensible.
Pourquoi PyTyle 2 et non pas un vrai tiling manager ? Tout simplement par faute de temps… Pytyle 2 n’est pas sans défaut, on sent bien le coté « rustine » mais il a le gros avantage de pouvoir continuer à utiliser OpenBox. Il permet par la même occasion « de se faire la main » avant de passé à du vrai tiling.
Installation :
Rien de plus simple, ouvrez votre terminal et faites :
$ yaourt -S pytyle2-hg
Pour lancer PyTyle 2 :
$ pytyle2 &
How to :
Avant de passer à la pratique, il est bon de comprendre le vocabulaire spécifique au tiling :
- Tiler : C’est tout simplement le nom donné à la mise en page, dans PyTyler 2 il s’agit de : ManualTile, Cascade, Center, Horizontal, HorizontalRows, Maximal, Vertical, VerticalRows.
- Master : La fenêtre principale ( celle qui prend le plus de place ) est appelée Master.
- Slave : Le nom qui défini toutes les autres fenêtres qui ne sont pas en Master.
- Focus : La fenêtre qui a le focus et tout simplement celle qui est en cours d’utilisation.
- Float : Mode dit « flottant », les fenêtres sont libres : C’est le comportement normal d’OpenBox.
Voici deux images qui vous permettront de vous familiariser avec ce vocabulaire :
- Type de tiler : Vertical.
- Master : Midori.
- Slave : Thunar, ncmpc.
- Focus : Midori.
- Type de tiler : Horizontal.
- Master : ncmpc.
- Slave : Thunar, Midori.
- Focus : Thunar.
Voyons de suite les différents raccourcis clavier, bien évidement je me limiterais aux principaux ! Je vous laisse le soin de découvrir les autres…
[ Alt + A ] : Active le mode tiling.
[ Alt + U ] : Désactive le mode tiling.
[ Alt + Z ] : Modifie le type de tiler.
[ Alt + C ] : Change la fenêtre qui a le master.
[ Alt + Q ] : Recharge le fichier de configuration.
[ Alt + Entrée ] : Met la fenêtre qui a le focus en position master.
[ Alt + F ] : Active le mode float sur la fenêtre qui a le focus.
[ Alt + L ], [ Alt + H ] : Modifie la taille de la fenêtre en position master.
[ Alt + J ], [ Alt + K ] : Change le focus.
C’est un peu déroutant au début, mais avec un peu de pratique la productivité se trouvera grandement améliorée !
Configuration :
Comme dit précédemment la configuration de PyTyle 2 se fait à l’aide d’un seul et même fichier. Celui-ci porte le doux nom de config.ini et se trouve dans le répertoire ~/.config/pytyle2/. Ouvrez le simplement avec votre éditeur favori :
$ nano ~/.config/pytyle2/config.ini
Pour finir voici mon fichier config.ini, les modifications effectuées dessus sont minimes : Seuls les tilers à utiliser et le padding sont modifiés.
[GlobalKeybindings] Alt-A = tile Alt-U = untile Alt-Shift-D = toggle_decorations Alt-Shift-B = toggle_borders Alt-Z = cycle_tiler Alt-E = screen0_focus Alt-W = screen1_focus Alt-R = screen2_focus Alt-Shift-E = screen0_put Alt-Shift-W = screen1_put Alt-Shift-R = screen2_put Alt-Shift-S = refresh_workarea Alt-F = float Alt-Ctrl-C = quit Alt-Shift-space = reset Alt-Q = reload_configuration Alt-D = debug [AutoKeybindings] Alt-M = focus_master Alt-Return = make_active_master Alt-H = decrease_master Alt-L = increase_master Alt-J = previous Alt-Right = previous Alt-K = next Alt-Left = next Alt-Shift-J = switch_previous Alt-Shift-K = switch_next Alt-C = cycle Alt-comma = decrement_masters Alt-period = increment_masters [ManualKeybindings] Alt-Up = up Alt-Right = right Alt-Down = down Alt-Left = left Alt-H = hsplit Alt-V = vsplit Alt-Shift-C = close_frame Alt-T = print_tree Alt-O = only Alt-C = cycle Alt-G = toggle_catchall Alt-Shift-Up = up_move Alt-Shift-Right = right_move Alt-Shift-Down = down_move Alt-Shift-Left = left_move Alt-Super-Up = up_resize Alt-Super-Right = right_resize Alt-Super-Down = down_resize Alt-Super-Left = left_resize # This is an alternate resizing scheme. The default above is probably # more intuitive, and it requires fewer keybindings, but the scheme # below provides more fine-grained control. #Alt-Super-Up = up_increase #Alt-Super-Right = right_increase #Alt-Super-Down = down_increase #Alt-Super-Left = left_increase #Alt-Ctrl-Up = up_decrease #Alt-Ctrl-Right = right_decrease #Alt-Ctrl-Down = down_decrease #Alt-Ctrl-Left = left_decrease # Miscellaneous options that apply to all tilers, workspaces # and monitors. Options in CAPS can only be specified in [Global]. # Otherwise, all options can be overridden in specific Workspace # and/or Monitor sections. Also, *some* settings can be overidden # in tiling sections. (For example, tilers and tile_on_startup cannot # be overriden in tiling sections, but ignore, decorations, and margin # can.) [Global] # A list of all available tilers. This is a special option that # is used to parse/load any tilers that may be used. This does # not affect what is available when cycling through tilers. Therefore, # order does not matter. ALL_TILERS = ManualTile Cascade Center Horizontal HorizontalRows Maximal Vertical VerticalRows # A special option MOVETIME_OFFSET = 0.5 # A list of tilers available when cycling, in order. The first # tiler is the default. tilers = Vertical Horizontal ignore = krunner gmrun gimp sh decorations = Yes borders = No border_width = 4 borders_active_color = 0xff0000 borders_inactive_color = 0x008800 borders_catchall_color = 0x3366ff placeholder_bg_color = 0x000000 tile_on_startup = Yes margin = 23 0 23 0 padding = 0 0 0 0 #[Workspace0-Monitor1] #tile_on_startup = Yes #tilers = ManualTile Vertical [ManualTile] tile_on_startup = No padding = 1 1 1 1 decorations = No borders = Yes shallow_resize = Yes [Cascade] push_down = 25 push_over = 0 width_factor = 0.7 height_factor = 0.7 horz_align = left [Center] step_size = 0.05 width_factor = 0.5 height_factor = 0.5 columns = 2 [Horizontal] tile_on_startup = Yes step_size = 0.05 height_factor = 0.5 [HorizontalRows] step_size = 0.05 height_factor = 0.5 columns = 2 [Maximal] decorations = No [Vertical] step_size = 0.05 width_factor = 0.5 shallow_resize = Yes [VerticalRows] step_size = 0.05 width_factor = 0.5 rows = 2