[racket-dev] ".desktop" files (for GUI apps on Unix)

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sat Aug 10 14:54:44 EDT 2013

I've added support for ".desktop" files for GUI launchers on Unix. When
an "info.rkt" file specifies a launcher for "<name>.rkt", then if
"<name>.desktop" exists, "<name>.desktop" is used as the initial
content of the executable's ".desktop" file; "Exec" and "Icon" entries
are added automatically to the end. A "<name>.png" or "<name>.ico" file
provides the ".desktop" file's icon.

For an in-place installation, installation-scoped ".desktop" files go
into "share/applications", and they use relative paths for "Exec" and
"Icon". Relative paths are not actually supported in ".desktop" files,
so the ".desktop" files are essentially templates for creating useful
".desktop" files. (Relative paths are used, even though they are not
supported in ".desktop" files, because an in-place installation is
meant to have no absolute paths.)

For a Unix-style installation, then installation-scoped ".desktop"
files have full paths. The destination for ".desktop" files can be
adjusted with the `--appsdir' flag to `configure' (or by an end user
when installing a distribution). The default destination is
"${prefix}/share/applications", which means that ".desktop" files to
the usual system-wide place when "${prefix}" is "/usr".

Finally, if a package that provides an application is installed in user
scope, then the generated ".desktop" file in
"~/.racket/<version>/share/applications" uses full paths, so it should
work as expected.

Posted on the dev mailing list.