Mslxl

Integrate Life

i3 User's Guide 进阶操作篇(对应第 3 节)

Posted at # 译 # i3wm # Linux

原页面

该文档包含了配置和使用 i3 的所有信息。如果没有您所需要的信息,请先检查https://www.reddit.com/r/i3wm/ 是否已包含您所需要的内容,然后再通过 IRC (推荐)或者电子邮件咨询。

3. 树

i3 以树结构存储 X11 的输出,工作空间和窗口布局的所有信息。根节点是 X11 根窗口,接着是 X11 输出,然后是停靠区和内容容器,然后是工作区,最后是窗口本身。在以前版本的 I3 中,我们有多个集合(包含输出、工作区)和每个工作区的表。这种方法使用起来很复杂,而且很难理解和实施。

3.1. 容器树

组成树的每一个节点都叫做容器(Containers),一个容器(Container)可以容纳一个窗口( X11 窗口,就是那种可以看见并操作的,比如浏览器)。不过,容器(Container)也可以容纳其他的容器(Containers)。举一个十分常见的例子:当你在一个用一个显示器启动 i3 并在一个工作空间中打开两个终端,将会是像这样的一棵树:

tree-shot4tree-layout2

3.2. 定向分割容器

当使用树型结构作为数据结构时,使用所谓的分割容器(Split Containers)来构建布局是很自然的。在 i3 中,每个容器都有方向(水平、垂直或未指定),并且方向取决于容器的布局(横向布局、纵向布局、堆叠、和选项卡)。在我们的工作区示例中,工作区容器的默认布局是横向分割(现在大多数监视器都是宽屏的)。如果将布局更改为 纵向布局(splitv)(默认按 $mod+v ),然后打开两个终端,i3 将显示如下窗口:

tree-shot2

从 v4 向后的版本可以拆分一切的东西:假设在工作空间上有两个终端(横向布局),将焦点移动到右面的终端,现在你想在下面再打开一个终端。如果你直接打开新终端,由于横向布局的原因,它会显示在右边。因此应该按下 $mod + v 将当前容器切换到纵向布局(切换到横向布局按$mod+h),现在再打开一个新终端,他会显示在当前的终端下面

tree-shot1tree-layout1

你可能已经猜到了:这棵树并没有深度限制

3.3. 移动焦点到父容器

让我们继续 3.2 的例子,我们现有 1 个终端在左边,2 个终端一上一下摆在右边,焦点正在右下角的终端上,当你再打开一个新终端的时候,它会出现在右下角终端的下面。

那么,如何打开新终端窗口,让它在当前窗口的右侧呢?答案就是聚焦父容器(focus parent),在样,聚点将会移动到横向布局的容器。因此,现在新的窗口将被打开到右侧:

tree-shot3

moe-counter

统计自 2024 年 9 月