dan*_*451 19 linux arch-linux keyboard-shortcuts workspaces i3
最近,我开始使用i3wm并爱上了它。然而,有一件事情困扰着我:控制 10 多个工作区。
在我的配置中,$mod+1要$mod+9在 1 到 9(以及$mod+010 个)工作区之间切换,但有时 10 个工作区还不够。
目前,我使用$mod+mod1+1to到达工作区 11 到 20 $mod+mod1+0,即点击mod+alt+number。当然,这样做没有任何问题,但是像这样切换工作区是很麻烦的,因为按键不容易被击中。此外,在工作区 11 到 20 之间移动应用程序需要mod+shift+alt+number-> 丑陋。
在我的Vim绑定中(我有很多插件),我开始使用双修饰符快捷方式,例如modkey + r插件 1 和modkey + modkey + r插件 2。这样我可以将每个键绑定两次,并且按两次 mod 键既简单又快速。
我可以做类似的事情i3wm吗?
您如何利用 10 多个工作区i3wm?还有其他解决方案吗?
Ada*_*hon 21
i3并不真正支持像vim这样的键序列。任何键绑定都包含一个单独的键,前面是一个可选的不同(因此没有Shift+Shift)修饰符列表。并且所有的修饰符都需要在按下主键的同时按下。
话虽如此,有两种主要方法可以拥有大量工作区,而不必将它们绑定到一长串修饰符:
您不必为每个工作区定义快捷方式,您可以通过向i3发送 aworkspace NEW_WS来动态创建它们,例如使用程序:i3-msg
i3-msg workspace NEW_WS
i3-msg move container to workspace NEW_WS
Run Code Online (Sandbox Code Playgroud)
i3还带有i3-input命令,它打开一个小的输入字段,然后以给定的输入作为参数运行命令
i3-input -F 'workspace %s' -P 'go to workspace: '
i3-input -F 'move container to workspace %s' -P 'move to workspace: '
Run Code Online (Sandbox Code Playgroud)
将这两个命令绑定到快捷方式,您只需按下快捷方式,然后输入所需工作区的名称(或编号)即可访问任意数量的工作区。(如果您只使用编号的工作区,您可能想要使用workspace number %s而不仅仅是workspace %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
Run Code Online (Sandbox Code Playgroud)
或者你可以有单独的绑定,用于在单一模式中聚焦和移动:
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
Run Code Online (Sandbox Code Playgroud)
在这两个示例中,workspaceormove命令都与 链接mode "default",以便i3在每个命令之后自动返回到默认的键绑定映射。
小智 6
我对此的解决方案只是使用更多键:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8469 次 |
| 最近记录: |