i3wm: plus de 10 espaces de travail avec double touche de modification?

11

Récemment, j'ai commencé à l'utiliser i3wmet j'en suis tombé amoureux. Cependant, une chose me dérange: contrôler plus de 10 espaces de travail.

Dans ma configuration $mod+1pour $mod+9basculer entre les espaces de travail 1 à 9 (et $mod+0pour 10), mais parfois 10 espaces de travail ne suffisent pas.

En ce moment, j'atteins l'espace de travail 11 à 20 avec $mod+mod1+1to $mod+mod1+0, c'est- à -dire frapper mod+alt+number. Bien sûr, cela fonctionne sans problème, mais c'est assez compliqué de changer d'espace de travail comme ça, car les touches ne sont pas faciles à frapper. De plus, le déplacement d'applications entre les espaces de travail 11 à 20 nécessite mod+shift+alt+number-> laid.

Dans mes Vimliaisons (j'ai beaucoup de plugins), j'ai commencé à utiliser des raccourcis double modificateur, comme modkey + rpour le plugin 1 et le modkey + modkey + rplugin 2. De cette façon, je peux lier chaque touche deux fois et frapper la touche mod deux fois est facile et rapide.

Puis-je faire quelque chose de similaire dans i3wm?

Comment utilisez-vous plus de 10 espaces de travail dans i3wm? D'autres solutions?

daniel451
la source
Je ne sais pas quel type de disposition de clavier vous avez, mais pourriez-vous utiliser certaines / toutes les touches ci-dessous et à droite des chiffres en haut? c'est-à-dire que $ mod + q est l'espace de travail 11, etc. Bien sûr, vous devrez réaffecter l'une de ces clés en cours d'utilisation.
airhuff
Oui, mais cela réduit effectivement le nombre de raccourcis disponibles pour les i3actions. De préférence, je voudrais avoir quelque chose comme $mod + $mod + 1pour l'espace de travail 11, de sorte qu'une double pression rapide sur la touche mod me permette directement d'aller à l'espace de travail 11-20 avec la touche numérique 1, 2, ..., 9, 0. Dans VimJ'ai ce comportement: leader + rest mappé à une autre action que leader + leader + r, donc je peux déclencher différentes actions avec le même raccourci clavier en appuyant simplement une ou deux fois sur la touche de repère.
daniel451

Réponses:

14

i3 ne prend pas vraiment en charge les séquences de touches comme vim . Toute liaison de clé consiste en une seule clé précédée d'une liste facultative de Shift+Shiftmodificateurs distincts (donc non ). 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 aux espaces de travail avec des programmes externes

Vous ne pouvez pas avoir à définir de 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-msgprogramme:

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

i3 est également livré avec la i3-inputcommande, qui ouvre un petit champ de saisie puis exécute une commande avec l'entrée donnée en 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 voudrez peut-être utiliser workspace number %sau lieu de simplement workspace %s)

2. Liez statiquement des espaces de travail à des raccourcis simples dans les modes de liaison clés

Alternativement, pour une approche plus statique, vous pouvez utiliser des modes dans votre configuration i3 . 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 pouvez 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, les commandes workspaceou movesont chaînées mode "default", de sorte que i3 revient automatiquement à la mappe de liaison de touches par défaut après chaque commande.

Adaephon
la source
1

Ma solution est d'utiliser simplement 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
Lukas Elsner
la source