==
проверяет, равны или нет значения двух операндов, =
присваивает значения из правых операндов левому операнду.
Следующие строки должны работать:
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.
i3 на самом деле не поддерживает последовательности клавиш, как vim. Любая привязка клавиш состоит из одной клавиши, которой предшествует необязательный список отдельных (поэтому нет Shift+Shift
) модификаторов. И все модификаторы должны быть нажаты в момент нажатия основной клавиши.
Учитывая это, есть два основных способа иметь много рабочих пространств без необходимости привязывать их к длинным спискам модификаторов:
Вам не нужно определять ярлык для каждого рабочего пространства, вы можете просто создавать их на лету, посылая рабочее пространство 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
)
В качестве альтернативы, для более статичного подхода, можно использовать режимы в конфигурации 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 автоматически возвращается к карте привязки клавиш по умолчанию после каждой команды.
Мое решение — использовать больше ключей:
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
Мое решение, основанное на ответе Лукаса:
# 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
Одним из элегантных способов сделать это может быть -переназначение 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, на которую указывают некоторые статьи.