学习再学习,多少大秘密

Archive for 3月 29th, 2008

29 3

转回 fvwm

玩 gentoo, 懒得编译 gnome/kde 这样的大家伙, kde4 虽然也试了下,不过日
常使用还是不习惯,之前使用 sawfish, 因为喜欢它的 jump-or-exec 插件的功能,之
前也没有仔细研究过 fvwm 有没有这个功能。一直认为是没有。好了也说一下这个
jump-or-exec 是个什么东西。简单的说就是这样,如果你要打开一个程序,而这
个程序已经打开了,但是目前在后台,那么这个此时的动作就将它调到前台,聚焦。
如果这个程序没有打开,就将其打开送到前台。这样在任何时候将保持一个运行实
例。这个功能初看不怎么样,不过设想一下下面一个场景,先开了一个 term,比
如是 urxvt,然后开了一个 firefox,全屏了,盖住了 urxvt, 然后看了会网页,又
要回去 urxvt,有了这个功能,只要一个快捷件,就回去了,比所谓的鼠标去找
taskbar 然后点击来的快多了。因此 taskbar 也显得多余了。。当然,这个例子
不是很恰当,因为当前的 wm 对 pager 的支持都是不错的,完全可以放在不同的
pager 里面来管理。不过类似这样的管理方式,应该是一个优秀的 wm 必备的。
说起来还是 ee 提示的结果,不过 ee 简单的将这个功能理解为单运行实例,个人
觉得不太准确,原因如上所述。在 irc 讨论一番之后, weakish 给了一个链接
[1]。找到了一个思路,很简单,因为 wm 当前打开的每一个窗口的信息都是知道
的,而对于一个程序来说,它的信息中有一些是固定的,比如一个窗口所属的类别
等等,因此可以简单的维护一个列表,将程序的运行命令与这个特定属性加以联
系,这样当运行这个命令的时候,就去搜索这个属性,若存在,就将那个匹配上的
窗口拿到前台来,否则就运行这个实例。拿到前台可能要考虑几个情况的操作,比
如聚集,提升,或解除图标化,一个简单的函数 EWMHActivateWindowFunc 可以完
全做到这些(话说,还是 ee 发现的。。。)。于是最后的代码如下:
DestroyFunc JOE
AddToFunc JOE
+ I All ($0) EWMHActivateWindowFunc
+ I TestRc (NoMatch) Exec exec [...]

© 2008 学习再学习,多少大秘密 | Entries (RSS) and Comments (RSS)

Your Index Web Directorywordpress logo