Interoperability specifications
freedesktop.org produces specifications for interoperability, but we are not an official standards body. There is no requirement for projects to implement all of these specifications, nor certification.
Below are some of the specifications we have produced, many under the banner of 'XDG', which stands for the Cross-Desktop Group.
Some of these specifications are in (very) active use and have a large body of interested developers. Many of them are seen to be stable, in no need of further development, and may not have active devlopment. Some of them are not used or widely implemented.
If you would like to propose a new specification, or a change to an existing specification, please file an issue on the spec under the GitLab XDG project, or discuss it on the xdg@ mailing list.
Please note that some of the links and information on this page is quite outdated. We are in the process of updating it and making sure it is accurate. Please consult the mailing list or GitLab if you are in doubt about anything.
Specifications that are in wide use:
- Autostart: how applications can be started automatically after the user has logged in, and how removable media can request a specific application to be executed or a specific file on the media to be opened after the media has been mounted.
- Desktop base directories (basedir): how desktops should locate files, such as config files or application data files.
- Desktop entries (.desktop): files describing information about an application such as the name, icon, and description. These files are used for application launchers and for creating menus of applications that can be launched.
- Desktop menus (menu): how menus are built up from desktop entries.
- File manager D-Bus interface: a common way to interact with the desktop's file manager.
- File URIs: how to create and interpret interpret
file://
URIs, as used for drag and drop and other desktop uses. - Free media player specifications: standard ways to store and read metadata across players and media formats.
- Icon themes: a common way to store icon themes.
- Media Player Remote Interfacing Specification (MPRIS): A D-Bus interface to control media players
- Shared MIME database (shared-mime-info): contains common MIME types, descriptions, and rules for determining the types of files.
- Startup notifications: a mechanism to allow desktop environments to track application startup, to provide user feedback and other features.
- Trash: a common way in which all "Trash can" implementations should store, list, and undelete trashed files.
- XML Bookmark Exchange Language (XBEL): an internet "bookmarks" interchange format.
X11-specific specifications that are in wide use:
- DnD: a drag-and-drop specification shared between ?GTK+ and ?Qt. A local copy of the spec resides on the wiki, along with some proposed revisions.
- UTF8_STRING: selection format for interchange of UTF-8 data.
- Window manager specification: standardizes extensions to the ICCCM between X desktops; we are also working to merge these extensions into the ICCCM itself as appropriate.
- XEmbed: inter-application embedding of controls.
- X clipboard explanation: explains our consensus on how the X clipboard works. Qt and GTK+ both follow this document.
Draft specifications that are not yet widely used, though they may be used by one or more desktops or applications:
- The MIME Applications specification (deciding which application should be used to open a file).
- The Icon Naming specification proposed specification for a common way to name icons and their contexts in an icon theme.
- StatusNotifierItem - a proposal for cleaning up the notification area/panel.
- The XSETTINGS proposed specification for cross-toolkit configuration of user settings.
- The X Direct Save (XDS) protocol specifies how to save a file by dragging to a file manager window.
- The System tray protocol proposed specification for a "notification area" feature. Notes from the XDevConf meeting.
- The Thumbnail management specification proposed specification for storing file thumbnails.
- Proposal for an extension to the ICCCM selections mechanism allowing xclipboard-like tools to limit the amount of transferred data.
- The Cursor Conventions specification is a draft specification that seeks to standardize usage and names for mouse cursors.
- The Clipboard manager specification describes a way for a clipboard manager to store clipboard data when applications quit.
- ICC Profiles in X Specification
- The Open Collaboration Services specification describes an API to integrate community web sites with the desktop.
- The DesktopCouch specification describes record formats for integrating CouchDB in the desktop, already being used by some applications, like Evolution, Tomboy and Firefox
- Sound Theme Spec is a specification proposal for sound theme and sound naming.
- The Help Specification specifies a standard location and URI scheme of installed help documents.
- The OpenRaster specification (also at https://www.openraster.org/) describes an open exchange format for layered raster-based graphics.
- Secret Storage Spec is an API for securely storing secrets (such as passwords) using a D-Bus service.
- Desktop Bookmark Spec (A storage format for bookmarks used by file selectors and applications; it should supercede the Recent File specification)
If you feel any of these specs should be moved among the "standard", "de facto", and "proposed" categories, please let us know on xdg-list@lists.freedesktop.org.
Specifications currently in the planning/requirements-gathering stages:
- Shared File Metadata Spec (reading/writing/searching file based metadata)
- Shared configuration system (a desktop-neutral replacement for gconf and similar).
- Shared default keyboard shortcuts (every application running should use the same keys for Save, Quit, etc).
- Audio files meta data (apps that deal with audio files should use same abbreviations when dealing with the meta data)
- Bidirectional scripts (support for bidirectional scripts like Arabic and Hebrew in desktop software)
- Proposed Help Spec (The beginnings of a specification for how to find help files.)
- Shortcut to a database connection (The proposal of a specification for how to store information about remote database connections; currently used by Kexi: www.kexi-project.org)
- Desktop configuration Spec (A D-BUS protocol and schema specification for desktop configuration)
- Desktop Language Checking Spec (a spec for spell and grammar checking)
- Composite retained drawing protocol
- OpenICC Directory Proposal for placing and finding colour related files in a system
- The Application Package Specification is designed to provide a desktop neutral way to package an application. Installation is not required.
- DBPC - DBus for process control is layer above DBUS which define a standard set of objects, interfaces and methods for use in process control. It will provide a common standard for industrial communication, especially between HMI, SCADA and field electronic equipement.
Retracted or obsolete specifications:
- The Desktop Color Scheme specification is a draft specification that defines names for colors to be used for rendering user interface elements. It also provides an algorithm for generating a matching set of colors from a single base color (The colorscheme spec has been pulled on request of its authors).
- The GHNS and DXS specs (dead link as of May 2018) describe a collaborative data exchange platform based on the HTTP protocol and web service interaction.
- The Recent File specification proposed specification for storing lists of recently used files (Superseded by desktop bookmarks)).