Linux i3 用户手册(简要)
i3 用户手册
与\(mod一起使用的键 一般为`Win`键或为`Alt`键, 可以和与 `Shift`+`\)mod` 一起使用
按键参考图
红色键是您需要按下的修饰符(默认情况下),蓝色键是您的主页。
在本指南中,关键字$mod
将用于引用配置的修饰符。默认情况下,这是 Alt 键 (Mod1
),Windows 键 (Mod4
) 是一种流行的替代项,可以在很大程度上防止与应用程序定义的快捷方式发生冲突。
打开终端
一个非常基本的操作是打开一个新的终端。默认情况下,此操作的键绑定为 $mod+Enter
,即默认配置中的 Alt+Enter (Mod1+Enter
)。通过按$mod + Enter
,将打开一个新终端。它将填充屏幕上的整个可用空间。
如果您现在打开另一个终端,i3会将其放在当前终端旁边,将屏幕尺寸分成两半。根据您的显示器,i3会将创建的窗口放在现有窗口旁边(在宽显示屏上)或现有窗口下方(旋转显示屏)。
- 要在两个终端之间移动焦点,可以使用箭头键。为方便起见,箭头也可直接放在右手下方键盘的主排上:
$mod+j |
左 |
---|---|
$mod+k |
下 |
$mod+l |
向上 |
$mod+; |
右 |
若要垂直拆分窗口,请在创建新窗口之前按 $mod+v
。要将其水平拆分,请按 $mod+h
。
- 要切换模式,请按
$mod+e
键进行 splith/splitv(它切换),按 $mod+s
进行堆叠,按 $mod+w
键进行选项卡式操作。
切换窗口的全屏模式
要以全屏模式显示窗口或再次退出全屏模式,请按 $mod+f
。
打开其他应用程序
除了从终端打开应用程序外,您还可以使用方便的dmenu
,默认情况下通过按$mod + d
打开。只需键入要打开的应用程序的名称(或其一部分)。相应的应用程序必须在您的$PATH
才能正常工作。
此外,如果您有非常频繁打开的应用程序,则可以创建用于直接启动应用程序的键绑定。
关闭窗口
如果应用程序不提供关闭机制(大多数应用程序提供菜单、转义键或快捷键(如 Control+w
)来关闭),则可以按 $mod+Shift+q
来终止窗口。对于支持WM_DELETE协议的应用程序,这将正确关闭应用程序(保存任何修改或执行其他清理)。如果应用程序不支持WM_DELETE协议,您的 X 服务器将终止窗口,并且行为取决于应用程序。
2.6. 使用工作区
工作区是对一组窗口进行分组的简便方法。默认情况下,您位于第一个工作区上,如左下角的栏所示。若要切换到另一个工作区,请按 $mod+num
,其中 num
是要使用的工作区的编号。如果工作区尚不存在,则将创建它。
将窗口移动到工作区
要将窗口移动到另一个工作区,只需按 $mod+Shift+num
,其中 num
是目标工作区的编号(类似于切换工作区时)。与切换工作区类似,如果目标工作区尚不存在,则将创建该工作区。
就地重启 i3
要就地重新启动i3(如果存在错误,则可以进入干净状态,或者升级到较新版本的i3),您可以使用$mod + Shift + r
。
退出 i3
要干净地退出i3而不会杀死X服务器,您可以使用$mod + Shift + e
。默认情况下,对话框将要求您确认是否确实要退出。
浮动
浮动模式与平铺模式相反。窗口的位置和大小不是由 i3 自动管理,而是由您手动管理。使用此模式违反了平铺范例,但对于某些极端情况(如“另存为”对话框窗口或工具栏窗口(GIMP 或类似窗口))可能很有用。这些窗口通常设置适当的提示,默认情况下以浮动模式打开。
您可以通过按$mod+ Shift + 空格
键来切换窗口的浮动模式。通过用鼠标拖动窗口的标题栏,您可以移动窗口。通过抓取边框并移动它们,您可以调整窗口的大小。
配置 i3
要更改 i3 的配置,请将 /etc/i3/config
复制到 ~/.i3/config
(如果您喜欢 XDG 目录方案,则复制 ~/.config/i3/config
)并使用文本编辑器进行编辑。
在首次启动时(以及所有后续启动,除非您有配置文件),i3 将为您提供创建配置文件的功能。您可以告诉向导在配置文件中使用 Alt (Mod1
) 或 Windows (Mod4
) 作为修饰符。此外,创建的配置文件将使用当前键盘布局的关键符号。要启动向导,请使用命令 i3-config-wizard
。请注意,您不能有 ~/.i3/config
,否则向导将退出。
从 i3 4.0 开始,将使用新的配置格式。i3 将尝试根据几个不同的关键字自动检测配置文件的格式版本,但如果要确保使用新格式读取配置,请在配置文件中包含以下行:
# i3 config file (v4)
字体
i3支持X核心字体和FreeType字体(通过Pango)来渲染窗口标题。要生成 X 核心字体描述, 可以使用 xfontsel(1)
.要查看特殊字符 (Unicode),您需要使用支持 ISO-10646 编码的字体。
FreeType 字体说明由字体系列、样式、粗细、变体、拉伸和大小组成。FreeType 字体支持从右向左呈现,并且通常包含比 X 核心字体更多的 Unicode 字形。如果 i3 无法打开配置的字体,它将在日志文件中输出错误并回退到工作字体。
语法:
font <X core font description>
font pango:<family list> [<style options>] <size>
示例:
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
font pango:DejaVu Sans Mono 10
font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11
font pango:Terminus 11px
键盘绑定
键盘绑定使 i3 在按下特定键时执行命令(见下文)。i3 允许您在键码或键符号上进行绑定(您也可以混合绑定,尽管 i3 不会保护您免受重叠绑定的影响)。
- 键符号(key symbol)是对特定符号的描述,如“a”或“b”,但也有更奇怪的符号,如“下划线”而不是“_”。这些是您在Xmodmap中用于重新映射密钥的那些。要获取密钥的当前映射,请使用
xmodmap -pke
。要以交互方式输入密钥并查看将其配置为哪个密钥符号,请使用xev
。 - 键码不需要分配符号(对于某些笔记本电脑上的自定义供应商热键来说很方便),并且当您切换到不同的键盘布局(使用
xmodmap
时),它们不会更改其含义。
我的建议是:如果您经常切换键盘布局,但希望将绑定保留在键盘上的相同物理位置,请使用键码。如果您不切换布局,并且想要一个干净简单的配置文件,请使用键符号。某些工具(如 import
或 xdotool
)可能无法在 KeyPress 事件时运行,因为键盘/指针仍被抓取。对于这些情况,可以使用 --release
标志,该标志将在释放键后执行命令。
语法:
bindsym [--release] [<Group>+][<Modifiers>+]<keysym> command
bindcode [--release] [<Group>+][<Modifiers>+]<keycode> command
示例:
# Fullscreen
bindsym $mod+f fullscreen toggle
# Restart
bindsym $mod+Shift+r restart
# Notebook-specific hotkeys
bindcode 214 exec --no-startup-id /home/michael/toggle_beamer.sh
# Simulate ctrl+v upon pressing $mod+x
bindsym --release $mod+x exec --no-startup-id xdotool key --clearmodifiers ctrl+v
# Take a screenshot upon pressing $mod+x (select an area)
bindsym --release $mod+x exec --no-startup-id import /tmp/latest-screenshot.png
鼠标绑定
鼠标绑定使 i3 在单击的容器的作用域中按特定鼠标按钮时执行命令(请参阅 [command_criteria])。可以采用与键绑定类似的方式配置鼠标绑定。
语法:
bindsym [--release] [--border] [--whole-window] [--exclude-titlebar] [<Modifiers>+]button<n> command
默认情况下,绑定将仅在您单击窗口的标题栏时运行。如果给出了 --release
标志,它将在释放鼠标按钮时运行。
如果给出了 --whole-window
标志,则在单击窗口的任何部分(边框除外)时,绑定也将运行。要在单击边框时运行绑定,请指定 --border
标志。
如果给出了 --exclude-titlebar
标志,则不会考虑将标题栏用于键绑定。
示例:
# The middle button over a titlebar kills the window
bindsym --release button2 kill
# The middle button and a modifer over any part of the window kills the window
bindsym --whole-window $mod+button2 kill
# The right button toggles floating
bindsym button3 floating toggle
bindsym $mod+button3 floating toggle
# The side buttons move the window around
bindsym button9 move left
bindsym button8 move right
绑定模式
通过使用不同的绑定模式,可以具有多组绑定。切换到另一种绑定模式时,将释放当前模式中的所有绑定,并且只要您保持该绑定模式,只有在新模式下定义的绑定才有效。唯一预定义的绑定模式是默认
的,即模式 i3 的开头,所有未在特定绑定模式下定义的绑定都属于该模式。
使用绑定模式由两部分组成:定义绑定模式和切换到绑定模式。出于这些目的,有一个配置指令和一个命令,这两个指令都称为 mode
。该指令用于定义属于某个绑定模式的绑定,而命令将切换到指定的模式。
建议将绑定模式与 [变量] 结合使用,以便于维护。下面是如何使用绑定模式的示例。
请注意,建议定义用于切换回默认模式的绑定。
请注意,可以将 [pango_markup] 用于绑定模式,但您需要通过将 --pango_markup
标志传递给模式定义来显式启用它。
语法:
# config directive
mode [--pango_markup] <name>
# command
mode <name>
示例:
# Press $mod+o followed by either f, t, Escape or Return to launch firefox,
# thunderbird or return to the default mode, respectively.
set $mode_launcher Launch: [f]irefox [t]hunderbird
bindsym $mod+o mode "$mode_launcher"
mode "$mode_launcher" {
bindsym f exec firefox
bindsym t exec thunderbird
bindsym Escape mode "default"
bindsym Return mode "default"
}
变量
正如您在有关键盘绑定的部分中所了解的那样,您将必须配置许多包含修饰键的绑定。如果您想节省一些类型,并能够更改以后使用的修饰符,则变量可能很方便。
语法:
set $<name> <value>
示例:
set $m Mod1
bindsym $m+Shift+r restart
浮动修饰符
要使用鼠标移动浮动窗口,您可以抓住它们的标题栏或配置所谓的浮动修饰符,然后您可以按住并单击窗口本身中的任何位置以移动它。最常见的设置是使用与管理窗口相同的密钥(例如 Mod1)。然后,您可以按Mod1,使用鼠标左键单击窗口,然后将其拖动到所需的位置。
按住浮动修饰符时,可以通过在其上按鼠标右键并在按住浮动窗口的同时四处移动来调整浮动窗口的大小。如果同时按住 Shift 按钮,调整大小将成比例(将保留纵横比)。
语法:
floating_modifier <Modifier>
示例:
floating_modifier Mod1
限制浮动窗口大小
可以指定浮动窗口的最大和最小尺寸。如果将 floating_maximum_size
的任一维度指定为 -1,则该维度相对于其最大值将不受约束。如果未定义floating_maximum_size
的任一尺寸,或将其指定为 0,则 i3 将使用默认值来约束最大大小。floating_minimum_size
的处理方式类似于floating_maximum_size
。
语法:
floating_minimum_size <width> x <height>
floating_maximum_size <width> x <height>
示例:
floating_minimum_size 75 x 50
floating_maximum_size -1 x -1
窗口标题对齐
此选项确定窗口标题的文本对齐方式。默认值为左
语法:
title_align left|center|right
新窗口的默认边框样式
此选项确定新窗口将具有哪种边框样式。默认值为正常
。请注意,default_floating_border仅适用于最初作为浮动窗口开始的窗口,例如对话框窗口,但不适用于以后浮动的窗口。
将边框样式设置为像素
会消除标题栏。常规
边框样式允许您在保留标题栏的同时调整边缘边框宽度。
语法:
default_border normal|none|pixel
default_border normal|pixel <px>
default_floating_border normal|none|pixel
default_floating_border normal|pixel <px>
请注意,new_window
和new_float
已被弃用,取而代之的是上述选项,并将在将来的版本中被删除。我们强烈建议改用新选项。
示例:
default_border pixel
“普通”和“像素”边框样式支持可选边框宽度(以像素为单位):
示例:
# The same as default_border none
default_border pixel 0
# A 3 px border
default_border pixel 3
隐藏屏幕边缘附近的边框
您可以使用hide_edge_borders
隐藏与屏幕边缘相邻的容器边框。如果您使用的是滚动条,或者不想在显示空间中浪费两个像素,这将非常有用。“智能”设置隐藏了工作区的边框,只有一个窗口可见,但将它们保留在具有多个窗口可见的工作区上。默认值为无。
语法:
hide_edge_borders none|vertical|horizontal|both|smart
示例:
hide_edge_borders vertical
在 i3 启动时自动启动应用程序
通过在键绑定外部使用 exec
关键字,可以配置 i3 在初始启动时将执行哪些命令。重新启动 i3 时不会运行 exec
命令,如果在重新启动 i3 时也需要运行命令,则应使用 exec_always
关键字。这些命令将按顺序运行。
有关;
(分号)和,(逗号)的特殊含义的详细信息,
请参阅[command_chaining]:它们在i3中将命令链接在一起,因此,如果它们出现在命令中,则需要使用带引号的字符串(如[exec_quoting]所示)。
语法:
exec [--no-startup-id] <command>
exec_always [--no-startup-id] <command>
示例:
exec chromium
exec_always ~/my_script.sh
# Execute the terminal emulator urxvt, which is not yet startup-notification aware.
exec --no-startup-id urxvt
标志 --no-startup-id 在 [exec] 中进行了说明。
更改颜色
您可以更改i3用于绘制窗口装饰的所有颜色。
语法:
<colorclass> <border> <background> <text> <indicator> <child_border>
其中 colorclass 可以是以下之一:
-
以客户为中心
当前具有焦点的客户。
-
client.focused_inactive
一个客户端,它是其容器中的焦点之一,但它目前没有焦点。
-
客户端.未聚焦
不是其容器的焦点客户端。
-
客户紧急
已激活其紧急程度提示的客户端。
-
客户端占位符
背景和文本颜色用于绘制占位符窗口内容(恢复布局时)。边框和指示器将被忽略。
-
客户端.后台
背景色,将用于绘制客户端窗口的背景,客户端将在其上呈现。只有未覆盖此窗口整个区域的客户端才会显示颜色。请注意,此颜色类仅采用一种颜色。
颜色采用 HTML 十六进制格式 (#rrggbb),请参阅以下示例:
示例(默认颜色)::
# class border backgr. text indicator child_border
client.focused #4c7899 #285577 #ffffff #2e9ef4 #285577
client.focused_inactive #333333 #5f676a #ffffff #484e50 #5f676a
client.unfocused #333333 #222222 #888888 #292d2e #222222
client.urgent #2f343a #900000 #ffffff #900000 #900000
client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c
client.background #ffffff
请注意,对于窗口装饰,子窗口周围的颜色是“child_border”,而“边框”颜色只是标题栏周围的两条细线。
指标颜色用于指示新窗口的打开位置。对于水平拆分容器,右边框将绘制为指示符颜色,对于垂直拆分容器,则绘制为底部边框。这仅适用于拆分容器中的单个窗口,否则这些窗口与拆分容器外部的单个窗口无法区分。
焦点跟随鼠标
默认情况下,当鼠标穿过窗口边框时,窗口焦点会跟随鼠标移动。但是,如果您的设置通常鼠标挡在路上(例如您不想完全禁用的笔记本电脑上的触摸板),则可能希望仅使用键盘禁用鼠标后焦点和控制焦点。鼠标在当前活动窗口中仍然很有用(例如,单击浏览器窗口中的链接)。
语法:
focus_follows_mouse yes|no
示例:
focus_follows_mouse no
常用的配置大致给出
win+d:打开dmenu
win+Enter:新建一个Terimal
win+f:窗口全屏
win+r:存在多个窗口时,调整窗口大小
win+t:新建窗口有标签栏
win+y:新建窗口有边框
win+u:新建窗口无标签栏无边框
win+num:跳转到工作区num
win+h:光标移到右边的窗口
win+j:光标移到下面的窗口
win+k:光标移到上面的窗口
win+l:光标移到左边的窗口
win+Shift+num:将当前窗口转移到工作区num
win+Shift+h:将光标所在的窗口移到右边
win+Shift+j:将光标所在的窗口移到下面
win+Shift+k:将光标所在的窗口移到上面
win+Shift+l:将光标所在的窗口移到左边
win+Shift+r:重启i3wm
win+Shift+c:重新加载i3wm配置文件
win+Shift+e:退出i3wm
win+Shift+q:关闭当前窗口
win+Shift+f:打开firefox浏览器
win+Ctrl+h:下一次新建窗口时,水平分割窗口
win+Ctrl+v:下一次新建窗口时,垂直分割窗口
参考链接