i3wm: más de 10 espacios de trabajo con doble tecla de modificación?

Recientemente, comencé a usar i3wm y me enamoré de él. Sin embargo, una cosa me molesta: controlar más de 10 espacios de trabajo.

En mi config $mod+1 a $mod+9 cambia entre los espacios de trabajo 1 a 9 (y $mod+0 para 10), pero a veces 10 espacios de trabajo simplemente no son suficientes.

En este momento llego al espacio de trabajo 11 a 20 con $mod+mod1+1 a $mod+mod1+0 , es decir, $mod+mod1+0 mod+alt+number . Por supuesto, esto funciona sin ningún problema, pero es bastante complicado cambiar espacios de trabajo como ese, ya que las teclas no se golpean fácilmente. Además, mover aplicaciones entre los espacios de trabajo 11 a 20 requiere mod+shift+alt+number -> feo.

En mis enlaces de Vim (tengo muchos complementos) comencé a usar accesos directos de modificador doble, como modkey + r para el complemento 1 y modkey + modkey + r para el complemento 2. De esta manera puedo vincular cada tecla dos veces y presionar la tecla de modificación dos veces es fácil y rápido

¿Puedo hacer algo similar en i3wm ?

¿Cómo se hacen uso de más de 10 espacios de trabajo en i3wm ? ¿Alguna otra solución?

i3 realmente no admite secuencias de teclas como vim . Cualquier enlace de key consiste en una sola tecla precedida por una list opcional de modificadores distintos (por lo tanto, no Shift+Shift ). Y todos los modificadores deben presionarse hacia abajo en el momento en que se presiona la tecla principal.

Dicho esto, hay dos forms principales de tener muchos espacios de trabajo sin tener que vincularlos a largas lists de modificadores:

1. Crear dinámicamente y acceder a áreas de trabajo con progtwigs externos

No es necesario definir un acceso directo para cada espacio de trabajo, puede simplemente crearlos sobre la marcha enviando un workspace NEW_WS a i3 , por ejemplo con el progtwig i3-msg :

 i3-msg workspace NEW_WS i3-msg move container to workspace NEW_WS 

i3 también viene con el command i3-input , que abre un pequeño campo de input y luego ejecuta un command con la input 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: ' 

Vincula estos dos commands a accesos directos y puedes 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 deseas. (Si solo trabaja con espacios de trabajo numerados, puede usar el workspace number %s lugar de solo el workspace %s de workspace %s )

2. Vincular estáticamente espacios de trabajo a accesos directos simples dentro de los modos de enlace key

Alternativamente, para un enfoque más estático, podría usar modos en su configuration de i3 . Puede tener modos separados para enfocar y mover 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 ú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 

En ambos ejemplos, el workspace o los commands de move están encadenados con el mode "default" , de modo que i3 vuelve automáticamente al map de enlace de teclas pnetworkingeterminado después de cada command.