上次介绍了怎么在 Arch Linux 下启用 RGBA 透明窗口,然而,目前支持 RGBA 的程序还很少,看起来有的透明,有的不透明,很不爽吧?

另外,GTK+ 默认是不启用 RGBA 支持的,我们自己编写程序的时候,怎么加入 RGBA,达到这种酷炫的效果呢?

细心的同学可能已经发现,上次我发的图中最顶端那个程序就是我自己写的,而且已经实现了半透明效果。

加入 RGBA 效果的方法并不难,仅仅是几条语句而已,看看下面的 patch:

From fb88cb790a08e928c5e6656f8334264c5ae9f93a Mon Sep 17 00:00:00 2001
From: Kevin Lange 
Date: Wed, 5 Mar 2008 09:26:53 -0500
Subject: [PATCH] Added RGBA colormap support to the GUI---
 ccm/Window.py |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)diff --git a/ccm/Window.py b/ccm/Window.py
index 09306da..84f1d76 100644
--- a/ccm/Window.py
+++ b/ccm/Window.py
@@ -42,6 +42,10 @@ class MainWin(gtk.Window):def __init__(self, Context, pluginPage=None, categoryName=None):
         gtk.Window.__init__(self)
+        self.gtk_screen = self.get_screen()
+        colormap = self.gtk_screen.get_rgba_colormap()
+        if colormap:
+            gtk.widget_set_default_colormap(colormap)
         self.ShowingPlugin = None
         self.Context = Context
         self.connect("destroy", self.Quit)
@@ -99,6 +103,7 @@ class MainWin(gtk.Window):
             self.ToggleCategory(None, categoryName)def Quit(self, *args):
+        gtk.widget_pop_colormap()
         gtk.main_quit()def ResetMainWidgets(self):
-- 
1.5.2.5

呵呵,这是 CCSM 的 RGBA 补丁,看到了吧,其实关键的也就那么几行而已,在初始化的时候试着载入 RGBA 颜色表,在退出的时候对颜色表进行出栈,其他语言也是这个道理。

有了这几行代码,是不是想把桌面上的所有 GTK+ 程序 hack 掉?

呵呵,赶快在自己的程序里加入 RGBA 支持吧!

评论