QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 991|回复: 7

skim CVS 有 透明效果配置界面了

[复制链接]
发表于 2005-4-8 11:56:10 | 显示全部楼层 |阅读模式
欢迎大家试用,并期待您的反馈

多谢
发表于 2005-4-8 12:44:21 | 显示全部楼层
楼主我参考了些程序,也写了个背景透明的测试程序,可是怎么都不能透明,能不能帮我看看,谢谢
是不是哪里有问题?如果有问题,请指出,或者给我个示例程序,谢谢!
[code:1]
#include <gtk/gtk.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#define OPAQUE  0xffffffff
unsigned int opacity = 0x0fffffff;

int main( int   argc, char *argv[] )
{
        GtkWidget *window;

        gtk_init (&argc, &argv);
        // _KDE_WM_WINDOW_OPACITY
        // _NET_WM_WINDOW_OPACITY
        /*
           gdk_property_delete(gdk_window,
           (GdkAtom)gdk_x11_xatom_to_atom(property));
           */
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_widget_show(window);

        gdk_error_trap_push ();
        gdk_property_change(window->window,
                        gdk_atom_intern("_NET_WM_WINDOW_OPACITY", FALSE),
                        gdk_atom_intern("CARDINAL", FALSE),
                        32, GDK_PROP_MODE_REPLACE,
                        (guchar*) &opacity, 1L);
        gdk_error_trap_pop ();

        gtk_main ();

        return 0;
}
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2005-4-8 20:12:28 | 显示全部楼层
不好意思,我对 gtk 不熟,帮不上你的忙

不过,我建议你还是直接调用 X api,不要使用 gtk 的,你可以看看 skim 的那个新的插件--实现透明的控制
回复

使用道具 举报

发表于 2005-4-8 21:44:27 | 显示全部楼层
能不能留个联系方式呢?
我们好进一步交流,信箱什么的都行啊!
其实gdk也就是将xlib给封装了一下,至于上面那段代码,我想你也应该能看懂吧,凭字义!
我想知道你都做了什么,有什么地方应该注意,能不能介绍一下思路。
我看了一下xfce4(gtk/gdk based)的panel透明的源码,没有发现什么需要注意的地方,
也只是修改了属性!你的代码我也看过,也指是修改了X的Property啊,还有别的地方需要注意嘛?
昨天搞到很晚可还是不行。
谢谢赐教!
回复

使用道具 举报

 楼主| 发表于 2005-4-9 04:33:08 | 显示全部楼层
你要是想让那个设置立刻生效的话,必须调用 Xsync

还有就是属性的名字,不同的 composite manager 是不同的

在这里讨论不好吗
回复

使用道具 举报

发表于 2005-4-9 15:12:09 | 显示全部楼层
这里面的反应太慢了,我有看了transet的代码,好象需要开xcompmgr,才能达到背景透明的效果吧!
奶奶的不能找到如何从gdk的window里面找出x11的window,调用上层的库好象也没有效果!
回复

使用道具 举报

发表于 2005-4-9 17:11:00 | 显示全部楼层
When an application creates windows, it first has to create at least one top-level window. This window becomes a direct descendant of the root window, until it is first mapped on the screen. Before this window is mapped, the window manager is notified of the operation about to take place. The window manager then has the privilege of re-parenting the new top-level window. This is used to add a window that will contain the new window, and will be used to draw its frame, title bar, system menu, etc.
哈哈,问题好象就在窗口管理器这里,我在kde下用gdk代码访问到的只是gdk自己创建的top-level窗口,而实际的(X服务器看来)top-level窗口并不是这个,被窗口管理器给更换了,所以我每次更改哪个透明属性根本没用,我需要直接得到窗口管理器的Window,然后改变其属性就应该ok了,现在问题是,我怎样通过我已知的gdk的top-levle的Window,得到窗口管理的Window,如果这一关过了,问题也就应韧而解了!
回复

使用道具 举报

 楼主| 发表于 2005-4-9 20:46:34 | 显示全部楼层
呵呵,我对 gdk 基本上可以说不了解,这我就帮不上忙了

skim 中其实是一个比较特殊的情况:window 是没有 WM border 的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 09:31 , Processed in 0.115033 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表