Подтвердить что ты не робот

Что такое "украшение на стороне клиента"?

Я студент, который сделал некоторые веб-материалы и некоторые приложения с командной строкой, теперь давая 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 +? Почему он называется "украшение на стороне клиента"? Что будет украшением на стороне сервера? (Или другой тип украшения?)

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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