i3 in realtà non supporta sequenze di tasti come vim . Qualsiasi associazione di tasti è costituita da una singola chiave preceduta da un elenco facoltativo di distinti (quindi nessun Shift+Shift
) modificatori. E tutti i modificatori devono essere premuti nel momento in cui viene premuto il tasto principale.
Detto questo, ci sono due modi principali per avere molti spazi di lavoro senza doverli legare a lunghi elenchi di modificatori:
1. Crea e accedi dinamicamente alle aree di lavoro con programmi esterni
Non è necessario definire una scorciatoia per ogni singolo spazio di lavoro, puoi semplicemente crearli al volo inviando un workspace NEW_WS
a i3 , ad esempio con il i3-msg
programma:
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3 viene fornito anche con il i3-input
comando, che apre un piccolo campo di input quindi esegue un comando con l'input dato come parametro
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
Associa questi due comandi alle scorciatoie e puoi accedere a un numero arbitrario di aree di lavoro semplicemente premendo la scorciatoia e quindi inserendo il nome (o il numero) dell'area di lavoro che desideri. (Se lavori solo con aree di lavoro numerate, potresti voler utilizzare workspace number %s
invece di solo workspace %s
)
2. Associa staticamente gli spazi di lavoro a semplici scorciatoie all'interno delle modalità di associazione dei tasti
In alternativa, per un approccio più statico, puoi utilizzare le modalità nel tuo i3 configurazione. Potresti avere modalità separate per mettere a fuoco e spostarti nelle aree di lavoro:
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
Oppure potresti avere associazioni separate per la messa a fuoco e lo spostamento all'interno di un'unica modalità:
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
In entrambi gli esempi il workspace
o move
i comandi sono concatenati con mode "default"
, in modo che i3 ritorna automaticamente alla mappa di binding dei tasti predefinita dopo ogni comando.
La mia soluzione a questo è semplicemente usare più chiavi:
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