i3wm: більше 10 робочих просторів з подвійним ключем модифікатора?


11

Нещодавно я почав користуватися i3wmі полюбив це. Однак мене турбує одне: контроль понад 10 робочих просторів.

У моєму конфігурації $mod+1для $mod+9перемикання між робочими просторами 1 на 9 (і $mod+0на 10), але іноді 10 робочих просторів просто недостатньо.

На даний момент я достукатися до робочих 11 до 20 з $mod+mod1+1до $mod+mod1+0, тобто удару mod+alt+number. Звичайно, це працює без будь-яких проблем, але досить складно перемикати робочі простори таким чином, оскільки клавіші не вдаряються легко. Крім того, переміщення програм між робочими просторами 11 до 20 вимагає mod+shift+alt+number-> негарного.

У своїх Vimприв'язках (у мене багато плагінів) я почав використовувати подвійні ярлики модифікаторів, як modkey + rдля плагіна 1 та modkey + modkey + rдля плагіна 2. Таким чином я можу зв’язати кожну клавішу двічі, і натиснути клавішу мода двічі легко і швидко.

Чи можу я зробити щось подібне i3wm?

Як ви використовуєте більше 10 робочих просторів i3wm? Будь-які інші рішення?


Я не знаю, яка у вас розкладка клавіатури, але чи можете ви використовувати деякі / всі клавіші внизу та праворуч від цифр вгорі? тобто $ mod + q - це робоча область 11 і т. д. Звичайно, вам доведеться перепризначити будь-який з тих клавіш, які використовуються.
повітряний удар

Так, але це ефективно зменшує кількість ярликів, доступних для i3дій. Переважно, я хотів би мати щось на зразок $mod + $mod + 1робочої області 11, так що швидке подвійне натискання клавіші mod безпосередньо дозволяє мені перейти до робочої області 11-20 за допомогою цифрової клавіші 1, 2, ..., 9, 0. В VimУ мене така поведінка: leader + rвідображається на іншу дію ніж leader + leader + r, тому я можу запускати різні дії однією і тією ж гарячою клавішею, просто натиснувши клавішу лідера один чи два рази.
daniel451

Відповіді:


14

i3 насправді не підтримує такі ключові послідовності, як vim . Будь-яке прив'язка клавіш складається з одного ключа, якому передує необов'язковий перелік різних (так що ні Shift+Shift) модифікаторів. І всі модифікатори повинні бути натиснуті під час натискання основної клавіші.

При цьому, є два основні способи мати багато робочих просторів, не прив'язуючи їх до довгих списків модифікаторів:

1. Динамічно створюйте робочі місця та отримуйте доступ до них із зовнішніми програмами

Не потрібно визначати ярлик для кожної робочої області, ви можете просто створити їх на льоту, надіславши workspace NEW_WSдо i3 , наприклад, з i3-msgпрограмою:

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

i3 також поставляється з i3-inputкомандою, яка відкриває невелике поле введення, а потім виконує команду з заданим входом як параметр

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

Прив’яжіть ці дві команди до ярликів, і ви можете отримати доступ до довільної кількості робочих просторів, просто натиснувши ярлик, а потім ввівши ім'я (або номер) потрібної робочої області. (Якщо ви працюєте лише з нумерованими робочими просторами, ви можете використовувати workspace number %sзамість просто workspace %s)

2. Статично прив'язуйте робочі простори до простих ярликів у ключових режимах прив'язки

Крім того, для статичного підходу ви можете використовувати режими в конфігурації i3 . Ви можете мати окремі режими фокусування та переміщення до робочих просторів:

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

Або у вас можуть бути окремі прив’язки для фокусування та переміщення в одному режимі:

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

В обох прикладах команди workspaceабо moveкоманди пов'язані ланцюжком mode "default", так що i3 автоматично повертається назад до карти прив'язки ключа за замовчуванням після кожної команди.


1

Моє рішення для цього - просто використання більше клавіш:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.