i3 ne supporte pas vraiment les séquences de touches comme vim . Toute liaison de clé consiste en une clé unique précédée d'une liste facultative de distincts (donc pas de Shift+Shift
) modificateurs. Et tous les modificateurs doivent être enfoncés au moment où la touche principale est enfoncée.
Cela étant dit, il existe deux façons principales d'avoir beaucoup d'espaces de travail sans avoir à les lier à de longues listes de modificateurs :
1. Créez et accédez dynamiquement à des espaces de travail avec des programmes externes
Vous pouvez ne pas avoir à définir un raccourci pour chaque espace de travail, vous pouvez simplement les créer à la volée en envoyant un workspace NEW_WS
à i3 , par exemple avec le i3-msg
programme :
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3 vient aussi avec le i3-input
commande, qui ouvre un petit champ de saisie puis exécute une commande avec l'entrée donnée comme paramètre
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
Liez ces deux commandes à des raccourcis et vous pouvez accéder à un nombre arbitraire d'espaces de travail en appuyant simplement sur le raccourci, puis en entrant le nom (ou le numéro) de l'espace de travail souhaité. (Si vous ne travaillez qu'avec des espaces de travail numérotés, vous pouvez utiliser workspace number %s
au lieu de simplement workspace %s
)
2. Liez statiquement les espaces de travail à de simples raccourcis dans les modes de liaison de touches
Alternativement, pour une approche plus statique, vous pouvez utiliser des modes dans votre i3 configuration. Vous pouvez avoir des modes distincts pour la mise au point et le déplacement vers les espaces de travail :
set $mode_workspace "goto_ws"
mode $mode_workspace {
bindsym 1 workspace 1; mode "default"
bindsym 2 workspace 2; mode "default"
# […]
bindsym a workspace a; mode "default"
bindsym b workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+w mode $mode_workspace
set $mode_move_to_workspace "moveto_ws"
mode $mode_move_to_workspace {
bindsym 1 move container to workspace 1; mode "default"
bindsym 2 move container to workspace 2; mode "default"
# […]
bindsym a move container to workspace a; mode "default"
bindsym b move container to workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace
Ou vous pourriez avoir des liaisons distinctes pour la mise au point et le déplacement dans un seul mode :
set $mode_ws "workspaces"
mode $mode_ws {
bindsym 1 workspace 1; mode "default"
bindsym Shift+1 move container to workspace 1; mode "default"
bindsym 2 workspace 2; mode "default"
bindsym Shift+2 move container to workspace 2; mode "default"
# […]
bindsym a workspace a; mode "default"
bindsym Shift+a move container to workspace a; mode "default"
bindsym b workspace b; mode "default"
bindsym Shift+b move container to workspace b; mode "default"
# […]
bindsym Escape mode "default"
}
bindsym $mod+shift+w mode $mode_move_to_workspace
Dans les deux exemples, le workspace
ou move
les commandes sont chaînées avec mode "default"
, de sorte que i3 revient automatiquement à la carte de liaison de clé par défaut après chaque commande.
Ma solution consiste simplement à utiliser plus de clés :
set $ws0 "0:`:www"
set $ws1 "1:1"
set $ws2 "2:2"
set $ws3 "3:3:fm"
set $ws4 "4:4"
set $ws5 "5:5"
set $ws6 "6:6:dev"
set $ws7 "7:7"
set $ws8 "8:8"
set $ws9 "9:9"
set $ws10 "10:0:music"
set $ws11 "11:-:jd"
set $ws12 "12:=:comm"
set $ws13 "13:B"
set $ws14 "14:H"
set $ws15 "15:E"
set $ws16 "16:I"
set $ws17 "17:D:upwork"
bindsym $mod+grave workspace $ws0
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
bindsym $mod+minus workspace $ws11
bindsym $mod+equal workspace $ws12
bindsym $mod+BackSpace workspace $ws13
bindsym $mod+Home workspace $ws14
bindsym $mod+End workspace $ws15
bindsym $mod+Insert workspace $ws16
bindsym $mod+Delete workspace $ws17
for_window [class="Upwork"] move container to workspace $ws17
for_window [class="Spotify"] move container to workspace $ws10
for_window [class="Brave-browser"] move container to workspace $ws0
for_window [class="TelegramDesktop"] move container to workspace $ws12
for_window [class="jetbrains-pycharm"] move container to workspace $ws6
for_window [class="Caja"] move container to workspace $ws3
for_window [class="JDownloader"] move container to workspace $ws11