Клиентское оформление ( CSD ) — это концепция, позволяющая графическому приложению отвечать за отрисовку собственных оконных оформлений , что исторически было обязанностью оконного менеджера . [1]
Иногда декорирование на стороне клиента используется для обозначения приложений, которые не имеют традиционной строки заголовка. Однако это неправильное использование фразы, так как даже приложения, которые имеют базовую строку заголовка, могут быть декорированы на стороне клиента. [2]
Используя клиентское оформление вместо традиционного серверного, приложения могут рисовать собственную строку заголовка, что обеспечивает широкий спектр возможностей для настройки оформления окон и добавления дополнительных функций ( графических элементов управления ) в то, что в противном случае было бы типичной панелью оконного менеджера с большим количеством пустого пространства в развернутых окнах. [3]
Термин Client-Side Decoration происходит из X Window System , где клиент — это приложение, которое визуализирует окно и отправляет его на X -сервер , который управляет дисплеем. Альтернатива называется Server-Side Decoration (SSD), хотя в X декорация рисуется оконным менеджером, который на самом деле не является «сервером». Эти термины также используются в Wayland , где клиент — это приложение, которое визуализирует окно и отправляет его на сервер Wayland, который управляет дисплеем, а также функционирует как композитный оконный менеджер .
GTK был первым набором инструментов GUI для Linux, который реализовал клиентское оформление с помощью виджета GtkHeaderBar. [4]
GtkHeaderBar объединяет строку заголовка , строку меню и панель инструментов в одну единую горизонтальную панель, чтобы предоставить больше места для содержимого приложения, потенциально сокращая количество неиспользуемого пространства за счет отображения пустых панелей. Это может помочь достичь гибкого пользовательского интерфейса и согласованного пользовательского опыта на различных форм-факторах компьютеров от настольных систем до устройств малого форм-фактора путем удаления традиционных частей, ориентированных на настольный компьютер, из приложений. Они имеют первоклассную поддержку в GNOME Shell и широко используются приложениями GNOME .
Приложения универсальной платформы Windows могут рисовать собственные заголовки. [5]
В macOS приложения AppKit используют клиентское оформление при использовании виджета NSWindow. [6]
В Electron есть возможность использовать окно без рамок (без панели инструментов, строки меню, вкладок), однако приложение само отвечает за отрисовку своих теней. [7]
Deepin Tool Kit — небольшой модифицированный набор инструментов для виджетов на основе Qt5 , используемый Deepin Desktop Environment .
Известные приложения с декорированием на стороне клиента:
Wayland был разработан с учетом клиентского оформления (включая тени окон) по умолчанию, но имеет дополнительный протокол, известный как xdg-decoration, который позволяет приложению (клиенту) запрашивать, поддерживает ли оконный менеджер серверное оформление, и если да, то клиент может его запросить. [8] Mutter , композитор, используемый GNOME Shell , в Wayland поддерживает только клиентское оформление, [9] в то время как KWin поддерживает как клиентское, так и серверное оформление.
Если приложение зависло, пользователь не может закрыть его, нажав кнопку закрытия в рамке окна. [10]