Generated by GPT-5-mini| XDG Menu | |
|---|---|
| Name | XDG Menu |
| Developer | freedesktop.org |
| Released | 2005 |
| Latest release version | N/A |
| Programming language | Desktop Entry Specification |
| Operating system | Unix-like |
| Genre | Desktop menu specification |
| License | MIT License |
XDG Menu XDG Menu is a freedesktop.org specification for organizing application menus on Unix-like desktops such as KDE, GNOME, LXDE, XFCE and MATE. It defines a directory hierarchy and file formats interoperable with the Desktop Entry Specification, enabling consistent menu presentation across implementations like Alacarte, menumaker, xdg-utils and older systems such as GNOME Panel and KDE Plasma 4. The specification interacts with standards upheld by projects such as freedesktop.org and distributions including Debian, Fedora and Arch Linux.
XDG Menu standardizes mapping between filesystem locations and visible menu structures used by desktop sessions like Xfce, LXQt, KDE Plasma, GNOME Shell and window managers such as Openbox and i3. It relies on closely related specifications such as the Desktop Entry Specification, the Menu Spec lineage, and metadata practices endorsed by freedesktop.org contributors including individuals and organizations associated with projects like Red Hat, Canonical and The X.Org Foundation. Implementations consult distribution packaging standards from Debian Policy and RPM Package Manager workflows when populating /usr/share/applications and user-level directories.
The format builds on the Desktop Entry Specification (.desktop files) and directory conventions similar to those in Filesystem Hierarchy Standard and distribution-defined paths such as /usr/share/applications, /usr/local/share/applications and ~/.local/share/applications. Menu definitions use XML-based category trees influenced by earlier proposals associated with KDE 3, GNOME 2 and the historical KDE Menu format, and they reference categories that map to widely used names in Freedesktop.org and packaging metadata employed by Debian, Fedora, openSUSE and Gentoo. The files include required keys consistent with entries used by utilities like xdg-desktop-menu and parsing libraries in projects including GTK+ and Qt.
Several graphical and command-line tools implement the specification including menu editors like Alacarte and utilities bundled with xdg-utils, as well as generation tools used by distributions such as menumaker scripts, menu-xdg and integration helpers in systemd-based installers. Desktop environments ship parsers within libraries such as libmenu, components in gnome-session and modules in kmenuedit for KDE. Third-party tools from projects like LXDE, XFCE, Openbox and Razor-qt implement adapters or converters to render menus in panels, docks, launchers and session managers.
Desktop shells such as GNOME Shell, KDE Plasma, Xfce Panel and LXQt Panel consume the standardized entries via session services provided by freedesktop.org-compliant APIs, and they coordinate with display managers like GDM, SDDM and LightDM to present consistent application listings. Integration touches components including the X.Org Server stack when launching applications, startup notification handled by StartupNotification implementations, and session saving features implemented in projects like GNOME Session Manager and KDE KWin modules. Distributions such as Ubuntu, Fedora, openSUSE and Arch Linux provide packaging guidelines to ensure .desktop metadata appears correctly in panels, docks, and menu applets.
End users and administrators customize menu contents via per-user directories described in the spec, editing .desktop files with editors like Alacarte or text editors used in GNOME, KDE and Xfce. System integrators automate menu composition with packaging tools used by Debian, Red Hat, SUSE and Gentoo and with configuration management systems such as Ansible, Puppet and Chef to deploy menu entries at scale. Scripting and automation often employ libraries from GLib, Qt, or command-line utilities bundled in xdg-utils to update caches, manage categories, and ensure compatibility with legacy systems originating from KDE 3 and GNOME 2.
The specification evolved from historical menu schemas used in KDE 3 and GNOME 2 and was formalized by contributors within freedesktop.org to reconcile differing menu implementations across projects like KDE, GNOME, Xfce and LXDE. Over time, desktops such as KDE Plasma 5 and GNOME Shell adjusted rendering strategies while distributions including Debian, Fedora and Ubuntu refined packaging policies to reflect the standardized approach. Community efforts involving contributors from Red Hat, Canonical, The X.Org Foundation and independent projects led to adaptation into tooling like xdg-utils and influenced subsequent desktop metadata standards.
Category:Free desktop standards