5.9 Conformance
5.9.1 A conforming consumer #
- Reads declarations from
/usr/share/apps/and no subdirectory of it, from files named<id>.tomlwith the id in the form of §5.3, and passes over any other file (§5.4). - Requires nothing of a provider beyond the file's presence (§5.4).
- Reads a declaration by the rules of §5.3: takes the keys it knows, ignores the rest, treats an unusable declaration as none and goes on, and sets an odd one right as §5.3 says.
- Checks an id's form before making it a path (§5.4).
- Notices a change to the catalogue, or documents how stale a remembered read may be (§5.4).
- Matches a program to a declaration by file, never by name, and through the process for a running one (§5.5).
- Yields the declaration's
iconas the identifier for the program under PGSS Icons §4.5, and goes on to §4.5's other sources when the chain does not provide it (§5.5). - Starts an application by executing its program with its arguments as given, without a shell, splitting, quoting, expansion or path lookup, and with a file's path last (§5.6).
- Takes the program and arguments from the catalogue, never from a request that names an id (§5.6).
- When it picks among the candidates, picks the default where the type has one, and offers it first, or shows which it is, when it offers them (§5.6).
- Finds the default from the person's choices and then the machine's,
each for the exact type and then for its top-level type and
*, and passes over a choice that is malformed or not usable without treating it as an error (§5.7). - Reads the person's choices as the person the file is opened for, and
never through a
CurrentUser\of its own on their behalf (§5.7). - Opens a file with nothing that is not a candidate for it, whatever a choice says, and reads a default from nowhere but §5.7's keys (§5.6, §5.7).
- When it offers to set choices, finds out whether it may by asking the registry, never by the person's groups (§5.7).
- Infers nothing about a program from a match beyond what the declaration says (§5.5).
5.9.2 A conforming provider #
- Installs a declaration as
/usr/share/apps/<id>.toml, with the id in the form of §5.3 and within a domain it owns. - Writes a TOML 1.0 document with a one-line
titleand an absoluteprogram, and relies on no key outside the table of §5.3. - Does not rely on any order of listing, on any consumer's reading a
key it does not know, or on any placeholder in
arguments(§5.3, §5.6). - Does not declare one program twice (§5.5).
5.9.3 A conforming system #
- Has the catalogue at
/usr/share/apps/, readable by anyone who can log on to a desktop (§5.4). - Lets anyone who can log on to a desktop read
Machine\Generic\Applications\Defaultswhere it is present, and SHOULD let only administrators write it (§5.7).
5.9.4 What conformance does not require #
Conformance does not require a consumer to list applications in any order, to show a description, to let a person add arguments, to cache anything, to determine any file's type, or to offer to set choices. It does not require a provider to declare every program it installs: a program with no declaration is a program, and is still drawn and run as one.