首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是“客户端装饰”?

什么是“客户端装饰”?
EN

Stack Overflow用户
提问于 2015-02-22 03:59:06
回答 1查看 10.6K关注 0票数 23

我是一个学生,曾经做过一些web东西和一些命令行应用程序,现在正在尝试使用GUI。我读了http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html,偶然发现了这句话:

谁能解释一下什么是“客户端装饰”?

通过阅读http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/,我猜想“客户端装饰”有点像主题。有人能解释一下窗口管理器是如何与GTK+交互的吗?为什么它被称为“客户端装饰”?服务器端的装饰是什么?(或者是其他类型的装饰?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 15:48:12

传统上,GUI应用程序将负责其窗口的内容,而不是标题栏、关闭按钮、边框、调整大小夹点等。这些都将由窗口管理器添加,并称为装饰。

(窗口管理器的示例有TWM、Fluxbox、Metacity、Mutter等)

这是一个简单的解释,但这就是桌面主题的实现方式;因为窗口不知道它的标题栏,所以窗口管理器会在它上面放置一个与当前主题匹配的标题栏。如果用户更改了主题,则窗口只会更改标题栏。您的应用程序不必关心。

另一方面,这意味着你的应用程序完全不可能以任何方式定制标题栏。

近年来,可以告诉窗口管理器“不,谢谢,我不想要装饰”,然后呈现自己的标题栏。这就是GtkHeaderBar的目的--通过在标题栏中添加自定义控件来节省更多的屏幕空间,就像Chromium对其浏览器标签所做的那样。这就是所谓的客户端装饰。

(从技术上讲,这始终是可能的,但很容易出错,因为您必须自己模拟窗口装饰的所有功能,以用户期望的方式工作。GtkHeaderBar为您做到了这一点。)

这是一把双刃剑,因为使用客户端装饰时,您的应用程序不会对窗口管理器主题的更改做出反应。

至于名称客户端,它来自于X术语,其中客户端是呈现窗口并将其发送到X服务器的应用程序。

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

https://stackoverflow.com/questions/28650646

复制
相关文章

相似问题

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