Proposed improvement to the Desktop Entry Specification: Relative icon paths
Magnus Bergmark
magnus.bergmark at gmail.com
Tue Sep 23 01:01:32 PDT 2008
Hi,
In the current Desktop Entry
Specification<http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html>(
1.1<http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html>),
it's possible to specify an icon for the directory (in case of a
.directoryfile) or the
.desktop file itself. Implementations are to follow this rule:
> Icon to display in file manager, menus, etc. If the name is an absolute
> path, the given file will be used. If the name is not an absolute path, the
> algorithm described in the Icon Theme Specification<http://freedesktop.org/wiki/Standards/icon-theme-spec>will be used to locate the icon.
>
The Icon Theme Specification<http://freedesktop.org/wiki/Standards/icon-theme-spec>specifies
that the icon should be seached for in a collection of paths
related to the current theme.
I propose that we allow the usage of relative paths in some way also.
*Use-cases*
1. I use a lot of .directory files to make directories containing a movie
have the movie poster as the icon. This behaviour could apply to any form of
media, like comic books, music (album art) and photos.
2. A vendor might want to bundle an icon to a piece of software they're
distributing to go with a .desktop file which are not to go in the
desktop menu and therefore are still located in the application directory.
*Current solutions*
1. I have a script looking for a specially named file (.folder.png) and
when it finds one, it will create or update the .directory file in the
same location as the icon file with the full path of it. Everytime I move a
directory, mount it on another computer or just have a soft link I browse
through, I have to rerun the script in the current path I'm using.
Applications like Amarok will explicitly create the .directory file with
the icon path set to the absolute path to the directory, plus the filename
of the album art.
2. In this case, the install script must update the .desktop file with
the full path to the icon, and hope that the user will never move this
directory. A install script is now required even if it wasn't before.
*Proposed solutions*
I propose that we allow the user to specify a relative path to a file to use
as an icon. How we do this is not really important, but I have these
separate suggestions (ordered by how it "should" work, IMHO):
- Icon paths starting with a dot will be relative from the directory
containing the Desktop Entry; the path ./folder_icon.png in
/home/user/Documents/BookProject/.directory will set the icon to
/home/user/Documents/BookProject/folder_icon.png.
- When no absolute path is specified, first search the containing
directory before following the Icon Theme Specification. In the example
above, we would have entered folder_icon.png and this file would have
been found locally before searching for it and therefore set.
- Usage of some other prefix to denote a relative path, rules following
the others
- Using a different setting, or a compliment to the setting (like
Icon=..., IconPath=Relative), rules following the others
I do not think the first few would be that hard to implement, altough my
knowledge in this area is a bit clouded. It is important to specify exactly
where the relative path will apply from when loading the icon, and when this
is done, it should be easy enough to do the rest. According to how I think
would be best is to have the relative path apply to the directory *
containing* the Desktop Entry. That is, if I use some form of file manager
that follows the specs and I have the following structure:
─+─ Projects
│
+─ BookProject
│ │
│ +─ .directory (Icon=./folder_icon.png)
│ +─ folder_icon.png
│ +─ (...)
│
+─ SoftwareProject
│
+─ .directory (Icon=./.project.png)
+─ .project.png
+─ gendocs.png
+─ Generate Documentation.desktop (Icon=./gendocs.png)
+─ (...)
- Visiting SoftwareProject would let me see a entry called Generate
Documentation and have the Projects/SoftwareProject/gendocs.png file as
an icon.
- Visiting BookProject would let me see that the current directory have
Projects/BookProject/folder_icon.png as the icon (if whis is displayed at
all).
- Visiting Projects will let me see two directories, BookProject and
SoftwareProject, both having their respective icons correctly as expected.
I would not be surprised if it's hard to do this in reality since the most
simple things are often the hardest to do in a large codebase. It would also
not surprise me if this is the reason it's not in the spec from the
beginning... Perhaps we could make this easier if we specify that a local
path going up a directory structure will be illegal and that the path must
be from the directory downwards.
Anyway... Let's discuss!
PS. I hope this is the correct list to mail this to. If not, please direct
me to where I should send this proposal. .DS
--
Magnus Bergmark - magnus DOT bergmark AT gmail DOT com
GPG/PGP: 0x7BE84794DB6AA648
Fingerprint: 0E6F D2DB F0EF 534A 2184 52AF 7BE8 4794 DB6A A648
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/xdg/attachments/20080923/1d5efa2e/attachment.htm
More information about the xdg
mailing list