七年前,我在 Gentoo 里安装过 compiz-fusion。更早的时间,我曾经玩过 Beryl,因为当时我还年青,第一次玩 3D 桌面,那酷炫的效果把我和小伙伴都惊呆了。2006 年 1 月,Compiz 发布第一版……这些就是我脑海中的 Compiz 的全部历史。
我忘记了从哪一年开始不再用 Compiz 的,兴许是 GNOME 3 发布的那年。我懒得再回忆 GNOME 3 又是哪一年发布的。之所以猜测是 GNOME 3 发布的那一年不再用 Compiz,是因为 GNOME 3 与 Compiz 不兼容,而我当时被 GNOME 3 的一统桌面、平板与手机的豪言壮语蛊惑了,所以从 GNOME 3.0 一直用到 GNOME 3.14,然后在我工作的机器上把它删掉了,只是家里用的笔记本上还是它。之所以从工作的计算机上不再用 GNOME 3,是觉得它越来越膨胀,硬性的集成了很多我觉得纯属是摆设的东西。我现在用的是 XFCE 4 。
与 GNOME 3 的现代相比,用着 XFCE 4,像是回到了解放前。不过,天空很蓝,水很清澈,白云是白的,大地上没有多少水泥,我觉得很坦然,坦然的都忘记了 Compiz 这些东西。这种忘记真的是彻底的忘记,已经忘记到了甚至都想不起来这几天怎么又想起它的程度。
既然已经想了起来,那就装一下:
$ echo -e "\nx11-wm/compiz-fusion emerald\n" | sudo tee -a /etc/portage/package.use/package.desktop.use
$ sudo emerge -avt compiz-fusion fusion-icon
看看反馈信息,竟然版本号是 0.8.8。根据我 7 年前的那篇日志记载,当时我装的 compiz-fusion 就已经至少是 0.8.0 版本了。这么多年过去了,compiz 居然一直没怎么进取!?
去 Compiz 的官网 看了一下,发现它分化为两个稳定版本,其中一个是 0.8.8,另一个是 0.9.12。官网上说,这两个稳定版本只是技术实现不同,功能大致相当,但是二者的插件不能通用。
根据 Compiz 官网上的 0.8.8 版本的源码包上传日期来看,至少从 2011 年开始,Compiz 0.8 系列就停止开发了。根据 http://www.solidot.org/story?sid=18757 这则消息来看,所谓的 Compiz 0.9.x 版本是用 C++ 把 0.8.x 版本重新实现了一遍,而此前的 Compiz 一直使用 C 实现的。说实在的,我对 C++ 没多少好感,而且我也不觉得这么靠近底层的窗口管理器用 C++ 实现会有多少优势可言。
不过,我还是下载了 Compiz 0.9.12 的源码包,手动编译安装。运行后,发现基本功能没有什么变化,插件比 0.8.8 多了几个,桌面立方体的配置选项更丰富了一些,最大的优点可能就是将原来分散的几个 Compiz 相关的软件包集成到了一起,但是对我而言缺点也很明显:
emerald 没有了,这意味着在 XFCE4 上,我只能用 Compiz 自带的那个丑陋的 gtk-window-decorator 渲染窗口的边框;
fusion-icon 没有了,只能在终端中进行窗口管理器的切换。
Compiz 0.9.x 貌似只是几个 C++ 爱好者重新造了个轮子,而他们开始造这个轮子的时候 OpenGL 已经 3.0 了,可编程管线已经取代了 OpenGL 1.x 时代的固定管线,然而他们却只是把 C 代码变成了 C++ 的代码……
我决定继续用 0.8.8。
Compiz 的很多功能是非常实用的。例如窗口的快速定位放置与尺寸调整(瓦片式桌面),用 Alt + 鼠标中键调整窗口透明程度,GNOME 3 那种鼠标往屏幕边角撩一下就把当前所有窗口缩略呈现……这些功能现在主流的桌面似乎没有一个能全面提供的。
Compiz 0.8.8 似乎已经被现在的 Compiz 开发者抛弃了。github 上还有一些人 fork 了 0.8.8 的代码,继续 hack 着。然而 Compiz 的那些改革者也没有能力让不忘记 Compiz 的人更多一些。太多人的人已经忘记了 Compiz,因为那些发明了新轮子的人正在自豪的告诉那些不知道旧轮子的人:来,我们一块儿进步!
我有了去阅读 The X New Developer’s Guide 以及学习 OpenGL 可编程管线的动力了。原因很简单,我的手机上不需要运行 Wayland + 任何现代桌面,它上面的 Android 工作的就很好。我的 PC 上现在显卡驱动工作的很好, X 工作的很好,XFCE 4 工作的很好,Compiz 也工作的很好,我想试着让它们再陪我更久一些,直到它们能近乎无损在 Wayland 的世界重生。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。