Enlightenment DR17 uses freedesktop.org .desktop files according to the XDG Desktop Entry Specification version 0.9.4, icon themes according to the XDG Icon Theme Specification version 0.11, and menus according to the Desktop Menu Specification version 0.92. Everything is searched for in paths specified by XDG Base Directory Specification version 0.6. There are some extensions and gotchas though. Paths. The spec wants us to run gnome-config and kde-config several times at startup. This is currently #if'ed out and replaced with guesses. Lots of guesses is a lot quicker than actually running those programs, and often is good enough. The plan is to have an idle process run those programs and fix the guesses. A lot of distro specific quirks can be solved by adding more directories and directory snippets to the ecore_desktop_paths code. The process of eliminating non existing directories is quick, and only done once at start up. .desktop. Some extension fields are defined as allowed by the specification. X-Enlightenment-IconPath is used to specify an absolute or relative path to an icon file. If it exists it overrides any other icon specifications. X-Enlightenment-IconClass is used to specify a list of icon classes. This is the same information that was in .eaps as app/icon/class, and is used the same way if it exists. Obviously any .desktop file that comes with packages outside of E is unlikely to have that field. One further twist is that if the icon classes are not found in edje, then icon class becomes a list of icons to search in the standard FDO way. The standard Icon field is also treated differently. If it contains a / it is considered to be an absolute path, or a path relative to the location of the .desktop file. Otherwise, if no icon class was specified in the .desktop file, then the Icon, Exec, and Categories fields are used in that order to build an icon class. Everything but the Icon field is lower cased. This means that for standard .desktop files, with out the extension fields, icons in the E theme are searched for first, then icons are searched for in the usual FDO way, unless the Icon field specifies a path, then it is simply used with no searching. Converted .eaps should just copy the app/icon/class data to the X-Enlightenment-IconClass field. X-Enlightenment-WindowName, X-Enlightenment-WindowTitle, X-Enlightenment-WindowRole, and X-Enlightenment-WaitExit are just the same as their namesakes in .eaps. Icon theme. .edj files are searched for before the other types of icon file. The "icon" group is used to specify the graphics for the icon. It is up to the code using the result to allow full edje interactions and animations, and people that write that code are encouraged to support it all. Menus. The most complex, and thus the most problematic of the specifications. The general philosophy is to err on the side of caution, giving the user more apps in their menus rather than less. Even if that means some duplicates and some things that aren't really apps. There is often a .hidden menu, it contains various types of things. Some of those things are supposed to be moved into proper menus by the menu moving part of the spec. The menu moving code has not been implemented yet. Following the above philosophy, it is shown to the user. Slackware and probably other distros use parent style menu merging. Initially I did not write code to support that for two reasons. The specification is confusing, and it takes some digging and cross referencing other specs to sort out what it actually means. The other reason is that distros available to me at the time for testing did not use parent style menu merging, so there was no way to test it properly. Now that I know of at least one distro that uses them, it's worthwhile writing the code, and installing slackware under QEMU for testing.