Generated by GPT-5-mini| Desktop Entry Spec | |
|---|---|
| Name | Desktop Entry Spec |
| Developer | freedesktop.org |
| Released | 2000s |
| Latest release | ongoing |
| Operating system | Unix-like |
| License | open standard |
Desktop Entry Spec
The Desktop Entry Spec defines a standardized text-file format used by freedesktop.org and interoperable desktop environments such as KDE, GNOME, XFCE, MATE and LXDE to describe application launchers, menu items, and other metadata consumed by components like XDG Base Directory Specification, XDG Autostart Specification and window managers such as Metacity and KWin. It enables consistent behavior across distributions including Debian, Ubuntu, Fedora, Arch Linux and openSUSE by prescribing keys, groups, and localization rules that are implemented by desktop shells, file managers (e.g., Nautilus, Dolphin, Thunar) and session managers such as systemd user sessions.
The spec is maintained by freedesktop.org contributors and aligns with standards used by desktop ecosystems including KDE Plasma, GNOME Shell, Unity (user interface), XFCE4, LXQt and Enlightenment. It draws on legacy practices from X11 desktops and integrates with modern systems like Wayland compositors, systemd-based session handling and distribution packaging policies from Red Hat, Debian Project and Canonical. Implementations appear in menu systems, application launchers, autostart facilities and software centers such as GNOME Software and Discover (software).
The format is an INI-like file with sections and key=value pairs; primary sections include [Desktop Entry] and optional groups defined by the spec. Important keys reference icons from standards such as Icon Theme Specification and mime types registered with freedesktop.org's Shared MIME-info Database. Localization follows the conventions used by gettext and internationalization efforts in projects like KDE i18n and GNOME Internationalization. The spec interacts with packaging metadata used by RPM (file format), Debian Policy, AppStream and container runtimes like Flatpak and Snapcraft.
Common keys include Name, GenericName, Comment, Exec, TryExec, Icon, Terminal, Type, MimeType, Categories, StartupNotify, OnlyShowIn, NotShowIn, DBusActivatable and Hidden. These keys are used by desktop shells such as GNOME Shell and KDE Plasma and by menu generators in projects like freedesktop.org’s menu specification and XDG Menu implementations. The Categories key references taxonomy used by software centers and distributions including GNOME Software and Discover (software), while MimeType keys integrate with xdg-mime and the Shared MIME-info Database.
Desktop entry files typically reside in well-known directories defined by XDG Base Directory Specification such as /usr/share/applications, /usr/local/share/applications and ~/.local/share/applications, and follow naming conventions used by packaging systems like RPM (file format) and Debian. The spec informs how desktops like KDE Plasma and GNOME discover and prioritize entries, interacting with system services such as systemd user units and session autostart mechanisms described in XDG Autostart Specification.
Examples include application launchers for widely distributed programs such as Firefox, LibreOffice, VLC media player, GIMP and Inkscape, as well as specialized entries for utilities in GNOME and KDE ecosystems. Desktop entries for web applications tie into initiatives like Web Application Manifest adapters, while platform-packaged entries for Flatpak, Snapcraft and traditional Debian or RPM packages demonstrate variant Exec and Icon handling. Menu integration examples appear in distributions produced by organizations such as Canonical and Red Hat.
Adoption spans major desktop environments (e.g., GNOME, KDE Plasma, XFCE4, LXQt), distributions like Fedora, Debian, Ubuntu and openSUSE, and application ecosystems such as Flatpak, Snapcraft and AppImage. Desktop environments implement the spec in components like GIO, libfm, KService and menu handling libraries. The spec is referenced in packaging guidelines by projects including Debian Project and Freedesktop packaging efforts and is part of interoperability work with organizations such as Linux Foundation initiatives that coordinate cross-project standards.
Security considerations include handling of Exec keys, environment variables, and user-controlled files in ~/.local/share/applications, which affect privilege boundaries and attack surfaces relevant to sandboxing systems such as Flatpak and Snapcraft. Interaction with desktop portals like xdg-desktop-portal and session managers including systemd influences permission models and desktop isolation. Desktop entry handling must account for potential spoofing via Icon and Name values and adhere to packaging security practices promoted by projects like Debian Project, Red Hat and AppArmor/SELinux confinement models.