首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测排序器是否正在运行

检测排序器是否正在运行
EN

Stack Overflow用户
提问于 2015-10-18 07:50:44
回答 1查看 1.7K关注 0票数 2

我希望我的UI改变设计,这取决于屏幕是否是复合的(因此支持某些效果)。是否有可能

  • 可靠地查询X服务器是否正在运行组合窗口管理器
  • 当复合打开/关闭时会收到通知吗?

解决方案:

为了详细说明Andrey对那些不太熟悉X11 API的人的正确答案,这是用于检测符合EWMH的排序器的代码:

代码语言:javascript
复制
int has_compositor(Display *dpy, int screen) {
    char prop_name[20];
    snprintf(prop_name, 20, "_NET_WM_CM_S%d", screen);
    Atom prop_atom = XInternAtom(dpy, prop_name, False);
    return XGetSelectionOwner(dpy, prop_atom) != None;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-18 22:31:15

符合EWMH标准的合成器Sn,其中n是屏幕号。

要跟踪排序器,您需要使用_NET_WM_CM_S0检查选择是否为任何人所拥有(假设您在屏幕0上)。如果没有所有权,则自己获取所有权,并监视SelectionClear事件,以检测何时启动排序器。

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

https://stackoverflow.com/questions/33195570

复制
相关文章

相似问题

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