我是一个学生,曾经做过一些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+交互的吗?为什么它被称为“客户端装饰”?服务器端的装饰是什么?(或者是其他类型的装饰?)
发布于 2015-02-22 15:48:12
传统上,GUI应用程序将负责其窗口的内容,而不是标题栏、关闭按钮、边框、调整大小夹点等。这些都将由窗口管理器添加,并称为装饰。
(窗口管理器的示例有TWM、Fluxbox、Metacity、Mutter等)
这是一个简单的解释,但这就是桌面主题的实现方式;因为窗口不知道它的标题栏,所以窗口管理器会在它上面放置一个与当前主题匹配的标题栏。如果用户更改了主题,则窗口只会更改标题栏。您的应用程序不必关心。
另一方面,这意味着你的应用程序完全不可能以任何方式定制标题栏。
近年来,可以告诉窗口管理器“不,谢谢,我不想要装饰”,然后呈现自己的标题栏。这就是GtkHeaderBar
的目的--通过在标题栏中添加自定义控件来节省更多的屏幕空间,就像Chromium对其浏览器标签所做的那样。这就是所谓的客户端装饰。
(从技术上讲,这始终是可能的,但很容易出错,因为您必须自己模拟窗口装饰的所有功能,以用户期望的方式工作。GtkHeaderBar
为您做到了这一点。)
这是一把双刃剑,因为使用客户端装饰时,您的应用程序不会对窗口管理器主题的更改做出反应。
至于名称客户端,它来自于X术语,其中客户端是呈现窗口并将其发送到X服务器的应用程序。
https://stackoverflow.com/questions/28650646
复制相似问题