首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GUI工具包如何与Linux上的窗口管理器通信?

GUI工具包如何与Linux上的窗口管理器通信?
EN

Stack Overflow用户
提问于 2012-03-22 02:15:46
回答 2查看 587关注 0票数 3

使GUI工具包(如Qt、GTK)与窗口管理器协同工作的基本机制是什么?

据我所知,GUI工具包可以绘制自己的主窗口,而不需要任何窗口管理器。然而,让我困惑的是,窗口管理器何时以及如何检测到x-server中的“新窗口请求”,并在此窗口周围绘制其框架、标题等?当然,某种隐式的协调是必要的。然而,从编码的角度来看,窗口管理器初始化对于GUI工具包似乎是完全透明的。

GUI工具包和窗口管理器都是x window的两个对等客户端,这是真的吗?调用(通知)窗口管理器以参与新窗口创建过程是x-server的责任吗?如果是这样的话,当没有窗口管理器时,谁来决定“应用程序窗口”的位置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-09 17:56:23

主要的通信机制是通过窗口属性。查看它的起点是ICCCM,特别是Chapter 4。这包括像窗口装饰和按钮这样的东西。

现代桌面极大地扩展了ICCCM中描述的约定,有关更多信息,请参阅standards/freedesktop.org/wm-spec。这些扩展包括诸如寻呼机和任务栏之类的东西。

此外,窗口管理器具有特殊权限,即它可以查看和拦截所有窗口配置、调整大小和映射请求。这称为重定向,参见例如here。我猜你主要对这种交流感兴趣。

一次只能有一个客户端执行重定向,此客户端被定义为窗口管理器。在所有其他方面,客户端都是同级。

所有窗口创建/配置请求都包含窗口坐标。窗口管理器可以拦截和修改这些坐标。如果没有窗口管理器,则请求将由X服务器执行,就像应用程序发送它们一样。

票数 2
EN

Stack Overflow用户

发布于 2012-04-02 07:04:35

一切最终都是通过X服务器来协调的。读一读,我相信你会找到你正在寻找的答案……

一些一般信息:

http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture#Inter-client_communication

http://en.wikipedia.org/wiki/X_window_manager#How_X_window_managers_work

Xlib编程手册-特别是第9、10和14章:

http://tronche.com/gui/x/xlib/

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

https://stackoverflow.com/questions/9810448

复制
相关文章

相似问题

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