i3wm: mehr als 10 Arbeitsbereiche mit doppeltem Modifikatorschlüssel?

11

Vor kurzem habe ich angefangen, es zu benutzen i3wmund mich in es verliebt. Eines stört mich jedoch: die Steuerung von mehr als 10 Arbeitsbereichen.

In meiner Config $mod+1zu $mod+9schaltet zwischen den Arbeitsbereichen 1 bis 9 (und $mod+010), aber manchmal 10 Workspaces sind einfach nicht genug.

Im Moment erreiche ich, um Arbeitsbereich 11 bis 20 mit $mod+mod1+1zu $mod+mod1+0, das heißt hitting mod+alt+number. Natürlich funktioniert dies ohne Probleme, aber es ist ziemlich mühsam, solche Arbeitsbereiche zu wechseln, da die Tasten nicht leicht zu drücken sind. Darüber hinaus muss das Verschieben von Anwendungen zwischen den Arbeitsbereichen 11 bis 20 mod+shift+alt+number-> hässlich sein.

In meinen VimBindungen (ich habe viele Plugins) habe ich angefangen, Verknüpfungen mit doppelten Modifikatoren zu verwenden, wie modkey + rfür Plugin 1 und modkey + modkey + rfür Plugin 2. Auf diese Weise kann ich jede Taste zweimal binden und das zweimalige Drücken der Mod-Taste ist einfach und schnell.

Kann ich etwas Ähnliches tun i3wm?

Wie nutzen Sie mehr als 10 Arbeitsbereiche in i3wm? Irgendwelche anderen Lösungen?

daniel451
quelle
Ich weiß nicht, welche Art von Tastaturlayout Sie haben, aber könnten Sie einige / alle Tasten unten und rechts von den Zahlen oben verwenden? Das heißt, $ mod + q ist Arbeitsbereich 11 usw. Natürlich müssten Sie einen der verwendeten Schlüssel neu zuweisen.
Airhuff
Ja, aber dies reduziert effektiv die Anzahl der für i3Aktionen verfügbaren Verknüpfungen . Am liebsten hätte ich so etwas wie $mod + $mod + 1für Arbeitsbereich 11, so dass ich durch schnelles Drücken der Mod-Taste direkt auf den Arbeitsbereich 11-20 mit den Zifferntasten 1, 2, ..., 9, 0 zugreifen kann VimIch habe dieses Verhalten: leader + rist einer anderen Aktion zugeordnet als leader + leader + r, daher kann ich mit demselben Hotkey verschiedene Aktionen auslösen, indem ich nur ein- oder zweimal die Führungstaste drücke.
Daniel451

Antworten:

13

i3 unterstützt Schlüsselsequenzen wie vim nicht wirklich . Jede Schlüsselbindung besteht aus einem einzelnen Schlüssel, dem eine optionale Liste unterschiedlicher (also keine Shift+Shift) Modifikatoren vorangestellt ist . Alle Modifikatoren müssen zum Zeitpunkt des Drücken der Haupttaste gedrückt werden.

Davon abgesehen gibt es zwei Möglichkeiten, viele Arbeitsbereiche zu haben, ohne sie an lange Listen von Modifikatoren binden zu müssen:

1. Erstellen Sie dynamisch Arbeitsbereiche und greifen Sie mit externen Programmen darauf zu

Sie müssen nicht für jeden einzelnen Arbeitsbereich eine Verknüpfung definieren, sondern können diese einfach im laufenden Betrieb erstellen, indem Sie eine workspace NEW_WSan i3 senden , beispielsweise mit dem i3-msgProgramm:

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

i3 enthält auch den i3-inputBefehl, der ein kleines Eingabefeld öffnet und dann einen Befehl mit der angegebenen 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, möchten Sie diese möglicherweise workspace number %sanstelle von nur verwenden. workspace %s)

2. Binden Sie Arbeitsbereiche innerhalb der Schlüsselbindungsmodi statisch an einfache Verknüpfungen

Alternativ können Sie für einen statischeren Ansatz Modi in Ihrer i3- Konfiguration verwenden. Sie können separate Modi zum Fokussieren und Verschieben in Arbeitsbereiche verwenden:

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 haben separate Bindungen zum Fokussieren und Bewegen in einem einzigen Modus:

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 werden die Befehle workspaceoder moveverkettet mode "default", sodass i3 nach jedem Befehl automatisch zur Standard-Schlüsselbindungszuordnung zurückkehrt.

Adaephon
quelle
1

Meine Lösung hierfür besteht darin, einfach mehr Schlüssel zu verwenden:

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
quelle