我是一名学生,做过一些网络工作和一些命令行应用程序,现在尝试使用 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 应用程序将负责其窗口的内容,但不负责标题栏、关闭按钮、边框、调整夹点大小等。这些都将由窗口管理器添加,称为装饰。
(窗口管理器的示例有 TWM、Fluxbox、Metacity、Mutter 等)
这是一个简单的解释,但这就是桌面主题的实现方式;由于窗口不知道它的标题栏,窗口管理器会在其上放置一个与当前主题匹配的标题栏。如果用户改变了主题,那么窗口只会改变标题栏。您的应用程序不必关心。
另一方面,这意味着您的应用程序完全不可能以任何方式自定义标题栏。
近年来,可以告诉窗口管理器“不,谢谢,我不要装饰”,并改为呈现您自己的标题栏。这就是 GtkHeaderBar
是为了——通过在标题栏中放置自定义控件来节省更多的屏幕空间,例如 Chromium 的浏览器选项卡。这称为客户端装饰。
(从技术上讲,这总是可能的,但很容易出错,因为您必须自己模拟 window 装饰的所有功能,就像用户期望它们工作的方式一样。GtkHeaderBar
为您做到了。)
这是一把双刃剑,因为使用客户端装饰,您的应用程序不会对窗口管理器主题的更改使用react。
至于客户端的名称,它来自 X 术语,其中客户端是呈现窗口并将其发送到 X 服务器的应用程序。
关于user-interface - 什么是 'client side decoration' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650646/