【问题标题】:What is 'client side decoration'?什么是“客户端装饰”?
【发布时间】:2016-01-22 17:22:48
【问题描述】:

我是一名学生,做过一些网络工作和一些命令行应用程序,现在尝试使用 GUI。我读了http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html,偶然发现了这句话:

由于 GTK+ 现在支持客户端装饰,因此可以使用 Gtk.HeaderBar 代替标题栏(由窗口管理器呈现)。

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

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

【问题讨论】:

    标签: user-interface gtk window-managers


    【解决方案1】:

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

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

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

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

    近年来,可以告诉窗口管理器“不,谢谢,我不想要装饰”,而是呈现您自己的标题栏。这就是GtkHeaderBar 的用途——通过在标题栏中放置自定义控件来节省更多的屏幕空间,例如 Chromium 的浏览器选项卡。这称为客户端装饰

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

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

    至于名称​​client-side,它来自X 术语,其中client 是呈现窗口并将其发送到X 的应用程序服务器

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多