Ion3相关术语及试用感受

光看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。

Linux Comments(0) 2008年12月13日 18:28

Ion 3与Awesome 3.1

Ion和Awesome两个都是平铺式的窗口管理器(Tiling Window Manager),我先知道ion3,在IBM DeveloperWorks上有一篇中文的文档。让我最感兴趣的是它的配置文件是用Lua所写,而Lua就是我个人比较熟悉和喜爱的脚本语言之一。这引起了我很大的兴趣。于是专门研究了一番,而awesome是从Linuxtoy上看到了,从下面的评论来看,似乎也是个不错的平铺式窗口管理器,而且到awesome3时,其配置文件也是用Lua所写,现在Lua的配置文件方面的优势终于被这些开源软件所认识到了。

Lua作为配置文件的的确非常方便,它语法虽与主流的C系语言有些差别,但总体来说还是很容易上手的,而且语法特别简单,但表现力又非常丰富,作为扩展语言的确不错。而且它本身也有函数式的编程特点,而GNU主推的Guile与其相比就差了些,它的语言对于熟悉函数式语言的也许很友好,但是对于大多数程序员来说还是显得陌生了些。呵,扯远了。下面是我对两者的一些感受:

先说安装,这两个我都是采用源码编译安装。Ion3的编译也比较简单,直接make就行了,连./configure也省了。而awesome的安装就要相对麻烦一些,它使用了cmake来构建,由于使用了xcb,而且版本是1.1,而我的系统已装上的是xcb-1.0,又得上freedesktop上下载并编译之,而且awesome还需要xcb-util和libev,这两个东西又得下载编译,在编译过程中还发现我的pango有问题,awesome使用了pango里的一个叫pang_layout_set_height的函数,而我的系统里那个pango版本里并没有定义,我只好又从pango的官网上下载编译之。既然awesome这么折腾,相对而言它所使用的技术也许有过人之处,不过我从网上听说xcb的兼容性较差,使得我对awesome的稳定性捏了一把汗。

再说界面,ion3的标题栏中文支持不好,需要使用特殊的字体,所以界面并不吸引人,这与它的作者是实用主义者有关,ion3的设计理念就是实用为主,界面则次要些,其实对我来说,ion3的界面还行,还能看。而且总体的布局我还算满意。而且操作感很好,按F3就在下面弹出类似Emacs的minibuffer之类的东西,可以输入命令,这一点很好。而且最下面的状态栏直接显示当前的时间,以后也许还能配置成显示其它有用的信息。

awesome的界面比ion3要“现代”得多,它的中文支持很好。但是在布局设置上不如我意,它居然在左上角给我开了九个工作区(桌面),我个人不喜欢多个桌面,许多Linux发行版默认有四个桌面,而MagicLinux减到了两个,我还嫌多,直接减少到只剩一个。多桌面许是Linux桌面系统的特色,但是我一直用不习惯,可能是受Windows毒害太深了吧。awesome有一个很无聊的地方是在其右上角显示时间的地方居然用C语言的time函数的返回值!这个值是返回从1970年1月1日0时0分到系统的当前时间所经过的秒数,鬼才知道现在是几时几分!。awesome默认使用焦点跟随鼠标,其实很多其它的窗口管理器也有这个选项,只是默认没启用而已,我觉得果然好用。

最后说一下配置,虽然这两者都是使用Lua,但是awesome简单一些,它的配置文件相对简单而且易懂,我现在只看了前面一点点内容,觉得很好理解。而ion的扩展层次可能要强大一些,作者专门写了一篇文章来讲述,可能是作者本身是芬兰人的原因吧,我对他的文风真不敢恭维,很多句子我都不能读透,而且他定义的名字真是很难理解,下面仅举一例:"WRootWin is the class for root windows of X screens. It is an instance of WScreen",WRootWin是一个类,可是后面说是一个WScreen的一个instance,我只听说XX对象是某个类的instance,没听说某个类是另外一个类的instance。而且他所描述的类的层次我看了很久都不明白,不过有点可以肯定的是,它的类层次与X Window本身的设计有关,我对X Window系统本身理解不深,这使得我理解有困难吧。

Linux Comments(1) 2008年12月13日 09:24