2015-02-21 3 views
18

Я студент, который сделал некоторые веб-материалы и некоторые приложения в командной строке, теперь давая GUI попробовать. Я прочитал http://python-gtk-3-tutorial.readthedocs.org/en/latest/layout.html и я споткнулся это предложение:Что такое «украшение на стороне клиента»?

Поскольку GTK + теперь поддерживает Client Side Украшение, Gtk.HeaderBar может использоваться вместо заголовка (которая предоставляется менеджером окон).

Не могли бы вы объяснить, что такое «украшение на стороне клиента»?

От чтения http://blogs.gnome.org/mclasen/2014/01/13/client-side-decorations-continued/ Я бы предположил, что «украшение на стороне клиента» - это что-то вроде тем. Может кто-нибудь объяснить, как диспетчер окон взаимодействует с GTK +? Почему он называется «клиент боковое украшение»? Что будет украшением на стороне сервера? (Или другой тип оформления?)

ответ

29

Традиционно приложение GUI будет отвечать за содержимое его окна, но не за заголовком, закрывать кнопки, границы, изменять размер и т. Д. Все это будет добавлено оконный менеджер, и называются украшениями.

(Примеры оконных менеджеров являются TWM, Fluxbox, Metacity, Mutter, и т.д.)

Это немного упрощенного объяснения, но это, как темы рабочего стола реализованы; поскольку окно не знает о его строке заголовка, диспетчер окон ставит на него один, соответствующий текущей теме. Если пользователь изменяет тему, то окно просто изменяет строку заголовка. Ваше приложение не должно заботиться.

С другой стороны, это означает, что для вашего приложения совершенно невозможно настроить панель заголовка.

В последние годы стало возможным сообщать оконным менеджерам «нет, спасибо, я не хочу украшений» и вместо этого создаю собственную панель заголовка. Это то, что GtkHeaderBar предназначено для —, сохраняя все больше экранной недвижимости, помещая пользовательские элементы управления в строку заголовка, например, Chromium со своими вкладками браузера. Это называется на заказ на стороне клиента.

(Технически это было всегда возможно, но легко получить неправильно, так как вы должны были подражать все функции из окна украшения себя, в пользовательском пути было бы ожидать, чтобы они работали. GtkHeaderBar делает это для вас.)

Это обоюдоострый меч, так как при оформлении на стороне клиента ваше приложение не будет реагировать на изменение темы менеджера окон.

Что касается названия стороны клиента, это происходит из X терминологии, где клиент является приложением, которое делает окно и отправляет его на сервер X .