首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X11,如何检测我是显示器上的最后一个窗口/应用程序

X11,如何检测我是显示器上的最后一个窗口/应用程序
EN

Stack Overflow用户
提问于 2010-04-26 22:30:18
回答 1查看 473关注 0票数 2

我有一个带有窗口管理器的x11显示器(遗憾的是不是特定的,可以是twm,dtwm,mwm,metacity…)、myApp和其他带有windows的应用程序。如果其他应用程序已关闭,并且只有myApp在显示器上有窗口,则我想关闭显示器。我确实知道myApp的窗口,但我如何区分窗口管理器的窗口和其他应用程序的窗口。

我目前正在使用xwininfo -tree -root -children进行投票,并将其与我预期的结果进行比较,但这只适用于‘定义良好’的环境。

上面提到的许多windowmanager似乎都不支持EWMH。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-01 03:34:55

不会有一种完全非黑客的方式。

ICCCM建议通过查找WM_STATE属性来识别顶层窗口(与WM框架相对)。所以你可以用它来区分应用程序窗口。但是,当WM将窗口重定为框架的父窗口时,在框架窗口中找到应用程序窗口会变得很棘手。你必须实现一个小程序来做像xwininfo -tree这样的事情,但只检查设置了WM_STATE的窗口。

一个比较好的解决方案是使用libwnck,或者基于libwnck的工具(wmctrl,魔鬼饼)。然而,这需要一个EWMH窗口管理器(它包括任何稍微现代或正常的东西,但听起来像是您在处理一些非常古老的、古怪的东西)。这些工具的优点是它们使用EWMH来识别应用程序窗口,甚至识别这些应用程序窗口(对话框等)的语义类型。

此外,libwnck消除了轮询的需要,它只需监视顶层窗口列表中的更改。

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

https://stackoverflow.com/questions/2714253

复制
相关文章

相似问题

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