假中感受

现在寒假已经过了三个多星期,可是假前要准备做的很多事情还没有开始,看来我的拖的老毛病总是改不了。

先说说Vista的使用感受,其实感觉Vista挺好用的,它的文件管理器的UI与XP的有很大的改变,这种改变很多的确是种改进。例如它的窗口取掉了并不常用的菜单栏,增加了动态的随着环境变化而变化的工具栏,最后还大大地增强了地址栏,使得文件夹的切换变得方便了很多,而且还多了一个能表现文件夹内容的文件夹预览。

Vista的文件默认视图模式是详细视图,这与XP的平铺不同,有点不习惯,但是用着用着也习惯了。当选择了一个文件时,文件的相关信息是显示在下面的属性栏里,与XP也不一样,而原来起这个作用的地方现在成了收藏夹链接。

但是Vista的开始菜单的显示所有程序很不好用,现在也没找到方法去改成XP的样子。这使得找程序得多点几下或多滚动鼠标。

再说说最近湖南经视的《人间烟火》,现在剧情发展到这个程度,我觉得很不舒服。现在孙继良最后居然动用黑社会,直接抓人来要挟张汇泽和谭文华转让利群公司,然后轻松得逞,以前的孙继良再坏,也是用阴谋诡计来害人,这里得了,直接暴力,而失败的这一方根本不去找正当的途径。然后张石兰毒死了人虽不咋地,但还不至于死的王刚,然后判无期。哎,我越说越生气,不说了。
 

Life Comments(0) 2009年1月30日 05:30

一个动态设置壁纸的脚本的设计与实现

这是我想在Awesome的设置中添加的一个有特色的功能,壁纸随着时间变动,而且可以直观地感受到时间。我花了半天时间找了24张壁纸,都是一些CG图片,按照上面的光照什么的设定与其相对应的时间,与一天的24个小时一一对应。

原本的设计是用Awesome自己提供的一个定时器钩子函数来更新壁纸,这样最终是用的是Lua脚本,但是与Awesome耦合性太强。我觉得完全可以用一个Shell脚本来完成。这个脚本的主要流程是这样:

首先根据当前的时间来找到对应的图片然后设置之,然后隔一段时间到下一个整点,再更新之,以后都是休息一小时更新一次,为了增强效果,每次更新壁纸时都会发出“嘀”的一声。

这里有几点,一是如何设置壁纸。设置壁纸似乎有许多程序,我在Awesome默认的设置壁纸的脚本awsetbg里看了一下,发现它是通过探测系统中的壁纸设置程序来设置的,在我的系统中是使用的ImageMagick套件中的display来设置的。了解了这一点,就可以直接用display来设置了,不过如果KDE在运行,就直接使用kdesktop的DCOP接口来设置了,再调用play来播放声效。

第二点,就是保持此程序单实例运行,即任何时候此程序都只能有一个进程。我目前的实现是使用pgrep来获得最早运行进程的id,若与当前进程id相同则说明只有一个实例,反之则说明已有实例在运行,当前进程是重复进程,需退出。

还有一点,就是计算当前时间到下一个整点所需的秒数。能进行简单计算的程序很多。如expr,但这个程序是将所有的操作数和操作符作为他的参数,而很多操作符本身可能被Shell转义,如乘号*,这导致expr的使用非常麻烦。Lua也可以非常方便地计算,不过为了使用更为通用的程序,我选择了bc。这是GNU的一个并不太出名的程序,它可以计算任意精度的计算。其实还有一个dc,不过他的表达式是所谓的逆波兰式,也就是后缀表达式,写起来就特别怪异。

下面是完整的脚本: 

#!/bin/sh

function show_wallpaper() {
        if pgrep kdesktop >/dev/null ; then
                dcop kdesktop KBackgroundIface setWallpaper "$1" 1
        else
                display -sample 1440x900+0+0 -window root "$1"
        fi
    play "/usr/share/sounds/KDE_TypeWriter_Bell.wav" -q
}

if [ -n "$1" ]; then
    show_wallpaper "$1"
    exit 0
fi

function update_wallpaper() {
    wallpaper_path="$HOME/.config/awesome/wallpapers"
    hour=`/bin/date +%H`
    wallpaper="$wallpaper_path/$hour.jpg"
    show_wallpaper "$wallpaper"
}

update_wallpaper

# keep the previous running instance
[ `pgrep -f "$0" -o` != $$ ] && exit

# another way to using dc instead of bc is
# sleep `/bin/date "+60 %M - 60 * %S - p" | dc`s
sleep `/bin/date "+print((60-%M)*60-%S)" | bc`s

update_wallpaper

while true ; do
    sleep 1h
    update_wallpaper
done

 

Linux Comments(0) 2009年1月18日 03:34

一次倒霉的Vista崩溃经历

事情是这样的,前几天爸爸拿了一个MP3播放器回来,我就我把它插到笔记本里去播放,并准备去把里面的音乐文件都拷贝一份,在播放的过程中,我的操作并无半点失误之处,Windows Media Player却出现了未响应的问题。像这样的情况当然应该启动任务管理器来杀死未响应的进程,我也是这么做的,可是不知是怎么回事,桌面什么的都不见了,等了半天也不见出来,看来电脑像是死机了,没法,只好强行关闭,这一关正是麻烦的开始。

我首先不以为然,这种事情我见过无数次了。死机再强行关闭嘛,这不是很普遍嘛。再次启动时,Vista开始修复问题。修复着又死了,又重启之,Vista再次修复,等了很久,似乎弄好了,结果启动画面总是停留在欢迎界面。难道又死了?真麻烦,由于多次强行重启,我再用恢复分区修复系统时,系统提示说已经无法修复了,没法,幸亏Vista系统里也没有什么重要的文件,就用恢复分区还原吧。

由于笔记本自带的F11的一键还原功能是写在MBR及以后几个块的,而由于笔记本上还装了Grub,它覆盖了这一区域,以至于还原功能丧失了。不过通过Grub从恢复分区引导可以启动还原程序。有个Recovery Manager,可以用它来还原之。不过每次都失败了。

眼见还原无望,我起了装XP的念头,于是买了一张空白CD把深度版XP刻录起来。不过却不能安装,不知道是映像的问题还是硬盘的问题,我估计是后者。因为我的硬盘上还装有MagicLinux。上次就是这个原因在我的台式机上也没能直接装上XP。

在不断的尝试恢复Vista的过程中,我反复错误地强行重启系统,这带来了硬盘的很大的损害。连Linux都好几次无法启动,要知道我的Linux主分区是号称有极强稳定性的ReiserFS文件系统。如果硬件没有问题,Linux不会连启动都启动不了的。

最终,我决定忍痛割爱,删除Linux以保证Vista的正常恢复。不过这其中又花了一番心思,首先想到的是用LiveCD。于是刻录了Fedora10 LiveCD。 但是Fedora与Ubuntu一样,都不能直接操作硬盘,后来终于搞清楚原来是用户权限的问题,用su切换到超级用户后,就可以操作硬盘了。不过Fedora里并没有gparted,我找了半天,找到了parted。gparted其实就是parted的图形界面前端。于是用parted删除了Linux分区和Vista分区。再用还原分区的Recovery Manager就可以正常还原了。

Recovery Manager花了很长的时间,至少有一个多小时吧,才恢复Vista。但是Vista的初始设置花了更长的时间。现在的情况是Windows Vista是全面恢复了,但是硬盘的问题似乎已经非常严重了,Vista系统提醒我要尽快联系厂商恢复或更换之,看来到上海后得去惠普去好好检查一下,如果的确出了不能恢复的问题,就一定要尽早更换。这就是一次倒霉的Vista崩溃经历,忙活了半天,结果弄了半天的Vista与Linux双系统环境全没了,而且硬盘还出了非常严重的损害,真倒霉!不过,在此次崩溃恢复过程中,我吸取了一个教训:当系统看似毫无响应的时候,千万不要随意强行重启。
 

Life Comments(1) 2009年1月18日 03:31

回乡感想

回到南县已经有好几天了,这些天的生活上可以说相当舒适。白天睡到12点多才起来,然后吃饭,坐在火桶上用笔记本电脑看电影。晚上偶尔去网吧上上网,从网上下载些电影来看。晚上睡在非常非常暖和的床上,现在既已保研成功,精神上的压力也是很小。不过过得有些空虚,骨架提取,名花网站,毕业设计,还有一些科目的复习都没有开始,这又显示了我个人一个非常严重的毛病:“拖”。那些东西现在我可是一点兴趣都提不起来,说起来真是不好。

家里已花了一万多块钱彻底装修了一番,天花板,地板都已重新翻新,连大门也移位了。家里所有的门都换了,都是非常新,非常客气。厨房和浴室更是焕然一新,原来的灶已完全拆除,而浴室上面的墙壁也粉刷并贴上了釉面砖。不过浴室里的喷头喷出的水要么太热,要么太凉,而喷溅式的喷头我总觉得不好用。这一点使得我在家里洗澡反而没学校舒适。

12号晚上我又去了钟涛家去了一趟,原以为可以开开心心地用笔记本上网,没想到他说他家的上网帐户是与网卡的物理地址绑定的,搞得还真麻烦啊。只好用他那台破台式机上网。说起来用了好的电脑后,再用破旧的电脑就会觉得非常不爽。那台电脑的显示器是CRT的,刷新率居然设成了60赫兹,那可闪得厉害啊,这小子居然还能忍受。我一上来就调成了85赫兹。我看了些《叶问》和《非诚勿扰》的影评,然后就与其它大学同学聊起天来。弄完之后,就很快就觉得没什么意思了,就有一种厌倦感,这时恰好妈妈叫我,我马上收拾好东西回家。

回家还是接着看《神雕侠侣》,一直看到很晚,终于看完了,接上次《天龙八部》后,我又完整地看完了一部金庸的经典小说,本来接下来就想好好看看《射雕英雄传》,结果从网上找来找去,没有找到张纪中版的迅雷下载地址,只好作罢。准备下学期到了学校在线看得了,迅雷搜索到的版本都是胡歌版的,因为我以前看过的射雕的片断都是张纪中版的,所以先入为主,所以绝不看另外的版本。

最近无聊的时候除了看电影外,还研究了一下Guile,发现Guile的官方教程还是很不全,里面还有一些实用性的章节都还全空着。而我对于Scheme语言的认识,还仅仅停留在入门的阶段,又不想看R5RS这样复杂的定义式的介绍。下次有机会得下载一些Scheme的教程来看看。感觉Guile教程实在是太少了。而且作为GNU教主Richard Stallman的强力推荐的扩展语言,似乎它的影响力还是很不够。不过对于我来说,我是想以Guile/Scheme学习为入门,侧重于领略函数式编程的风采,不过教程和相关库的缺乏让我多少有些失望。
 

Life Comments(0) 2009年1月14日 03:53

读Guile的海龟作图有感

Guile是Scheme的GNU实现,在Guile的info文档里,有关于它的历史说明。本来TCL是扩展语言的一种广泛选择,可是Richard Stallman对TCL很不喜欢,它觉得用TCL不适合用于扩展语言,于是后来就弄GEL,再更名为Guile。Guile和Richard Stallman的大作Emacs的Emacs Lisp一样,也是函数式的编程语言,是Lisp的一个分支。我在Guile的官网上下载了它的一个海龟作图的教程,研究了一下。

这篇文章写得还行,它以LOGO语言的经典教程--海龟作图为例,由浅入门地说明了用Guile来写扩展的基本方法,虽说对于我来说有些啰嗦,不过总的来说很有用。不过书中直接使用了X来作为作图的工具。我在我的机器上并没有实现成功。而且还发现此教程还使用了一些过时的宏,看来此教程写得比较早,而且教程本身就说了,当时Guile的教程也比较少。不过作为作图而言,Scheme本身有它的GTK+的绑定,用GTK+的方法可能更为实用。

不过我目前看来,Scheme语言学术上看有意义,毕竟是函数式语言,可是在工业上运用上并不很广,它的语言看起来要怪异。而与Lua语言相比,Lua虽与C类语言有些差别,但是总的来说非常简单,而且学起来也很容易上用。就我目前所知,Lua有游戏,如魔兽世界,一些窗口管理器如Awesome,Ion现在以Lua为配置和扩展语言,另外一个新的TeX引擎--LuaTeX也内置了Lua编程语言。而Scheme我目前所知的就只有Gimp的Script-Fu扩展是基于Scheme。因此我个人觉得在扩展语言上,Lua比Scheme更有前途。

Linux Comments(1) 2009年1月09日 10:22

成功设定Emacs字体并解决MagicLinux在笔记本上的上网问题

Emacs字体搞定说起来是去年的事情,其实主要就是在.Xresource文件里多添加一些字体设置方面的东西就可以了。相同的字体,在.Xresource文件里弄好以后就可以可以变得很漂亮了,而且Emacs的一个强大之处就是可以中英文的字体可以分别设置,这一点很好,因为大多数中文字体的英文一般都不怎么漂亮,而很多英文字体的中文替换也同样不够理想,而两者分别设置就可以解决这个问题。那个.Xresource文件是网上一个叫答治茜的人写的,它写的针对的是Emacs 23在Ubuntu上面的设置,其实对于我的MagicLinux当然也同样适用。我最终在Emacs 23里设置的中文字体是方正准圆,而英文则是Consolas。截图如下:

而MagicLinux的上网问题解决的方法是,直接换用Ubuntu 8.10的Linux内核。我上次在笔记本上试过Fedora 9和Ubuntu 8.04,那个版本也不能上网,我当时就想连对笔记本支持最好的Ubuntu都有问题,其它的就更别说了。于是还在百度知道上发贴求助,说起来那个百度知道其实能解决我的问题的很少,这个问题也是一个。后来我又试了一个Ubuntu 8.10这个版本居然可以正常上网,于是把它的内核,初始化内存盘映像和内核模块全部拷贝了过来。结果问题就解决了,只是在上网之前要用route命令设置一下网关。不过当时还有其它的问题,就是arts服务出错,因此不能发声。不过后来再使用时这个问题又没了,真是奇怪,另外还有一个问题就是有一次登录时,键盘居然不能用,但是重启以后就可以了。看来Ubuntu的内核再配合MagicLinux的其它软件还是有一些小问题。不过这些小问题都不permanent。

Emacs Comments(0) 2009年1月04日 09:28

惠普CQ45-203TX试用感受

元旦前一天终于买了一台笔记本电脑,真不错。这台笔记本是我前两天在网上找了半天,觉得配置可以,价格也可以接受。本来拟定了两个基本选择,一个是这款惠普的Presario CQ45-203TX,另外一台是联想Thinkpad SL400。本来我是准备去徐家汇的太平洋或百脑汇,后来听人说由于元旦放假,路上人很多,因此很麻烦,要买过几天再买得了。我个人很急,于是就准备到离学校不远的开元地中海去买,当然,为了防止受骗。我决定非我选中的那两款型号不买,缺货也不买,因为很多奸商就是以缺货为名义来搞鬼。

到了地中海,我先看联想的,找到了那款SL400,可以上面的配置和价格都有偏差,就去看惠普的,惠普的CQ45-203TX,倒有不少现货。我从太平洋上看到的价格是5250,觉得5000应该可以搞定,不过店主说价是5100,我最终还到4950。

回到寝室,就开始折腾起来。这款笔记本网上的评价总的来说还算不错,优点是性价比高,而且廖五和胖子都是用的惠普,他们用着都还满意。不过缺点是散热差,另外就是噪声有点大,这些我都可以忍受。其实这个机器上市是2008年8月,当时要价是5999,半年下来已经降了一千多,我其实本身就很知足了,而且以它的配置,比我的台式机要好不少。内存2G,我台式机512M,CPU啊,显卡啊什么的也比台式机强很多。唯一比台式机差那些一点的就是屏幕只有14.1英寸,当然,笔记本嘛,屏幕当然不能比。

CQ45-203TX的默认操作系统是Vista Home Basic,其实Vista的易用性对于比XP要差,这几乎是公认的。我周边没几个用Vista的,很多人买笔记本回来第一件事就是格了装XP。我个人用了几天,觉得也还行,除了安装软件很烦要反复确认外,其它都主要是XP用久了,使用习惯的问题。还有,这个系统一开始装了一大堆软件,什么诺顿杀毒什么的,我个人只认准360安全卫士,再说徐键刚开始用他的笔记本时,那个诺顿可害死他了,所以看到诺顿我第一个就想卸。我还看了里面还有摩托罗拉的SoftStylus,这个东西光看名字不知道是干嘛的,其实就是一个手写输入软件,也占了一百多兆,这东西对我来说一点用也没有,不过给我爸爸玩玩可能还行。此外还有什么muvee autoproducer,界面很漂亮,可是居然没激活,有试用期的,我看没注册码,就又删了。此外卸了的还有微软的Office 2007,微软的Office本来是个必备的东西,不过一则2007版那个界面实在不好用,另外还有更小巧更好用的WPS 2007,它的界面与经典的微软Office 2003相同,而且还多了个转PDF的功能。而且三大套件加起来也就二十几兆,本来在我的台式机上有些卡,不过在这台强悍得多的笔记本上应该很流畅了。

虽然XP要比Vista要好用,不过这台机器官方支持的是Vista,装XP肯定问题不少。再说现在Vista也能凑合得用,所以非到有什么迫不得已,我不大可能再装XP。不过Linux是肯定要装的,版本嘛,我个人当然是想装MagicLinux了,不过它对笔记本支持总不是很好,如果实在不行那就只好装Ubuntu了,我个人极不喜欢Ubuntu,它有四个让我很不爽的地方:
1. 界面,主要是字体,那个上海宋真丑;
2. 速度很慢,在我的台式机上很不爽,不过到了笔记本可能要好些;
3. 运行很多程序总是要确认输入密码。我知道用root用户一旦操作不当,后果很严重,不过我早就养成了这个习惯,平时注意点就可以了,也没出过什么问题。
4. 默认界面汉化不完全,总要下载一大堆包,特别是开发工具极不齐全。连gcc这样的东西都没有,我真是受够了,Linux里没gcc就像Windows里没有word。

不过目前而言,对笔记本支持最好的应该就是它了。我为了避免系统将来出问题,我准备装在虚拟机里得了,可是QEMU和VMWare又不能用(可能是版本问题),最后我装了Sun的VirtualBox,先装了MagicLinux,可是一个是界面太大,虽然我设置的分辨率与我的Vista一样,可是居然它的高度超出了我的屏幕高度,二个是居然不用konsole,这可是个麻烦事,我再安装上Ubuntu,分辨率又太小了,而且改不大了。一气之下我只好把这两个虚拟机连同VirtualBox一起卸了。然后开始直接在硬盘上安装Linux。我先安装上了MagicLinux,可是首先遇到的问题是鼠标不能用,我通过鼠标的配置,再重启系统就没问题了,但还有一个严重的问题没解决,那就是不能上网,这个问题到现在也没有解决。

总的来说,笔记本虽然配置好,但是可用性还是不如我那台式机。

Life Comments(2) 2009年1月04日 09:25

使用Awesome 3.1后的一些感受

最近一直都在研究配置Awesome 3.1,几天下来略有所得。总的感觉,awesome也算是有点复杂的窗口管理器,它有多种布局方式,而且有一套基于Lua的扩展机制,另外它还以tag代替workspace等一些思想。下面是一些各方面的感受。

首先是它的基于Lua的扩展机制,这一套机制据说是从3.0版本才引入的,而且似乎是受了ion 3的启发,我就是因为这点才吸引开始研究awesome 3的。与ion 3的Lua扩展机制相比,awesome 3显然要显得轻松和随意得多,它的所有的相关库名都是一些形容词,如awful,beautiful,wicked,naughty,tabulous,最近好像又加了一个叫shifty的东西。这显得很有意思,而ion 3的则要古板一些,都是些以W为前辍的一些类,还完整地用了一套面向对象的机制,显得很复杂,而且其配置手册我最近还专门打印一本,里面的内容还颇为详尽。Awesome的文档是用LuaDoc生成的网页,由于编译Awesome 3时我的机器里还没有装LuaDoc,所以其API文档只能在线浏览。Awesome有一个rc.lua文件,就是默认配置文件,总的来说,Lua本身来说是一门很优雅的语言,简单清楚,不过默认的配置文件虽然很好懂,可总显得不是漂亮,相比我从网上下载过的Emacs扩展脚本,代码都相当好看。我在这个配置文件的基础上再稍做整理,编写了属于自己的配置文件,而ion 3的配置我目前还没有研究,因为太复杂了,不过我觉得它的扩展能力应该比Awesome 3有过之而无不及。

Awesome 3里自带了一些简单的widget,如菜单,文本框等,可以用来作为扩展界面的一些基本部件。而其事件响应是通过hook以及键盘和鼠标的绑定来实现的,不过从命名风格上来说,并不太严谨,而且接口不太稳定,3.0和3.1就有一些不同,显然Awesome的作者毕竟是初次使用Lua,接口设计上不成熟。

Awesome 3与ion 3的界面上的不同点是其使用了xft,这使得中文的显示没有大的问题了,这一点也是我对ion 3不满的原因之一。ion 3的作者显然对xft一点都感冒,其实对于英文来说,X核心字体的确足够了,用Terminal字体就很好了,可是中文不行,非得用xft才能比较漂亮地显示。不过,awesome的中文常有乱码,这一点总是很麻烦。说起来,许多这样的软件对中文总有这样或者那样的问题,谁叫计算机不是我们发明的呢。我从网上听说Awesome 3是不多的使用了pango但没有使用gtk的程序之一,awesome的中文显示就是用pango来渲染的,pango据称是非常强大的国际化的文字渲染库,它的乱码不知道问题是出在哪里。

再说说我的配置,我的配置思想主要有三个:一是与已有的习惯相同或相近;二是尽量不要与应用程序的快捷键冲突,我的做法是所有的窗口管理器都是以Windows徽标键为修饰键,因为这个键一般不是应用程序快捷键,所以用它作为窗口管理器的专用修饰键是最好不过了;最后一个就是有规律,目前Win+字母键都是启动应用程序,Win+功能键是一些窗口操作,如关闭窗口Win+F4,Win+数字键是切换 tag,Win+左右方向是左右切换tag,Win+上下是切换布局,这些都很有规律。

到目前为止,Awesome 3还不是我心目中理想的窗口管理器,一个是乱码问题,第二个是配置文件显得不是那么优雅和强大,还有一个很大的问题就是如果配置文件出了运行时错误,则根本没有出错提示,这点比较麻烦,我只能往里面插入一些测试代码来查找错误。

Linux Comments(0) 2008年12月21日 06:33

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