上一篇已经系统地介绍过herbstluftwm这款窗口管理器:http://blog.csdn.net/yy19900806/article/details/42236853
作为一个平铺式的窗口管理器,不同于堆叠式的窗口管理器,想要使用好它,必须要对其平铺算法了熟于心,方能随心所欲地享受平铺式wm带来的高效和畅快,接下来,我将对herbstluftwm的平铺算法做一定解析:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
原理剖析:
从原理上说,herbstluftwm所采用的平铺算法的模型是二叉树,采用其叶子节点作为窗口的容器,用一个抽象的二叉树铺满整个屏幕。
虽然herbstluftwm支持很多操作,如:
首先明确一下二叉树的几个基本性质:
举个栗子:
下面我用一个简单的例子来做一个实例:
当一个屏幕中只有一个frame的时候,显然,该二叉树模型中只有一个根节点,如下所示:
root
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
现在执行一次垂直分割,即两个新的subframe分别处在上下的位置,二叉树模型如下所示:
root +————————+
/ \ | F |
ver1 ver2 窗口的形状为: +————————+ 焦点在F处
| |
+————————+
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
现在再执行一次水平分割,即两个新的subframe分别在左右的位置,二叉树模型如下所示:
root +————————+————————+
/ \ | F | |
ver1 ver2 窗口的形状为: +————————+————————+ 焦点在F处
/ \ | |
hor1 hor2 +————————+————————+