Compiz是个很好玩的东西。如果我说,Compiz很大程度上是Linux桌面的对Windows用户的代言人,会不会有人反对呢?看看网上铺天盖地的面向Windows用户的截图、视频吧!有几个没有Compiz的呢?(当然对那些精华层次、审美疲劳层次的用户来说,也许另有嗜好,比如说CLIer们?)这里要说的只是Compiz桌面。所谓的“纯Compiz桌面”是我自己创造的新词,指的是那些

  • 采用Compiz管理桌面(使用Compiz壁纸插件管理桌面);

  • 采用emerald装饰窗口;

  • 采用~/.gtkrc-2.0设置GTK;

  • 采用~/.xinitrc启动桌面

如果你同时满足以上几个条件,说明你的桌面算得上这里所谓的“纯Compiz桌面”。

Conky的知名度可能比不上Compiz,但在那些纨绔的Linux GUI控面前,也基本属于必须知道的东西。简单的说,Conky就是这样一个工具:他具有强大的监控系统的能力,并且将监控得到的系统信息通过变量、函数等简单的形式提供给用户(开发者),并且他完全是基于Xorg的,所以不用担心只能在某个具体的桌面环境(譬如Gnome、KDE)。不过也正是如此,所以你更需要担心的是这些常见的有自己独立架构的“桌面环境(DE)”下,Conky的配置是否兼容。

介绍完了这两位大爷,就开始玩了。简单说下敝人的情况:

  • 硬件:显卡Nvidia GeForce 9400GT(其他硬件应该与本文无关了)

  • 内核:kernel 2.6.32

  • 发行版及软件管理系统:ArchLinux(ABS)

  • Compiz-core版本:0.8.4

  • Conky版本:1.7.2

在进行任何活动之前,自然是安装他们。这里就假定你已经完成桌面(Compiz)部分的安装了(这都没完成你也没必要看了)。然后就是安装Conky。在ArchLinux下执行下面的命令(其他Distro类似):

安装完成后,建议先将Conky自带的配置文件复制一份到自己家目录来,这样修改起来也方便。如果你不这么干的话,Conky会使用公共的配置,而你也要带着“root牌屠(su)刀”修改配置。

需要注意的是,在Arch中默认的配置文件是放在/etc/conky中的,所以才这样操作。但是别的操作系统就不一定了。比如:gentoo就应该是:

ubuntu就应该是:

复制好了,直接运行下面的命令,按道理来说就应该是可以了:

不过往往事情没这么简单对吧?要不然也没有这篇文章的诞生!默认情况下,纯Compiz桌面的用户可能会出现窗口背景丢了,或者说拖动窗口的时候会有非常严重的拖尾现象(窗口移走了,痕迹还在)。

这个情况出现的原因很简单,因为前文中说过了,Conky是基于Xorg的,自己具备绘制桌面的功能(其实就是一个没边框、没标题栏、没菜单的三五ROOT窗口)。但是搞笑的是我们的桌面环境基本都具备,或者说是必备这样的功能。这里就产生了一个冲突。

其次,Conky是具备绘制ROOT窗口的能力,但只是绘制,简单的说只是管他自己的那个窗口,而对别的窗口那可是不闻不问的哈!(果然不是亲娘不心疼)这里又产生了一个冲突。

当这两个冲突遇到一起,就出现了Conky的窗口他自己管得好好的。可是别的窗口却出现了相互照应的情况。简单的说,移动的窗口,本来他亲娘(桌面环境的桌面管理功能)已经刷新了桌面了,没有重影。可是Conky却跑过来帮个倒忙,把人家移动过程的又绘制出来,于是……

原因既然分析到了这里,解决就简单了,无非就是禁用Conky的桌面功能。(你总不会想倒禁用桌面环境的吧!除非你的桌面只保留Conky一个窗口了)。显然Conky是有考虑这个问题的,其中一个配置项就是干这事儿的:

own_window_type normal | dock | widget | override | desktop

看清楚了吧。这个选项用来设置Conky绘制的窗口类型,前三个都是比较普通的,归桌面环境管。最后一个一看名字就知道牛X,自个绘制的窗口就是一个桌面(ROOT窗口)。所以只要不用最后一种就不会有问题。悲剧的是默认的配置就是用这个的。所及操刀吧!

另外,要让这个选项生效,必须先配置另一个选项为yes:

own_window yes | no

这下就重叠的问题是解决了,不过又来了新问题了。desktop搞出来的窗口默认是三无产品——没有标题栏、没有边框、没有菜单——这也是桌面(ROOT窗口)的特点。可是采用其他的就不行了,搞出来的窗口带上了这些东西。怎么办呢?就要引出这个选项了:

own_window_hints undecorated,below | above,sticky,skip_taskbar,skip_pager

看看就明白了,这个选项就是用来特殊化那个窗口的。包括不装饰(就没有标题栏、边框了)、置底/顶、

忽略点击、不在任务栏显示、不在分页器显示……

这番打扮之后,看上去是不是就“以假乱真”了阿?不过如果你一个不小心扛着鼠标和键盘过去,你会发现这个窗口原来是可以移动的。这显然不符合我们的要求了。怎么办呢?

幸亏我们有Compiz,有强大的各类插件。这里就要用到一个“窗口管理”分类下叫做“窗口规则”的插件。启用之,进去设置页面看看。原来这个插件是专门用来对付那些特殊窗口的。比如不可调整大小、不能移动……

怎么样,看明白了吧?加进去了!