Client-side decoration


Client-side decoration (CSD) is een softwareconcept. Binnen dit concept leveren grafische programma's eigen titelbalken aan, ter vervanging van de traditionele titelbalken van vensterbeheerders.[1][2] Een van de bekendste projecten die gebruikmaakt van CSD's is de Linux-werkomgeving GNOME.

Door programma's zelf garant te laten staan voor titelbalken, kunnen ontwikkelaars aanvullende functionaliteit toevoegen, zoals extra knoppen en menu's.[3] Een CSD met dergelijke functies is dus feitelijk een combinatie van een titel- en werkbalk.
Geschiedenis
[bewerken | brontekst bewerken]
De eerste implementatie van CSD's, of in elk geval de meest gelijkende, is die van GlobalView 2.1 uit 1996.[4]
De term client-side decoration is echter afkomstig uit het X Window System, waar een client een programma is dat een venster opmaakt en vervolgens naar de X-server stuurt, die op zijn beurt weer het scherm aanstuurt. Het alternatief is server-side decoration (SSD), hoewel dat op X niet van toepassing is, daar de vensterbeheerder voor de titelbalk zorgt.
Ook in Wayland worden beide termen gebezigd. De implementatie is vrijwel hetzelfde als op X, met als enige verschil dat de vensterbeheerder daar tevens een zogeheten compositing window manager is.
Implementaties
[bewerken | brontekst bewerken]Toolkits
[bewerken | brontekst bewerken]GTK
[bewerken | brontekst bewerken]GTK was in 2013 de eerste toolkit op Linux die client-side decorations implementeerde met behulp van GtkHeaderBar.[5] GtkHeaderBar voegt de titelbalk, menubalk en werkbalk automatisch samen,[6] om zo meer ruimte te geven aan programma-inhoud en naar eigen zeggen beter gebruik te maken van de beschikbare titelbalkruimte. De implementatie wordt veelvuldig toegepast door op GNOME gerichte programma's.
Metro, UWP en Fluent
[bewerken | brontekst bewerken]Programma's die gebruikmaken van het Universal Windows Platform (UWP) of Fluent hebben optioneel de mogelijkheid om hun eigen titelbalken aan te leveren.[7] Ook de oudere Metro-omgeving maakte hier gebruik van.
macOS
[bewerken | brontekst bewerken]Op macOS kunnen met AppKit gemaakte programma's client-side decorations toepassen door gebruik van de NSWindow-widget.[8]

Deepin Tool Kit
[bewerken | brontekst bewerken]Deepin Tool Kit (DTK) is een aangepaste versie van Qt 6. Programma's die gebruikmaken van DTK hebben de optie om CSD's toe te voegen.
Programma's
[bewerken | brontekst bewerken]Enkele bekende programma's die gebruikmaken van client-side decorations zijn:
- Steam;
- Firefox (indien de titelbalk is uitgeschakeld);
- Google Chrome en andere op Chromium gebaseerde webbrowsers op Windows en macOS (CSD's en SSD's op Linux);
- Photoshop CS4;
- Discord.
Displayservers
[bewerken | brontekst bewerken]Wayland
[bewerken | brontekst bewerken]In Wayland zijn client-side decorations standaard beschikbaar, maar met behulp van xdg-decoration kan worden opgevraagd of programma's server-side decorations gebruiken. Enkele Wayland-vensterbeheerders die CSD ondersteunen zijn:
- Mutter, de vensterbeheerder van GNOME Shell, heeft alleen ondersteuning voor CSD's;[9]
- KWin, de vensterbeheerder van KDE Plasma, heeft ondersteuning voor zowel CSD's als SSD's, maar maakt op Wayland standaard gebruik van SSD's.[10][11]
- cosmic-comp, de vensterbeheerder van COSMIC, ondersteunt eveneens beide, maar maakt standaard gebruik van CSD's.[12]
- wl-roots, de Wayland-compositor van Sway, labwc, Wayfire en andere kleinere omgevingen, ondersteunt ook beide.[13]
Beperkingen
[bewerken | brontekst bewerken]Als een programma is vastgelopen, kan het niet worden gesloten door op de sluitknop te klikken.[11]
Zie ook
[bewerken | brontekst bewerken]- Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel Client-side decoration op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.
- ↑ (en) Clasen, Matthias, Client-side decorations, continued. Matthias Clasen (13 januari 2014). Geraadpleegd op 4 mei 2025 – via GNOME Blogs.
- ↑ (en) Müllner, Florian, A small note on window decorations. Florian Müllner (30 januari 2015). Gearchiveerd op 22 januari 2025. Geraadpleegd op 4 mei 2025 – via GNOME Blogs.
- ↑ (en) Larabel, Michael, The CSD Initiative Is Pushing For Apps To Abandon Title Bars In Favor Of Header Bars. Phoronix (26 januari 2018). Gearchiveerd op 6 december 2022. Geraadpleegd op 4 mei 2025.
- ↑ (en) Lineback, Nathan, Xerox GlobalView 2.1. Toasty Technology. Gearchiveerd op 7 juli 2007. Geraadpleegd op 4 mei 2025.
- ↑ (en) Clasen, Matthias, GTK+ 3.10 released. LWN.net (23 september 2013). Gearchiveerd op 12 december 2024. Geraadpleegd op 5 mei 2025.
- ↑ (en) Gtk-3.0. docs.gtk.org. Geraadpleegd op 4 mei 2025.
- ↑ (en) Title bar customization - Windows apps. learn.microsoft.com. Geraadpleegd op 4 mei 2025.
- ↑ (en) NSWindow. Apple Developer Documentation. Gearchiveerd op 2 april 2025. Geraadpleegd op 4 mei 2025.
- ↑ (en) Bernard, Tobias, Introducing the CSD Initiative – Space and Meaning. Tobias Bernard (26 januari 2018). Gearchiveerd op 22 april 2025. Geraadpleegd op 5 mei 2025 – via GNOME Blogs.
- ↑ (en) Flöser, Martin, Server side decorations and Wayland. Martin's Blog (27 januari 2018). Gearchiveerd op 29 april 2025. Geraadpleegd op 5 mei 2025.
- ↑ a b (en) Zahorodnii, Vlad, CSD support in KWin. Vlad Zahorodnii's Blog (23 juli 2020). Gearchiveerd op 6 maart 2025. Geraadpleegd op 5 mei 2025.
- ↑ (en) GTK and QT applications ignore the COSMIC header · Issue #1132 · pop-os/cosmic-comp. Gearchiveerd op 29 april 2025. Geraadpleegd op 5 mei 2025 – via GitHub.
- ↑ (en) wlroots / wlroots. wlroots. Geraadpleegd op 5 mei 2025 – via GitLab.