You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.8 KiB
86 lines
3.8 KiB
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. |
|
|
|
|