命令列表

命令是你绑定在特定按键组合上的东西。你也可以通过使用 IPC 接口在运行时运行命令,而不需要按下一个键,一个简单的方法是使用 i3-msg 工具。

举例:

# 在你的 shell 中执行这个命令,去除当前的容器的边界
i3-msg border none

多个命令可以用 ;(分号)连接。所以,如果想要将一个窗口移动到一个工作区中并立即切换到这个工作区,你可以配置如下的按键绑定:

bindsym $mod+x move container to workspace 3; workspace 3

另外,你还可以更改命令的作用域——即哪些容器会受到该命令的影响。判断标准在命令之前用一对方括号指定,用空格隔开。

当作用域用于多条命令时,应使用 ,(逗号)而不是分号来分隔它们。判断标准只适用到下一个分号之前,所以如果你使用分号来分隔命令,只有第一个命令会对被匹配的窗口执行。

举例:

# 如果你想杀死所有 class 是 Firefox 的窗口,使用:
bindsym $mod+x [class="Firefox"] kill

# 同上,除了匹配时忽略大小写
bindsym $mod+x [class="(?i)firefox"] kill

# 只杀死 Firefox 的关于对话框
bindsym $mod+x [class="Firefox" window_role="About"] kill

# 打开浮动模式并移动容器到工作区 4
for_window [class="^evil-app$"] floating enable, move container to workspace 4

# 移动所有浮动窗口到 scratchpad
bindsym $mod+x [floating] move scratchpad

目前已实现的判断标准有:

class:
比较 window class(WM_CLASS 的第二部分)。使用特殊值 __focused__ 匹配 window class 和目前拥有焦点的窗口相同的所有窗口。

instance:
比较 window instance(WM_CLASS 的第二部分)。使用特殊值 __focused__ 匹配 window instance 和目前拥有焦点的窗口相同的所有窗口。

window_role:
比较 window role(WM_WINDOW_ROLE)。使用特殊值 __focused__ 匹配 window role 和目前拥有焦点的窗口相同的所有窗口。

window_type:
比较 window type(_NET_WM_WINDOW_TYPE)。合法值有 normal, dialog, utility, toolbar, splash, menu, dropdown_menu, popup_menu, tooltipnotification

id:
比较 X11 window ID,你可以使用 xwininfo 获得 ID。

title:
比较 X11 窗口标题(_NET_WM_NAME 或者默认值 WM_NAME)。使用特殊值 __focused__ 匹配窗口标题和目前拥有焦点的窗口相同的所有窗口。

urgent:
比较窗口的紧急状况。值可以是 "latest" 或者 "oldest",分别匹配最新的和最旧的紧急窗口。

workspace:
比较窗口所在工作区的名字。使用特殊值 __focused__ 匹配目前拥有焦点的工作区中的所有窗口。

con_mark:
比较此容器的标记,见类似 VIM 的标记。如果一个容器的多个标记中有一个标记被匹配,这个容器就会被匹配。

con_id:
比较 i3 内部的容器 ID,你可通过 IPC 接口获得 ID。写脚本时使用它比较方便。使用特殊值 __focused__ 匹配目前拥有焦点的那个窗口。

floating:
只匹配浮动窗口。这个判断标准没有值。

floating_from:
floating 相似但这个判断标准有两个可能的值:"auto" 和 "user"。当值是 "auto" 时,只有打开时就自动是浮动状态的窗口会被匹配。当值是 "user" 时,只有被用户改变为浮动的窗口会被匹配。

tiling:
只匹配平铺窗口。这个判断标准没有值。

tiling_from:
tiling 相似但这个判断标准有两个可能的值:"auto" 和 "user"。当值是 "auto" 时,只有打开时就自动是平铺状态的窗口会被匹配。当值是 "user" 时,只有被用户改变为平铺的窗口会被匹配。

判断标准 class, instance, role, title, workspacemark 都是正则表达式(PCRE)。如何使用请见 pcresyntax(3)perldoc perlre