i3 unterstützt Tastenfolgen wie vim nicht wirklich . Jede Tastenbindung besteht aus einem einzelnen Schlüssel, dem eine optionale Liste von eindeutigen Schlüsseln vorangestellt ist (also kein Shift+Shift
) Modifikatoren. Und alle Modifikatoren müssen gedrückt werden, wenn die Haupttaste gedrückt wird.
Abgesehen davon gibt es zwei Möglichkeiten, viele Arbeitsbereiche zu haben, ohne sie an lange Listen von Modifikatoren binden zu müssen:
1. Dynamische Erstellung und Zugriff auf Arbeitsbereiche mit externen Programmen
Sie müssen nicht für jeden einzelnen Arbeitsbereich eine Verknüpfung definieren, Sie können sie einfach spontan erstellen, indem Sie einen workspace NEW_WS
senden zu i3 , zum Beispiel mit dem i3-msg
Programm:
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
i3 kommt auch mit i3-input
Befehl, der ein kleines Eingabefeld öffnet und dann einen Befehl mit der gegebenen Eingabe als Parameter ausführt
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
Binden Sie diese beiden Befehle an Verknüpfungen und Sie können auf eine beliebige Anzahl von Arbeitsbereichen zugreifen, indem Sie einfach auf die Verknüpfung drücken und dann den Namen (oder die Nummer) des gewünschten Arbeitsbereichs eingeben. (Wenn Sie nur mit nummerierten Arbeitsbereichen arbeiten, sollten Sie vielleicht workspace number %s
verwenden statt nur workspace %s
)
2. Binden Sie Arbeitsbereiche innerhalb von Tastenbindungsmodi statisch an einfache Verknüpfungen
Alternativ können Sie für einen statischeren Ansatz Modi in Ihrem i3 verwenden Aufbau. Sie könnten separate Modi zum Fokussieren und Wechseln zu Arbeitsbereichen haben:
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
Oder Sie könnten separate Bindungen zum Fokussieren und Bewegen innerhalb eines einzigen Modus haben:
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 beiden Beispielen die workspace
oder move
Befehle werden mit mode "default"
verkettet , sodass i3 kehrt nach jedem Befehl automatisch zur Standard-Tastenbelegung zurück.
Meine Lösung dafür ist einfach die Verwendung von mehr Schlüsseln:
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