Hello! I've seen the idea of a XDG_CURRENT_DESKTOP environment variable tossed around a few times on this mailing list, but I don't see it in any spec.

Historically, most desktop file parsing libraries were tightly tied to a desktop and were able to assume which XDG desktop they were in (e.g. libgmenu assumes 'GNOME').

However in Unity, it uses most of the same libraries but still wants the ability to respect OnlyShowIn=Unity. So there's a need for those libraries to detect which desktop is running. The easiest/quickest way is to use an environment variable like XDG_CURRENT_DESKTOP.

I have some ideas on how such a variable might work:

== Reading ==

If XDG_CURRENT_DESKTOP is not set in the environment at all or if set to the empty string, its value is undefined. This is for backwards compatibility, so that parsing libraries can use whatever default environment they want (as is the case now).

If set to a non-empty string, use that as the XDG desktop name ('GNOME', 'Unity', 'KDE', etc). Do not try to validate the value, as this makes it difficult to add new desktops in the future.

It might be useful for debugging purposes to have a value that tells libraries to ignore OnlyShowIn and NotShowIn and just show everything. Maybe '*'? Not clear this is worth it.

== Writing ==

It seems easiest to have the DM set XDG_CURRENT_DESKTOP. How about adding a new DesktopName field in the XSession desktop file, like so:


If this field is not found in the XSession desktop file, the DM should either not define the variable at all or set it to the empty string.

If this field is found in the XSession desktop file, the DM should set XDG_CURRENT_DESKTOP to its value, again without any attempt at validation.

xdg mailing list

Reply via email to