首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/X11:了解用户是否切换虚拟桌面

Python/X11:了解用户是否切换虚拟桌面
EN

Stack Overflow用户
提问于 2010-04-15 07:32:36
回答 4查看 1.1K关注 0票数 0

我正在寻找一种方法来确定用户是否在X11下切换虚拟桌面。

我将Python与X11库和PyGTK一起使用。我找到了一些用C语言编写的工作示例,但我缺乏将它们转换成Python的专业知识,并且我阅读了几个X11分页应用程序(fbpanel、pypanel)的源代码,但似乎找不到我要找的东西。

我需要注册才能收到信号吗?使用X11还是GTK?我是不是得忙着-等等?

我对X11和GTK都是全新的,所以任何提示/帮助都将不胜感激。

你好,菲利普

PS:我目前的努力可以找到here

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-08 10:17:08

这是一个基于GTK的解决方案:

代码语言:javascript
复制
screen = gtk.gdk.screen_get_default()
root = screen.get_root_window()
root.set_events(gtk.gdk.SUBSTRUCTURE_MASK)
root.add_filter(event_filter)

def event_filter(event, user_data):
        # process event
        return gtk.gdk.FILTER_CONTINUE

显然,SUBSTRUCTURE_MASK包含通常与工作空间切换相关的事件。尽管如此,这种解决方案感觉有点笨拙。有什么想法吗?

你好,菲利普

票数 1
EN

Stack Overflow用户

发布于 2010-04-15 07:37:43

您可能想看看libwnck,或者它的Python绑定。

票数 0
EN

Stack Overflow用户

发布于 2014-03-15 17:16:48

通常,桌面更改是通过根窗口上的属性更改来通知客户端的,因此请监听PROPERTY_CHANGE_MASK而不是SUBSTRUCTURE_MASK;这会给您带来更少的噪音。

至于哪些属性发生了变化,我怀疑这在不同的窗口管理器/桌面/其他东西中是不同的;我正在运行ubuntu/unity,当我在桌面切换前后执行"xprop -root“,并比较结果时,我发现发生变化的属性是_NET_DESKTOP_VIEWPORT。

除此之外,我得到的主要噪音是根窗口的_NET_ACTIVE_WINDOW属性每次活动窗口更改时都会更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2641766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档