Skip to content

Use $XDG_CURRENT_DESKTOP for CSD decision

Previously, the automatic decision for whether to use client-side decorations was made by examining the $DESKTOP_SESSION variable. This entails adding new entries to the default value for any new desktop, even if it is derived from one already on the list.

$XDG_CURRENT_DESKTOP is defined by the Desktop Entry Specification[0], in passing, while defining the OnlyShowIn/NotShowIn keys:

If $XDG_CURRENT_DESKTOP is set then it contains a colon-separated list of strings. In order, each string is considered. If a matching entry is found in OnlyShowIn then the desktop file is shown. If an entry is found in NotShowIn then the desktop file is not shown. If none of the strings match then the default action is taken (as above).

On Ubuntu, $XDG_CURRENT_DESKTOP is "ubuntu:GNOME". Similarly, in Endless OS 3.8.0, it will be "endless:GNOME". This is a more scalable way to detect a "GNOME-like" desktop than a gradually-expanding list of substring matches on the desktop session name.

With this change, Gnote correctly displays without server-side decorations on Endless OS 3.8.0.

[0] https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys

Merge request reports