forked from Qortal/Brooklyn
87 lines
3.8 KiB
Plaintext
87 lines
3.8 KiB
Plaintext
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.
|
|
|