michael.terry at canonical.com
Thu Jul 14 08:36:14 PDT 2011
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
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.
More information about the xdg