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

== проверяет, равны или нет значения двух операндов, = присваивает значения из правых операндов левому операнду. Следующие строки должны работать:

awk '{ if($1>$3) $6=$1; else $6=1-$1; print $0; } ' test01 > test02 

или:

awk '$1>$3{ $6=$1; print $0; } $1<$3{ $6=1-$1; print $0; }' test01 > test02 

Потому что awk работает так:

awk 'condition1{main1} condition2{main2} ... conditionN{mainN}' file.txt

если не задано никаких условий, то всегда выполняется соответствующий main.

11
18.01.2017, 05:46
4 ответа

i3 на самом деле не поддерживает последовательности клавиш, как vim. Любая привязка клавиш состоит из одной клавиши, которой предшествует необязательный список отдельных (поэтому нет Shift+Shift) модификаторов. И все модификаторы должны быть нажаты в момент нажатия основной клавиши.

Учитывая это, есть два основных способа иметь много рабочих пространств без необходимости привязывать их к длинным спискам модификаторов:

1. Динамическое создание рабочих пространств и доступ к ним с помощью внешних программ

Вам не нужно определять ярлык для каждого рабочего пространства, вы можете просто создавать их на лету, посылая рабочее пространство 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: '

Привяжите эти две команды к ярлыкам, и вы сможете получить доступ к произвольному числу рабочих пространств, просто нажав ярлык и введя имя (или номер) нужного вам рабочего пространства. (Если вы работаете только с пронумерованными рабочими пространствами, возможно, вам захочется использовать номер рабочего пространства %s вместо просто рабочее пространство %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 автоматически возвращается к карте привязки клавиш по умолчанию после каждой команды.

21
27.01.2020, 19:58

Мое решение — использовать больше ключей:

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
6
27.01.2020, 19:58

Мое решение, основанное на ответе Лукаса:

# win principal, alt secondary
# set $mod Mod4
# set $mod2 Mod1
#
# # alt principal, win secondary
set $mod Mod1
set $mod2 Mod4

# switch to workspace
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# Workspaces 11-20, with mod2
bindsym $mod2+1 workspace 11
bindsym $mod2+2 workspace 12
bindsym $mod2+3 workspace 13
bindsym $mod2+4 workspace 14
bindsym $mod2+5 workspace 15
bindsym $mod2+6 workspace 16
bindsym $mod2+7 workspace 17
bindsym $mod2+8 workspace 18
bindsym $mod2+9 workspace 19
bindsym $mod2+0 workspace 20

# move focused container to workspace, keeping focus
bindsym $mod+Shift+1 move workspace 1; workspace 1
bindsym $mod+Shift+2 move workspace 2; workspace 2
bindsym $mod+Shift+3 move workspace 3; workspace 3
bindsym $mod+Shift+4 move workspace 4; workspace 4
bindsym $mod+Shift+5 move workspace 5; workspace 5
bindsym $mod+Shift+6 move workspace 6; workspace 6
bindsym $mod+Shift+7 move workspace 7; workspace 7
bindsym $mod+Shift+8 move workspace 8; workspace 8
bindsym $mod+Shift+9 move workspace 9; workspace 9
bindsym $mod+Shift+0 move workspace 10; workspace 10

bindsym $mod2+Shift+1 move workspace 11; workspace 11
bindsym $mod2+Shift+2 move workspace 12; workspace 12
bindsym $mod2+Shift+3 move workspace 13; workspace 13
bindsym $mod2+Shift+4 move workspace 14; workspace 14
bindsym $mod2+Shift+5 move workspace 15; workspace 15
bindsym $mod2+Shift+6 move workspace 16; workspace 16
bindsym $mod2+Shift+7 move workspace 17; workspace 17
bindsym $mod2+Shift+8 move workspace 18; workspace 18
bindsym $mod2+Shift+9 move workspace 19; workspace 19
bindsym $mod2+Shift+0 move workspace 20; workspace 20
1
06.01.2021, 09:20

Одним из элегантных способов сделать это может быть -переназначение Caps Lock на ключ Hyper с помощью xmodmap

поэтому создайте произвольный файл(~/.Xmodmap здесь в качестве примера )со следующим содержимым

remove Lock = Caps_Lock
keycode 66 shift  = Hyper_L Caps_Lock 
remove mod4 = Hyper_L
add Mod3 = Hyper_L

Приведенные выше конфигурации позволяют использовать клавишу Caps Lock в качестве гиперклавиши, а также я могу использовать ее в качестве клавиши Caps Lock с комбинацией Shift+Caps Lock

Соответственно в конфигурационном файле i3,я добавил следующее

# modifier in i3config 

set $super Mod4

set $alt Mod1

set $hyper Mod3

exec --no-startup-id xmodmap ~/.Xmodmap

Теперь в конфигурации i3 я могу использовать такие сочетания клавиш, как

bindsym $hyper+1 workspace 11 
bindsym $hyper+2 workspace 12 
bindsym $hyper+3 workspace 13

В случае, если вы в конечном итоге создадите беспорядок с переназначением клавиш клавиатуры, запуск setxkbmapв терминале без аргументов сбросит клавиатуру в исходное состояние по умолчанию

П.С. Гиперклавиша :, о которой я говорю, — это клавиша-модификатор , а не комбинация Ctrl+Shift+Alt в macOS, на которую указывают некоторые статьи.

0
24.04.2021, 18:01

Теги

Похожие вопросы