summaryrefslogtreecommitdiffstats
path: root/kio/DESKTOP_ENTRY_STANDARD
diff options
context:
space:
mode:
Diffstat (limited to 'kio/DESKTOP_ENTRY_STANDARD')
-rw-r--r--kio/DESKTOP_ENTRY_STANDARD373
1 files changed, 0 insertions, 373 deletions
diff --git a/kio/DESKTOP_ENTRY_STANDARD b/kio/DESKTOP_ENTRY_STANDARD
deleted file mode 100644
index e19cc24c8..000000000
--- a/kio/DESKTOP_ENTRY_STANDARD
+++ /dev/null
@@ -1,373 +0,0 @@
- ----------------------------------------------------------------------------------------------------------------------------
-
- Desktop Entry Standard
-
- Preston Brown
-
- <pbrown@kde.org>
-
- Jonathan Blandford
-
- <jrb@redhat.com>
-
- Owen Taylor
-
- <otaylor@gtk.org>
-
- Version 0.9.4
-
- ----------------------------------------------------------------------------------------------------------------------------
-
- Table of Contents
-
- Introduction
-
- Basic format of the file
-
- Possible value types
-
- Recognized desktop entry keys
-
- Character set encoding of the file
-
- List of valid Exec parameter variables
-
- Detailed discussion of supporting MIME types
-
- Extending the format
-
- A. Example Desktop Entry File
-
- B. Currently reserved for use within KDE
-
- C. Deprecated Items
-
- D. The Legacy-Mixed encoding (Deprecated)
-
-Introduction
-
- Both the KDE and GNOME desktop environments have adopted a similar format for "desktop entries," or configuration files
- describing how a particular program is to be launched, how it appears in menus, etc. It is to the larger community's benefit
- that a unified standard be agreed upon by all parties such that interoperation between the two environments, and indeed any
- additional environments that implement the specification, becomes simpler.
-
-Basic format of the file
-
- These desktop entry files should have the extension ".desktop". Determining file type on basis of extension makes determining
- the file type very easy and quick. When no file extension is present, the desktop system should fall back to recognition via
- "magic detection." Desktop entries which describe how a directory is to be formatted/displayed should be simply called
- ".directory".
-
- The basic format of the desktop entry file requires that there be a "group" header named "[Desktop Entry]". This "group" entry
- denotes that all {key,value} pairs following it belong in the Desktop Entry group. There may be other groups present in the file
- (see MIME types discussion below), but this is the most important group which explicitly needs to be supported. This group
- should also be used as the "magic key" for automatic mime type detection. There should be nothing proceeding this group in the
- desktop entry file but possibly one or more comments (see below).
-
- Group headers may not contain the characters '[' and ']' as those delimit the header.
-
- Lines beginning with a "#" and blank lines are considered comments and will be ignored, however they should be preserved across
- reads / writes of the desktop entry file.
-
- Compliant implementations MUST not remove any fields from the file, even if they don't support them. Such fields must be
- maintained in a list somewhere, and if the file is "rewritten," they will be included. This ensures that any desktop-specific
- extensions will be preserved even if another system accesses and changes the file.
-
- Entries in the file are {key,value} pairs in the format:
-
- Name=Value
-
- Space before and after the equals sign should be ignored; the "=" sign is the actual delimiter.
-
- The escape sequences \s, \n, \t, \r, and \\ are supported, meaning ASCII space, newline, tab, carriage return, and backslash,
- respectively.
-
-Possible value types
-
- The value types recognized are string, localestring, regexp, boolean (encoded as the string true/false), and numeric.
-
- The difference between string and localestring is that the value for a string key must contain only ASCII characters and while
- the value of a localestring key may contain UTF-8 characters. (See section 5.)
-
- Some keys can have multiple values; these should be separated by a semicolon. Those keys which have several values should have a
- semicolon as the trailing character. For lists of strings, semicolons are simply not allowed in the strings, there is no escape
- mechanism.
-
-Recognized desktop entry keys
-
- Keys with type localestring may be postfixed by [LOCALE], where LOCALE is the locale type of the entry. LOCALE must be of the
- form lang[_COUNTRY][ ENCODING][ MODIFIER], where _COUNTRY, .ENCODING, and @MODIFIER may be omitted. If a postfixed key occurs,
- the same key must be also present without the postfix.
-
- When reading in the desktop entry file, the value of the key is selected by matching the current POSIX locale for the
- LC_MESSAGES category against the locale postfixes of all occurrences of the key, with the .ENCODING part stripped. The .ENCODING
- field is used only when the Encoding key for the desktop entry file is Legacy-Mixed, (see Appendix D.)
-
- The matching of is done as follows. If LC_MESSAGES is of the form LANG_COUNTRY.ENCODING@MODIFIER, then it will match a key of
- the form LANG_COUNTRY@MODIFIER. If such a key does not exist, it will attempt to match LANG_COUNTRY followed by LANG@MODIFIER.
- Then, a match against LANG by itself will be attempted. Finally, if no matching key is found the required key without a locale
- specified is used. The encoding from the LC_MESSAGES value is ignored when matching.
-
- If LC_MESSAGES does not have a MODIFIER field, then no key with a modifier will be matched. Similarly, if LC_MESSAGES does not
- have a COUNTRY field, then no key with a country specified will be matched. If LC_MESSAGES just has a LANG field, then it will
- do a straight match to a key with a similar value. The following table lists possible matches of various LC_MESSAGES in the
- order in which they are matched. Note that the ENCODING field isn't shown.
-
- Table 1. Locale Matching
-
- +-------------------------------------------------------------------------------------------------+
- | LC_MESSAGES Value | Possible Keys in Order of Matching |
- |-----------------------+-------------------------------------------------------------------------|
- | LANG_COUNTRY@MODIFIER | LANG_COUNTRY@MODIFIER, LANG_COUNTRY, LANG@MODIFIER, LANG, Default Value |
- |-----------------------+-------------------------------------------------------------------------|
- | LANG_COUNTRY | LANG_COUNTRY, LANG, Default Value |
- |-----------------------+-------------------------------------------------------------------------|
- | LANG@MODIFIER | LANG@MODIFIER, LANG, Default Value |
- |-----------------------+-------------------------------------------------------------------------|
- | LANG | LANG, Default Value |
- +-------------------------------------------------------------------------------------------------+
-
- For example, if the current value of the LC_MESSAGES category is sr_YU Latn and the desktop file includes:
-
- Name=Foo
- Name[sr_YU]=...
- Name[sr Latn]=
- Name[sr]=...
-
- then the value of the Name keyed by "sr_YU" is used.
-
- Case is significant. The keys "Name" and "NAME" are not equivalent. The same holds for group names. Key values are case
- sensitive as well.
-
- Keys are either OPTIONAL or REQUIRED. If a key is optional it may or may not be present in the file. However, if it isn't, the
- implementation of the standard should not blow up, it must provide some sane defaults. Additionally, keys either MUST or MAY be
- supported by a particular implementation.
-
- Some keys only make sense in the context when another particular key is also present.
-
- Some example keys: Name[C], Comment[it].
-
- Table 2. Standard Keys
-
- +------------------------------------------------------------------------------------------------------------------------------+
- | Key | Description | Value Type | REQ? | MUST? | Type |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Type | There are 4 types of desktop entries: Application(1), Link(2), | string | YES | YES | |
- | | FSDevice(3) and Directory(4). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | Version of Desktop Entry Specification (While the version | | | | |
- | | field is not required to be present, it should be in all newer | | | | |
- | Version | implementations of the Desktop Entry specification. If the | numeric | NO | YES | 1-4 |
- | | version number is not present, a "pre-standard" desktop entry | | | | |
- | | file is to be assumed). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Encoding | Encoding of the whole desktop entry file (UTF-8 or | string | YES | YES | 1-4 |
- | | LegacyMixed). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Name | Specific name of the application, for example "Mozilla". | localestring | YES | YES | 1-4 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | GenericName | Generic name of the application, for example "Web Browser". | localestring | NO | YES | 1-4 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | NoDisplay means "this application exists, but don't display it | | | | |
- | | in the menus". This can be useful to e.g. associate this | | | | |
- | NoDisplay | application with mimetypes, so that it gets launched from a | boolean | NO | NO | 1-4 |
- | | file manager (or other apps), without having a menu entry for | | | | |
- | | it (there are tons of good reasons for this, including e.g. | | | | |
- | | the netscape -remote, or kfmclient openURL kind of stuff). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Comment | Tooltip for the entry, for example "View sites on the | localestring | NO | YES | 1-4 |
- | | Internet"; should not be redundant with Name or GenericName. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | Icon to display in file manager, menus, etc. If the name is an | | | | |
- | | absolute path, the given file will be used. If the name is not | | | | |
- | Icon | an absolute path, an implementation-dependent search algorithm | string | NO | YES | 1-4 |
- | | will be used to locate the icon. Icons may be localized with | | | | |
- | | the Icon[xx]= syntax. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | Hidden should have been called Deleted. It means the user | | | | |
- | | deleted (at his level) something that was present (at an upper | | | | |
- | | level, e.g. in the system dirs). It's strictly equivalent to | | | | |
- | Hidden | the .desktop file not existing at all, as far as that user is | boolean | NO | NO | 1-4 |
- | | concerned. This can also be used to "uninstall" existing files | | | | |
- | | (e.g. due to a renaming) - by letting "make install" install a | | | | |
- | | file with Hidden=true in it. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | A list of regular expressions to match against for a file | | | | |
- | FilePattern | manager to determine if this entry's icon should be displayed. | regexp(s) | NO | NO | 1 |
- | | Usually simply the name of the main executable and friends. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | Filename of a binary on disk used to determine if the program | | | | |
- | TryExec | is actually installed. If not, entry may not show in menus, | string | NO | NO | 1 |
- | | etc. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Exec | Program to execute, possibly with arguments. | string | NO | YES | 1 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Path | If entry is type Application, the working directory to run the | string | NO | YES | 1 |
- | | program in. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Terminal | Whether the program runs in a terminal window | boolean | NO | YES | 1 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | SwallowTitle | If entry is swallowed onto the panel, this should be the title | localestring | NO | NO | 1 |
- | | of window | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | SwallowExec | Program to exec if swallowed app is clicked. | string | NO | NO | 1 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Actions | Additional actions possible, see MIME type discussion in the | string(s) | NO | YES | 1 |
- | | section called "Detailed discussion of supporting MIME types". | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | MimeType | The MIME type(s) supported by this entry. | regexp(s) | NO | NO | 1 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | SortOrder | This may specify the order in which to display files. | string(s) | NO | NO | 4 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Dev | The device to mount. | string | NO | NO | 3 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | FSType | The type of filesystem to try to mount. | string | NO | NO | 3 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | MountPoint | The mount point of the device in question. | string | NO | NO | 3 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | ReadOnly | Specifies whether or not the device is read-only. | boolean | NO | NO | 3 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | Icon to display when device is not mounted Mounted devices | | | | |
- | UnmountIcon | display icon from Icon key. UnmountIcons may be localized with | string | NO | NO | 3 |
- | | the UnmountIcon[xx]= syntax. | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | URL | If entry is Link type, the URL to access. | string | NO | YES | 2 |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | Categories | Categories in which the entry should be shown in a menu (for | string(s) | NO | NO | 1 |
- | | possible values see the xdg-menu specification). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | A list of strings identifying the environments that should | | | | |
- | OnlyShowIn / NotShowIn | display/not display a given .desktop item. Only one of these | string(s) | NO | NO | 1-4 |
- | | keys, either OnlyShowIn or NotShowIn, may appear in a Group. | | | | |
- | | (for possible values see the xdg-menu specification) | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | If true, it is KNOWN that the application will send a "remove" | | | | |
- | StartupNotify | message when started with the DESKTOP_LAUNCH_ID environment | boolean | NO | NO | 1 |
- | | variable set (see the startup notification spec for more | | | | |
- | | details). | | | | |
- |------------------------+----------------------------------------------------------------+--------------+------+-------+------|
- | | If true, it is KNOWN that the application will map at least | | | | |
- | StartupWMClass | one window with the given string as its WM class or WM name | string | NO | NO | 1 |
- | | hint (see the startup notification spec for more details). | | | | |
- +------------------------------------------------------------------------------------------------------------------------------+
-
-Character set encoding of the file
-
- Desktop entry files are encoded as lines of 8-bit characters separated by LF characters.
-
- o Key names must contain only the characters 'A-Za-z0-9-'
-
- o Group names may contain all ASCII characters except for control characters and '[' and ']'.
-
- o Values of type string may contain all ASCII characters except for control characters.
-
- o Values of type boolean must either be the string 'true' or 'false'.
-
- o Numeric values must be a valid floating point number as recognized by the %f specifier for scanf.
-
- Comment lines are uninterpreted and may contain any character (except for LF). However, using UTF-8 for comment lines that
- contain characters not in ASCII is encouraged.
-
- The encoding for values of type localestring is determined by the Encoding field.
-
-List of valid Exec parameter variables
-
- Each "Exec" field may take a number of arguments which will be expanded by the file manager or program launcher and passed to
- the program if necessary.
-
- Literal % characters must be escaped as %%, and adding new format characters is not allowed. It's a fatal error to have an Exec
- field with a format character not given in the spec (exception to this are the deprecated format characters which can be
- ignored, that is expanded to no parameters, by the implementation). Again for emphasis: nonstandard extensions are not allowed
- here - you must add an X-Foo-Exec field if you have nonstandard Exec lines.
-
- The escaping of the exec parameters is done in the way the mailcap specification describes. Take a look at RFC 1524 for more
- information.
-
- Recognized fields are as follows:
-
- +------------------------------------------------------------------------------------------------------------------------------+
- | | a single file name, even if multiple files are selected. The system reading the Desktop Entry should recognize that the |
- | | program in question cannot handle multiple file arguments, and it should should probably spawn and execute multiple |
- | %f | copies of a program for each selected file if the program is not able to handle additional file arguments. If files are |
- | | not on the local file system (i.e. HTTP or FTP locations), the files will be copied to the local file system and %f |
- | | will be expanded to point at the temporary file. Used for programs that do not understand URL syntax. |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %F | a list of files. Use for apps that can open several local files at once. |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %u | a single URL. |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %U | a list of URLs. |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %d | directory containing the file that would be passed in a %f field |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %D | list of directories containing the files that would be passed in to a %F field |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %n | a single filename (without path) |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %N | a list of filenames (without path) |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %i | the Icon field of the desktop entry expanded as two parameters, first "--icon" and then the contents of the Icon field |
- | | (should not expand as any prameters if the Icon field is empty or missing) |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %c | the translated Name field associated with the desktop entry |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %k | the location of the desktop file as either a uri (if for example gotten from the vfolder system) or a local filename or |
- | | empty if no location is known |
- |----+-------------------------------------------------------------------------------------------------------------------------|
- | %v | the name of the Device entry in the desktop file |
- +------------------------------------------------------------------------------------------------------------------------------+
-
-Detailed discussion of supporting MIME types
-
- It is in every desktop's best interest to have thorough support for mime types. The old /etc/mailcap and /etc/mime.types files
- are rather limited in scope and frankly, are outdated. Various desktop systems have come up with different ways of extending
- this original system, but none are compatible with each other. The Desktop Entry Standard hopes to be able to provide the
- beginnings of a solution to this problem.
-
- At a very basic level, the "Exec" key provides the default action to take when the program described by a desktop entry is used
- to open a document or data file. Usually this consists of some action along the lines of "kedit %f" or "ee %f". This is a good
- start, but it isn't as flexible as it can be.
-
- Let us first establish that a program which supports a MIME type or multiple mime types may be able to support multiple actions
- on those MIME types as well. The desktop entry may want to define additional actions in addition to the default. The toplevel
- "Exec" key describes the default action; Let us define this action to also be known as the "Open" action. Additional actions
- which might be possible include View, Edit, Play, etc. A further revision of this document will probably specify several
- "standard" actions in addition to the default "Open" action, but in all cases, the number of actions is arbitrary.
-
- Let us use a sound player as a simple example. Call it sp. The default Exec (Open) action for this program would likely look
- something like:
-
- Exec=sp %u
-
- However, imagine the sound player also supports editing of sound files in a graphical manner. We might wish to define an
- additional action which could accomodate this. Adding the action would be performed like this:
-
- Actions=Edit;
-
- [Desktop Action Edit]
- Exec=sp -edit %u
-
- As you can see, defining the action "edit" will enable an additional group of the name [Desktop Action actionname] to be read.
- This group can contain an additional Exec line, as well as possibly other information like a new Name, Comment, Icon, and Path.
- Thus right-clicking on a .wav file will show both the default "Open" action and this "Edit" action to both be displayed as
- choices in the context-menu. A left click (double or single, whichever the file manager implements) would cause the default
- action to take place. These are implementation-specific details which are up to the implementer, and are not enforced by this
- standard.
-
- If no DefaultApp is specified for a particular MIME type, any one of the programs registered which claim to be able to handle
- the MIME type may become the default handler. This behaviour is undefined and implementation-specific. KDE doesn't use a
- DefaultApp anymore, but assigns a Preference number to each program, so that the highest number is the one chosen for handling
- the MIME type.
-
-Extending the format
-
- If the standard is to be amended with a new {key,value} pair which should be applicable to all supporting parties, a group
- discussion will take place. This is the preferred method for introducing changes. If one particular party wishes to add a field
- for personal use, they should prefix the key with the string "X-PRODUCT", i.e. "X-NewDesktop-Foo", following the precedent set
- by other IETF and RFC standards.
-
- Alternatively, fields can be placed in their own group, where they may then have arbitrary key names. If this is the case, the
- group should follow the scheme outlined above, i.e. [X-PRODUCT GROUPNAME] or something similar. These steps will avoid namespace
- clashes between different yet similar environments.
-
- ----------------------------------------------------------------------------------------------------------------------------