我是一名学生,他做了一些web东西和一些命令行应用程序,现在给GUI一个尝试.我读了
http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html,我绊倒了这句话:
Since GTK+ now supports Client Side Decoration,a Gtk.HeaderBar can be used in place of the title bar (which is rendered by the Window Manager).
有人可以解释一下“客户端装饰”吗?
从http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/读起,我会猜测“客户端装饰”就是主题.有人可以解释窗口管理员如何与GTK进行交互?为什么叫“客户端装饰”?什么是服务器端装饰? (还是其他类型的装饰?)
传统上,GUI应用程序将对其窗口的内容负责,而不是标题栏,关闭按钮,边框,调整大小等等.这些都将被窗口管理器添加,并称为装饰.
原文链接:https://www.f2er.com/windows/364135.html(窗口管理器的示例是TWM,FluxBox,Metacity,Mutter等)
这是一个简单的解释,但这是桌面主题的实现方式;由于窗口不知道其标题栏,窗口管理器将一个与当前主题相匹配的窗口管理器.如果用户更改主题,则窗口只是更改标题栏.您的应用程序不必在乎.
另一方面,这意味着您的应用程序完全不可能以任何方式自定义标题栏.
近年来,已经有可能告诉窗口管理员“不谢谢你,我不想要装饰”,而是渲染你自己的标题栏.这就是GtkHeaderBar是什么 – 通过在标题栏中放置自定义控件来节省更多的屏幕空间,例如Chromium与浏览器选项卡.这被称为客户端装饰.
(从技术上讲,这总是可能的,但容易出错,因为你必须自己模仿窗口装饰的所有功能,用户期望他们工作的方式,GtkHeaderBar为你做.)
这是一把双刃剑,因为客户端装饰,您的应用程序不会对窗口管理器主题的更改做出反应.
至于客户端的名称,它来自X术语,其中客户端是呈现窗口并将其发送到X服务器的应用程序.