summaryrefslogtreecommitdiff
path: root/Specifications.mdwn
blob: 499562559b9859cd37e90e6d5ae5fccc52b074e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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|https:///gitlab.freedesktop.org/xdg]], or discuss it on the [[xdg@ mailing list|https://lists.freedesktop.org/mailman/listinfo/xdg]].

**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|Specifications/autostart-spec]]: 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)|Specifications/basedir-spec]]: how desktops should locate files, such as config files or application data files.
*  [[Desktop entries (.desktop)|Specifications/desktop-entry-spec]]: 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)|Specifications/menu-spec]]: how menus are built up from desktop entries. 
*  [[File manager D-Bus interface|Specifications/file-manager-interface]]: a common way to interact with the desktop's file manager.
*  [[File URIs|Specifications/file-uri-spec]]: how to create and interpret interpret `file://` URIs, as used for drag and drop and other desktop uses.
*  [[Free media player specifications|Specifications/free-media-player-specs]]: standard ways to store and read metadata across players and media formats. 
*  [[Icon themes|Specifications/icon-theme-spec]]: a common way to store icon themes.
*  [[Media Player Remote Interfacing Specification (MPRIS)|Specifications/mpris-interfacing-specification]]: A D-Bus interface to control media players
*  [[Shared MIME database (shared-mime-info)|Specifications/shared-mime-info-spec]]: contains common MIME types, descriptions, and rules for determining the types of files. 
*  [[Startup notifications|Specifications/startup-notification-spec]]: a mechanism to allow desktop environments to track application startup, to provide user feedback and other features. 
*  [[Trash|Specifications/trash-spec]]: a common way in which all "Trash can" implementations should store, list, and undelete trashed files.
*  [[XML Bookmark Exchange Language (XBEL)|http://pyxml.sourceforge.net/topics/xbel/]]: an internet "bookmarks" interchange format. 

## X11-specific specifications that are in wide use:

*  [[DnD|http://www.newplanetsoftware.com/xdnd/]]: a drag-and-drop specification shared between [[GTK+|GTK+]] and [[Qt|Qt]]. A [[local copy|Specifications/XDND]] of the spec resides on the wiki, along with some [[proposed revisions|Specifications/XDNDRevision]].
*  [[UTF8_STRING|http://www.pps.jussieu.fr/~jch/software/UTF8_STRING]]: selection format for interchange of UTF-8 data. 
*  [[Window manager specification|Specifications/wm-spec]]: standardizes extensions to the ICCCM between X desktops; we are also working to merge these extensions into the ICCCM itself as appropriate. 
*  [[XEmbed|Specifications/xembed-spec]]: inter-application embedding of controls. 
*  [[X clipboard explanation|Specifications/clipboards-spec]]: 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|Specifications/mime-apps-spec]] (deciding which application should be used to open a file). 
*  The [[Icon Naming specification|Specifications/icon-naming-spec]] proposed specification for a common way to name icons and their contexts in an icon theme.
*  [[StatusNotifierItem|StatusNotifierItem]] - a proposal for cleaning up the notification area/panel. 
*  The [[XSETTINGS|Specifications/xsettings-spec]] proposed specification for cross-toolkit configuration of user settings. 
*  The [[X Direct Save|Specifications/direct-save]] (XDS) protocol specifies how to save a file by dragging to a file manager window. 
*  The [[System tray protocol|Specifications/systemtray-spec]] proposed specification for a "notification area" feature.   [[Notes from the XDevConf meeting|Specifications/SystrayAndAppletsMeeting]]. 
*  The [[Thumbnail|Specifications/thumbnails]] management specification proposed specification for storing file thumbnails.
*  Proposal for an [[extension to the ICCCM selections mechanism|Specifications/clipboards-extension-spec]] allowing xclipboard-like tools to limit the amount of transferred data. 
*  The [[Cursor Conventions specification|Specifications/cursor-spec]] is a draft specification that seeks to standardize usage and names for mouse cursors. 
*  The [[Clipboard manager specification|Specifications/clipboard-manager-spec]] describes a way for a clipboard manager to store clipboard data when applications quit. 
*  [[ICC Profiles in X Specification|Specifications/icc_profiles_in_x_spec]] 
*  The [[Open Collaboration Services|Specifications/open-collaboration-services]] specification describes an API to integrate community web sites with the desktop. 
*  The [[DesktopCouch|Specifications/desktopcouch]] specification describes record formats for integrating [[CouchDB|http://couchdb.apache.org]] in the desktop, already being used by some applications, like Evolution, Tomboy and Firefox 
*  [[Sound Theme Spec|Specifications/sound-theme-spec]] is a specification proposal for sound theme and sound naming. 
*  The [[Help Specification|Specifications/help-spec]] specifies a standard location and URI scheme of installed help documents. 
*  The [[OpenRaster specification|Specifications/OpenRaster]] (also at https://www.openraster.org/) describes an open exchange format for layered raster-based graphics.
*  [[Secret Storage Spec|Specifications/secret-storage-spec]] is an API for securely storing secrets (such as passwords) using a D-Bus service.
*  [[Desktop Bookmark Spec|Specifications/desktop-bookmark-spec]] (A storage format for bookmarks used by file selectors and applications; it should supercede the [[Recent File|Specifications/recent-file-spec]] 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|mailto:xdg-list@lists.freedesktop.org]]. 


### Specifications currently in the planning/requirements-gathering stages:

*  [[Shared File Metadata Spec|Specifications/shared-filemetadata-spec]] (reading/writing/searching file based metadata) 
*  [[Shared configuration system|Specifications/config-spec]] (a desktop-neutral replacement for gconf and similar). 
*  [[Shared default keyboard shortcuts|Specifications/default-keys-spec]] (every application running should use the same keys for _Save_, _Quit_, etc). 
*  [[Audio files meta data|Specifications/audio-metadata-spec]] (apps that deal with audio files should use same abbreviations when dealing with the meta data) 
*  [[Bidirectional scripts|Specifications/bidi-spec]] (support for bidirectional scripts like Arabic and Hebrew in desktop software) 
*  [[Proposed Help Spec|Specifications/help-system]] (The beginnings of a specification for how to find help files.) 
*  [[Shortcut to a database connection|Specifications/db-shortcut-spec]] (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|Specifications/desktop-config-spec]] (A D-BUS protocol and schema specification for desktop configuration) 
*  [[Desktop Language Checking Spec|Specifications/desktop-language-checking-spec]] (a spec for spell and grammar checking) 
*  [[Composite retained drawing protocol|Specifications/Composite-retained-drawing]] 
*  [[OpenICC Directory Proposal|http://www.oyranos.com/wiki/index.php?title=OpenIccDirectoryProposal]] for placing and finding colour related files in a system 
*  The [[Application Package Specification|ApplicationPackageSpec]] is designed to provide a desktop neutral way to package an application. Installation is not required. 
*  [[DBPC - DBus for process control|Specifications/DBPC]] 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|Specifications/colorscheme-spec]] 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|http://ghns.freedesktop.org/spec/]] (dead link as of May 2018) describe a collaborative data exchange platform based on the HTTP protocol and web service interaction.
*  The [[Recent File|Specifications/recent-file-spec]] specification proposed specification for storing lists of recently used files (Superseded by [[desktop bookmarks|Specifications/desktop-bookmark-spec]])).