i3 realmente no admite secuencias de teclas como vim . Cualquier combinación de teclas consta de una sola tecla precedida por una lista opcional de distintos (por lo que no Shift+Shift
) modificadores. Y todos los modificadores deben presionarse en el momento en que se presiona la tecla principal.
Dicho esto, hay dos formas principales de tener muchos espacios de trabajo sin tener que vincularlos a largas listas de modificadores:
1. Cree y acceda dinámicamente a espacios de trabajo con programas externos
Puede que no tenga que definir un acceso directo para cada espacio de trabajo, simplemente puede crearlos sobre la marcha enviando un workspace NEW_WS
a i3 , por ejemplo con el i3-msg
programa:
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3 también viene con el i3-input
comando, que abre un pequeño campo de entrada y luego ejecuta un comando con la entrada dada como parámetro
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
Vincule estos dos comandos a los accesos directos y podrá acceder a un número arbitrario de espacios de trabajo simplemente presionando el acceso directo y luego ingresando el nombre (o número) del espacio de trabajo que desea. (Si solo trabaja con espacios de trabajo numerados, es posible que desee utilizar workspace number %s
en lugar de solo workspace %s
)
2. Enlace estáticamente espacios de trabajo a accesos directos simples dentro de los modos de combinación de teclas
Alternativamente, para un enfoque más estático, podría usar modos en su i3 configuración. Podría tener modos separados para enfocar y moverse a espacios de trabajo:
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
O podría tener enlaces separados para enfocar y moverse dentro de un solo modo:
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
En ambos ejemplos el workspace
o move
los comandos están encadenados con mode "default"
, de modo que i3 vuelve automáticamente al mapa de combinación de teclas predeterminado después de cada comando.
Mi solución a esto es usar más claves:
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