K.I.S.S. – 简单哲学 Linux, Freedom, Arch, Python, Gtk+, C … Keep It Simple, Stupid!

27五/090

在自己的 GTK+ 程序中加入 RGBA 透明支持

上次介绍了怎么在 Arch Linux 下启用 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  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(.Window):

     def __init__(self, Context, pluginPage=None, categoryName=None):
         .Window.__init__(self)
+        self.gtk_screen = self.get_screen()
+        colormap = self.gtk_screen.get_rgba_colormap()
+        if colormap:
+            .widget_set_default_colormap(colormap)
         self.ShowingPlugin = None
         self.Context = Context
         self.connect("destroy", self.Quit)
@@ -99,6 +103,7 @@ class MainWin(.Window):
             self.ToggleCategory(None, categoryName)

     def Quit(self, *args):
+        .widget_pop_colormap()
         .main_quit()

     def ResetMainWidgets(self):
--
1.5.2.5

呵呵,这是 CCSM 的 补丁,看到了吧,其实关键的也就那么几行而已,在初始化的时候试着载入 颜色表,在退出的时候对颜色表进行出栈,其他语言也是这个道理。
有了这几行代码,是不是想把桌面上的所有 + 程序 hack 掉?
呵呵,赶快在自己的程序里加入 支持吧!

26五/090

在 Arch Linux 下启用 RGBA 透明窗口

看了 Ubuntu 9.04 那么炫,突然感觉自己的 好像缺了什么,哎?窗口怎么不是透明的啊……
这个东西是由 控制的,大家知道 RGB 是通常所说的三原色:红绿蓝,那么 A 是什么呢?不错,就是 Alpha,透明。
里面默认没有启用透明的引擎,所以窗口都是 RGB 的,看起来当然不如 Ubuntu 那么炫啦~
那么怎么在 里面启用透明呢?

先来看一下效果图:

screenshot_001.png

其实启用方法很简单,只要从 AUR 里安装 librgba--module 这个包就可以了:

yaourt -S librgba--module

然后按照提示,运行:

gnome-color-chooser

在弹出的窗口里选择“引擎”-“全局”-“Murrine”-“首选项”,勾上 Enable/Disable support 的两个勾就行了。

rgba_setting.png

应用的时候,可能会等待一会儿,之后就可以看到透明窗口和控件啦!
值得一提的是,并非所有窗口都支持透明效果,这要看软件的源代码启没启用支持哦~
以上方法在 Linux、Gnome 2.26.2 下验证通过。