光看Ion3的配置说明文档很难懂作者所设计的Ion3相关的术语,直到今天凌晨花了一些时间按照它的手册页对照快捷键试用之后,才慢慢明白相关的术语的含义,也明白了一些X Window相关的知识。
X Window对一些常见按键与我们的平时的说明不大一样,而Ion3的作者显然对X Window了解很深,他所设计的配置就与我们平时的说法不尽相同。首先是对几个重要的修饰键的叫法,Control和Shift叫法与我们的一致,但Alt键可能出现较晚或是有些键盘没有,它映射到Mod1上,而Windows徽标键则称之为Mod4。这与FluxBox里的一样。而鼠标的说法就更奇怪了,左中右依次称为Butto1,Button2和Button3。
下面是一些Ion3所涉及到的相关窗口术语:
Screen: Screen就是电脑的屏幕,它与物理上的显示器一一对应,显然X Window考虑到了一台主机有可能有多台显示器的可能,因此一台机器上就可能有多个Screen.
RootWindow: 对于一台主机始终只有一个。对于多个显示器来说,不同Screen是同一RootWindow所的不同部分,有一个叫Xinerama的库,它可以将整个大的内容分成几个显示器分别使用,不过我感觉这东西我生活中遇到的情况很少。
ClientWindow与Frame: 说起Window与Frame,在不同程序里说法不一样。在Emacs里,Frame就是指一个Emacs窗口,而Window则是Emacs里再分隔的窗格,而在网页里就正好相反,一个浏览器窗口里显示一张网页,如果这个网页是框架网页,那它就有若干个Frame,共同组成Frameset。在Ion3里,ClientWindow就是窗口的内容,而Frame就是在这些内容之外再加上外围一圈边界和标题栏。Frame有好几种状态,一种是一般的浮动状态,虽然Ion3是个平铺式的窗口管理器,但它还是可以允许窗口浮动;另外就是占用屏幕大部分的空间,就好像多标签页浏览器里的各个页面一样;还有就是几个Frame挤在一个屏幕里,就是下文中的Tiling,最后就是FullScreen,这时Frame只显示其内部的ClientWindow的内容,并占满整个屏幕。前一种称为Float/Detached,后面两种都是Tiled状态。
Workspace: 就是所谓的虚拟桌面,Ion3默认启用了三个。这个东西是UNIX桌面的特色,在Windows里要使用专门的软件才行。不过我对这东西不感冒,一般都只用一个桌面。
Tiling: 这个东西是Ion3的核心,tile就是瓦片,它是若干个Frame以无缝隙无重叠并尽量占满空间的组合。其布局与网页中的Frame和Emacs里的Window完全一致。
Tag: 就是对窗口进行标记。
Attach: 若A attach B,C,就是把B和C拉到A一起,A不同,B,C变成与A相同的状态,与逆操作是Detach。
Multiplex: 指的是若干对象互斥显示的组合,一次只能显示一个对象。各个Workspace之间,几个Frame被Attach在一起,都是这种组合。
Empty Frame: 是一种特殊的Frame,它内部没有任何ClientWindow,纯粹是为了占空间,算是Frame的Placeholder吧。当它Attach某个不是Empty Frame的Frame时,就等于用那个Frame覆盖自己。Ion3启动时,每个Workspace里就有两个Empty Frame水平并列。另外,当将一个没有与其Attach的Tiled Frame分割时,也会产生一个Empty Frame。
其实Ion3最吸引我的是它的Lua编程,并非是它的tiling风格,可是Ion3的标题栏总是有乱码,这一点有点烦心,而作者在主页上对antialiasing等字体技术破口大骂,说什么是ugly self-defeating kludge,看来一时半会让Ion3用上漂亮的字体恐怕比较麻烦了。相比Awesome,它的Lua编程似乎要复杂得多,不过它的界面布局特别是那个底栏命令输入栏我还是比较喜欢,只不过界面比较守旧,所以它不大可能成为我心目中理想的Window Manager。