Инициатива по переводу приложений на декорирование окон на стороне клиента
Разработчики GNOME выступили с инициативой по переводу как можно большего числа приложений на декорирование окон на стороне клиента (CSD, Client Side Decoration), при котором заголовок и рамки окна отрисовываются не оконным менеджером, а самим приложением. CSD позволяет задействовать пропадающее впустую пространство заголовка окна для размещения меню, кнопок панели и других значимых элементов интерфейса.
Для унификации оформления на основе CSD предлагается придерживаться общих рекомендаций, таких как отказ от отдельной панели для заголовка окна, размещение типичных кнопок закрытия/раскрытия/сворачивания окна, предоставление штатного контекстного меню, вызываемого при клике правой кнопкой мыши, поддержка настроек для размещения кнопок в левой или правой части окна. Из достоинств перехода на CSD упоминается экономия вертикального экранного пространства в условиях преобладания широкоформатных экранов и более широкие возможности интеграции с содержимым окна.
Инициатива распространяется как на приложения GMOME, так и на любые другие графические программы, в том числе написанные с использованием Qt. В качестве первичных задач отмечена работа по реализации CSD для Chromium, Firefox, Blender, LibreOffice, GIMP, Inkscape, GNOME Terminal, Skype и Telegram. Среди менее приоритетных проектов упомянуты VLC, Krita, Kdenlive, Darktable, VirtualBox, Transmission и Thunderbird. Для упрощения портирования не-GTK приложений рассматривается возможность подготовки средств для применения CSD в стиле GNOME для приложений на базе Electron и Qt. Для использования CSD в приложениях на GTK2+ предлагается портировать их на GTK3+.
Мартин Грэсслин (Martin Gräßlin), ведущий разработчик оконного менеджера KWin, не согласился с предложением разработчиков GNOME и посчитал его лукавством. При классической отрисовке служебных областей окна на стороне сервера (SSD, Server Side Decoration) гораздо проще привести к единому стилю оформление окон всех приложений. В случае применения CSD потребуется отдельно адаптировать интерфейс к каждому графическому окружению и достаточно трудно добиться того, чтобы приложение не выглядело чужеродно в разных пользовательских окружениях.
Грэсслин считает надуманным упоминание того, что Wayland вынуждает переводить приложения на CSD, так как ничто в Wayland не обязывает применять CSD. CSD требуют GNOME Shell и Weston, но работающие поверх Wayland окружения KDE Plasma и Sway не привязаны с CSD. Разработчики KDE подготовили расширение для протокола Wayland, которое уже поддерживается в GTK и позволяет согласовывать с композитным сервером Wayland использование CSD или SSD. Переход на CSD достаточно трудоёмкая работа и не желающие её выполнять разработчики тулкитов с тем же успехом могут призвать GNOME реализовать декодирование на стороне сервера, тем более, что они сами нуждаются в её поддержке для XWayland.
В ответ авторы инициативы указали на то, что пока не планируют добавлять в GNOME Shell поддержку предложенного расширения к протоколу Wayland. Также указано, что инициатива касается только оптимизации интерфейса приложений для GNOME и не обязывает разработчиков отказаться от использования обычных заголовочных панелей в других пользовательских окружениях. Для выбора режима декодирования окна в приложениях также может предоставляться специальная настройка, как это сделано в Chromium.
© OpenNet