[Astuce] i3wm : Switcher entre les fenêtres d'un container
Le script que je vais vous donné a été écrit il y a quelques mois déjà. Il permet de switcher entre les fenêtres* d'un container. Si dans un container j'ai 3 fenêtres, alors je pourrai focus la première via alt+F2, la seconde via alt+F2 et la dernière via alt+F3. Si un container contient un autre container, le script détectera quel est celui focused et quelles fenêtres lui appartiennent.
Si des fenêtres et des containers appartiennent au même container, alors chacun des containers sera interprété comme une fenêtre.
* : une fenêtre est une application (terminal, navigateur, client mail, etc.)
Le script est une nouvelle fois écrit en PHP et les binds gèrent 6 windows. Pour pouvez bien sûr en ajouter.
Dans ~/bin/i3_switch_focus_container.php
(ne pas oublier de faire un chmod u+x dessus) :
#!/usr/bin/php5
<?php
function getTree()
{
return json_decode(shell_exec('i3-msg -t get_tree'));
}
function getFocusedWindowContainer($tree)
{
if (empty($tree->nodes)) {
return null;
}
foreach ($tree->nodes as $k => $container) {
if (true === $container->focused) {
return $tree->nodes;
}
if (null !== $container = getFocusedWindowContainer($container)) {
return $container;
}
}
return null;
}
function getFocusWindowNumber($default, $max)
{
global $argv;
if (!isset($argv[1])) {
$argv[1] = $default;
}
return min($max, max(1, $argv[1])) - 1;
}
function getDefaultFocusWindowNumber($container)
{
foreach ($container as $k => $v) {
if ($v->focused) {
return $k + 1;
}
}
}
function setFocusToWindow($window)
{
shell_exec(sprintf("i3-msg '[con_id=\"%s\"] focus'", $window->id));
}
$container = getFocusedWindowContainer(getTree());
if ($container !== null) {
$number = getFocusWindowNumber(getDefaultFocusWindowNumber($container), count($container));
foreach ($container as $k => $window) {
if ($k == $number) {
setFocusToWindow($window);
}
}
}
Dans votre fichier de configuration i3 :
bindsym $mod+F1 exec ~/bin/i3_switch_focus_container.php 1
bindsym $mod+F2 exec ~/bin/i3_switch_focus_container.php 2
bindsym $mod+F3 exec ~/bin/i3_switch_focus_container.php 3
bindsym $mod+F4 exec ~/bin/i3_switch_focus_container.php 4
bindsym $mod+F5 exec ~/bin/i3_switch_focus_container.php 5
bindsym $mod+F6 exec ~/bin/i3_switch_focus_container.php 6

Sharepoint Office365 sur Linux : automatiser l'authentification (v2)
En septembre 2018, je publiais un article pour automatiser l'authentification sur Sharepoint…

Sharepoint Office365 sur Linux : automatiser l'authentification
Suite de l'aventure avec Sharepoint ! On a pu passer 2 étapes cruciales pour jouer avec Sha…

Sharepoint Office365 sur Linux (Webdav/Davfs) avec des fichiers accentués
Suite de l'aventure avec Sharepoint ! Je me suis rendu compte que les répertoires et les fi…