i3 não suporta sequências de teclas como vim . Qualquer ligação de chave consiste em uma única chave precedida por uma lista opcional de modificadores distintos (portanto, não Shift+Shift
). E todos os modificadores precisam ser pressionados no momento em que a tecla principal é pressionada.
Dito isso, há duas maneiras principais de ter muitos espaços de trabalho sem precisar vinculá-los a longas listas de modificadores:
1. Crie e acesse dinamicamente espaços de trabalho com programas externos
Você não precisa definir um atalho para cada espaço de trabalho, basta criá-los rapidamente enviando um workspace NEW_WS
para i3 , por exemplo com o programa i3-msg
:
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3 também vem com o comando i3-input
, que abre um pequeno campo de entrada e executa um comando com a entrada fornecida 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 esses dois comandos a atalhos e você pode acessar um número arbitrário de espaços de trabalho apenas pressionando o atalho e digitando o nome (ou número) da área de trabalho desejada. (Se você trabalha apenas com espaços de trabalho numerados, talvez queira usar workspace number %s
em vez de apenas workspace %s
)
2. Vincule espaços de trabalho estaticamente a atalhos simples nos modos de ligação de chave
Como alternativa, para uma abordagem mais estática, você poderia usar os modos em sua configuração i3 . Você pode ter modos separados para focar e mover para espaços de trabalho:
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 você pode ter ligações separadas para focar e mover em um único 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
Em ambos os exemplos, os comandos workspace
ou move
estão encadeados com mode "default"
, de forma que i3 retorna automaticamente ao mapa de ligação de chaves padrão após cada comando.