i3wm: più di 10 aree di lavoro con doppio tasto modificatore?


11

Di recente, ho iniziato a usarlo i3wme me ne sono innamorato. Tuttavia, una cosa mi disturba: controllare più di 10 aree di lavoro.

Nella mia configurazione $mod+1per $mod+9passare da un'area di lavoro 1 a 9 (e $mod+0per 10), ma a volte 10 aree di lavoro non sono sufficienti.

Al momento raggiungo lo spazio di lavoro da 11 a 20 con $mod+mod1+1to $mod+mod1+0, cioè colpendo mod+alt+number. Ovviamente questo funziona senza problemi, ma è piuttosto una seccatura cambiare area di lavoro in questo modo, poiché i tasti non vengono premuti facilmente. Inoltre, lo spostamento di applicazioni tra le aree di lavoro da 11 a 20 richiede mod+shift+alt+number-> brutte.

Nei miei Vimcollegamenti (ho molti plugin) ho iniziato ad usare scorciatoie a doppio modificatore, come modkey + rper il plugin 1 e modkey + modkey + rper il plugin 2. In questo modo posso legare ogni tasto due volte e premere due volte il tasto mod è facile e veloce.

Posso fare qualcosa di simile in i3wm?

Come si utilizzano più di 10 aree di lavoro in i3wm? Qualche altra soluzione?


Non so che tipo di layout di tastiera hai, ma potresti usare alcuni / tutti i tasti in basso a destra dei numeri nella parte superiore? vale a dire $ mod + q è lo spazio di lavoro 11, ecc. Naturalmente dovresti riassegnare uno di quei tasti che sono in uso.
Airhuff,

Sì, ma ciò riduce efficacemente il numero di scorciatoie disponibili per le i3azioni. Preferibilmente, vorrei avere qualcosa di simile $mod + $mod + 1allo spazio di lavoro 11, in modo che una doppia pressione veloce del tasto mod mi consenta direttamente di andare nello spazio di lavoro 11-20 con il tasto numerico 1, 2, ..., 9, 0. In VimHo questo comportamento: leader + rè mappato su un'altra azione di leader + leader + r, quindi posso innescare diverse azioni con lo stesso tasto di scelta rapida semplicemente premendo il tasto guida una o due volte.
daniel451,

Risposte:


14

i3 non supporta realmente sequenze di tasti come vim . Qualsiasi associazione di tasti è costituita da un'unica chiave preceduta da un elenco opzionale di modificatori distinti (quindi no Shift+Shift). E tutti i modificatori devono essere premuti nel momento in cui viene premuto il tasto principale.

Detto questo, ci sono due modi principali per avere molte aree di lavoro senza doverle associare a lunghi elenchi di modificatori:

1. Creare e accedere in modo dinamico alle aree di lavoro con programmi esterni

Non è necessario definire un collegamento per ogni singolo spazio di lavoro, è possibile crearli al volo inviando a workspace NEW_WSa i3 , ad esempio con il i3-msgprogramma:

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

i3 viene inoltre fornito con il i3-inputcomando, che apre un piccolo campo di input, quindi esegue un comando con l'input specificato come parametro

i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '

Associa questi due comandi alle scorciatoie e puoi accedere a un numero arbitrario di aree di lavoro semplicemente premendo il collegamento e immettendo il nome (o il numero) dell'area di lavoro desiderata. (Se lavori solo con aree di lavoro numerate, potresti voler usare workspace number %sinvece di semplicemente workspace %s)

2. Associare staticamente gli spazi di lavoro a semplici collegamenti all'interno delle modalità di associazione dei tasti

In alternativa, per un approccio più statico, è possibile utilizzare le modalità nella configurazione di i3 . Potresti avere modalità separate per mettere a fuoco e passare alle aree di lavoro:

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

Oppure potresti avere attacchi separati per la messa a fuoco e lo spostamento all'interno di una singola modalità:

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 entrambi gli esempi i comandi workspaceo movesono concatenati mode "default", in modo che i3 ritorni automaticamente alla mappa di associazione dei tasti predefinita dopo ogni comando.


1

La mia soluzione a questo è solo usando più chiavi:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.