bspwm:平铺窗口管理器,将窗口表示为二叉树的叶子

2020-12-16 22:08:09

bspwm是切片窗口管理器,将窗口表示为完整的二叉树的叶子。 它仅响应X事件,并在专用套接字上接收消息。 bspwm不处理任何键盘或指针输入:需要第三方程序(例如sxhkd)才能将键盘和指针事件转换为bspc调用。 默认配置文件为$ XDG_CONFIG_HOME / bspwm / bspwmrc:这只是一个调用bspc的shell脚本。 将一个参数传递给该脚本以指示是否在重新启动后执行($ 1 -gt 0)($ 1 -eq 0)。 分割由两个参数定义:类型(水平或垂直)和比率(实数r,使得0 <r <1)。 bspwm收到新窗口时,它将使用为该插入点指定的插入模式将其插入到指定插入点(叶)的窗口树中。

插入模式告诉bspwm如何更改树以在给定的插入点上插入新窗口。

默认情况下,插入点是聚焦窗口,并且其插入模式是自动的。

用户可以通过向bspwm发送节点-p | --presel-dir DIR消息来指定插入点中下一个新窗口应出现的区域。

DIR参数允许指定插入点的分割方式(水平或垂直),以及新窗口是否应为新内部节点的第一个或第二个子节点(插入点将成为其兄弟)。

a a a / \ / \ / \ 1 b ---> c b ---> cb ^ / \ / / \ / \ / \ / \ 2 3 4 1 2 3 d 1 2 3 ^ / \ 5 4 ^ + --------------------- -+ + ----------------------- + + --------------------- -+ | | | | | | | | | || | 2 | | 4 | 2 | | 5 | 4 | 2 || | | | ^ | | | ^ | | || 1 | ----------- | | ----------- | ----------- | | ----------- | ----------- || ^ | | | | | | | || | 3 | | 1 | 3 | | 1 | 3 || | | | | | | | | + ----------------------- + + ----------------------- + + ----------------------- + XYZ

然后添加一个新窗口:4,这导致状态Y:新的内部节点c成为第一个孩子。

可以使用节点-o | --presel-ratio消息来更改预选择的比率(最终是新内部节点的分割比率)。

与手动模式相对,自动模式不需要任何用户选择。插入新窗口的方式由自动方案的值和初始极性设置确定。

当自动方案的值是longest_side时,将像插入点处于手动模式一样附加窗口,并根据平铺矩形的尺寸和初始极性选择拆分方向。

1 a a ^ / \ / \ ---> 1 2 ---> 1 b ^ / \ 2 3 ^ + ----------------------- + + ---------------- ------- + + ----------------------- + | | | | | | | | | | | | | | | 2 | | | | | | | | | | 1 | | 1 | 2 | | 1 | ----------- | | ^ | | | ^ | | | | | | | | | | | 3 | | | | | | | | ^ | + ----------------------- + + ----------------------- + + ----------------------- + XYZ

由于1较宽,因此将其垂直拆分,并在给定初始极性的情况下将2添加为第二个子级。

这导致我们在Y处插入窗口3。2很高,因此水平分割。 3再次添加为b的第二个孩子。

当自动方案的值是交替的时,将插入窗口,就像插入点处于手动模式,并且根据插入点的父对象的分割类型和初始极性选择分割方向。如果将父对象水平拆分,则插入点将垂直拆分,反之亦然。

当自动方案的值是螺旋时,窗口将占据插入点的空间。

a a a / \ / \ / \ 1 b ---> 1 c ---> 1 d / \ / \ \ / \ 2 3 4 b 5 c ^ ^ / \ ^ / \ 3 2 b 4 / \ 3 2 + -------------------- --- + + ----------------------- + + -------------------- --- + | | | | | | | | | | | 2 | | | 4 | | | 5 | | | ^ | | | ^ | | | ^ | | 1 | ----------- | | 1 | ----------- | | 1 | ----------- | | | | | | | | | | 3 | | | | 3 | | | 3 | 2 | | | ----- | 4 | | | | | | | | | | 2 | | + ----------------------- + + ----------------------- + + ----------------------- + XYZ

当我们添加一个新窗口4时,重新植根于b的整个树,作为新内部节点c的第二个子节点。

b的分割参数(类型:水平,比率:1/2)被复制到c,b顺时针旋转90°。

Y状态下的4个拼贴矩形等于X状态下的2个拼贴矩形。

如果插入点是其父级的第一个(分别是第二个)子代,则自动螺旋自动方案生成的窗口螺旋将顺时针(分别为逆时针)旋转。

是否想与其他bspwm用户联系或需要帮助?加入我们的行列: