Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Terminology  





2 Implementations  



2.1  Widget toolkits  



2.1.1  GTK  





2.1.2  UWP  





2.1.3  macOS  





2.1.4  Electron  





2.1.5  Deepin Tool Kit  







2.2  Applications  





2.3  Display servers  



2.3.1  Wayland  









3 Limitations  





4 History  





5 See also  





6 References  














Client-side decoration







 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Example of an application that uses Client-Side Decoration to draw its own window controls. (GtkHeaderBar widget on GNOME Files, 2014-01)

Client-side decoration (CSD) is the concept of allowing a graphical application software to be responsible for drawing its own window decorations, historically the responsibility of the window manager.[1]

Sometimes client-side decoration is used to refer to the applications that don't have a traditional title bar. However, this is a misuse of the phrase, as even applications that have a basic title bar can be client side decorated.[2]

By using client-side decoration rather than traditional server-side decoration, applications are able to draw their own title bar, which allows for a wide range of possibilities to customize window decorations and add additional functionality (graphical control elements) into what otherwise would be a typical window manager bar with much empty space in the maximized windows.[3]

Terminology[edit]

The term Client-Side Decoration comes from the X Window System, where a client is the application which renders a window and sends it to the X server that controls the display. The alternative is called Server-Side Decoration (SSD) even though on X the decoration is drawn by the window manager, which is not actually the "server". Those terms are also used in Wayland, where a client is the application, which renders a window and sends it to the Wayland server, which controls the display and also functions as a compositing window manager.

Implementations[edit]

Widget toolkits[edit]

GTK[edit]

GTK was the first GUI toolkit on Linux that implemented client-side decoration using the GtkHeaderBar widget.[4]

GtkHeaderBar merges the title bar, menu bar and tool bar into one unified horizontal bar in order to give more space to the application content, potentially reducing the amount of wasted space by showing empty bars. This can help to achieve a flexible UI and consistent UX across different computer form factors from desktop systems to small form factor devices by removing the traditional desktop-oriented parts from applications. These have first-class support in GNOME Shell and are widely used by GNOME applications.

UWP[edit]

Universal Windows Platform applications can choose to draw their own title bars.[5]

macOS[edit]

InmacOS, AppKit applications use client-side decoration when using the NSWindow widget.[6]

Electron[edit]

Electron has the option to use a frame-less window (without toolbar, menu bar, tabs), however the application is responsible for drawing its own shadows.[7]

Deepin Tool Kit[edit]

Deepin File Manager, a Qt-based application with client-side decoration.

Deepin Tool Kit is a small modified widget toolkit based on Qt5, it is used by Deepin Desktop Environment.

Applications[edit]

Notable applications with client-side decoration:

Display servers[edit]

Wayland[edit]

Wayland was designed to have client-side decorations (including the shadows of windows) by default, but has an optional protocol, known as xdg-decoration, which allows an application (client) to query whether the window manager supports server-side decoration and if so for a client to request it.[8] Mutter, the compositor used by GNOME Shell, under Wayland only supports client side decoration,[9] whilst KWin supports both client and server side decoration.

Limitations[edit]

If the application hangs, the user cannot close it by clicking the close button in the window frame.[10]

History[edit]

See also[edit]

References[edit]

  1. ^ "Client-side decorations, continued". blogs.gnome.org. Retrieved 2019-01-17.
  • ^ "A small note on window decorations | Florian Müllner". Retrieved 2019-11-13.
  • ^ "The CSD Initiative Is Pushing For Apps To Abandon Title Bars In Favor Of Header Bars - Phoronix". Phoronix. Retrieved 2018-01-28.
  • ^ "GtkHeaderBar: GTK+ 3 Reference Manual". developer.gnome.org. Retrieved 2019-01-17.
  • ^ mijacobs. "Title bar customization - Windows UWP applications". docs.microsoft.com. Retrieved 2019-01-17.
  • ^ "NSWindow - AppKit | Apple Developer Documentation". developer.apple.com. Retrieved 2019-06-07.
  • ^ "Frameless Window | Electron". electronjs.org. Retrieved 2019-01-17.
  • ^ Wayland protocol development, Wayland, 2019-10-07, retrieved 2019-11-13
  • ^ Bernard, Tobias. "Introducing the CSD Initiative – Space and Meaning". GNOME. Retrieved 2018-01-28.
  • ^ Zahorodnii, Vlad (2020-07-23). "CSD support in KWin". Vlad Zahorodnii's Blog. Retrieved 2024-03-05.
  • ^ "GTK+ 3.10 released [LWN.net]". lwn.net. Retrieved 2019-01-17.


  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Client-side_decoration&oldid=1223112768"

    Categories: 
    Graphical control elements
    Graphical user interface elements
    Hidden categories: 
    Articles with short description
    Short description is different from Wikidata
     



    This page was last edited on 10 May 2024, at 00:02 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki