]> git.donarmstrong.com Git - debian-ctte.git/blob - 741573_menu_systems/keithp_draft.txt
741573: Change keithp_draft to reduce the .desktop file requirement for packages
[debian-ctte.git] / 741573_menu_systems / keithp_draft.txt
1  Whereas:
2
3    1. The Debian Policy Manual states (ยง9.6) that 'The Debian menu
4       package provides a standard interface between packages providing
5       applications and "menu programs"'. It further states that 'All
6       packages that provide applications that need not be passed any
7       special command line arguments for normal operations should
8       register a menu entry for those applications'.
9
10    2. All details about menu system requirement are delegated to the
11       Debian Menu sub-policy and Debian Menu System manuals (the
12       "Debian menu system").
13
14    3. An external specification, the Freedesktop Desktop Entry
15       Specification (the ".desktop spec"), with native support in many
16       X desktop environments, has appeared since the Debian Menu
17       system was developed. The .desktop spec offers a fairly strict
18       super-set of Debian Menu system functionality.
19
20    4. The .desktop specification has significant technical benefits
21       for users over the Debian menu system. The .desktop
22       specification works together with the freedesktop.org mime type
23       and icon specifications to provide operations expected by
24       desktop users from other environments, such as Mac OS X or
25       Windows. As such, applications must provide a .desktop file to
26       operate well in most desktop environments.
27        
28    5. The Debian Technical Committee has been asked to resolve a
29       dispute between maintainers of Debian Policy over a change that
30
31       i. incorporates the description of the FreeDesktop menu system
32          and its use in Debian for listing program in desktop menus
33          and associating them with media types
34
35      ii. softens the wording on the Debian Menu system to reflect that
36          in Jessie it will be neither displayed nor installed by
37          default on standard Debian installations.
38
39  Therefore:   
40
41    1. The Technical Committee resolves that packages which provide
42       applications customarily designed for use within a desktop
43       environment should provide a .desktop file conforming to the
44       Freedesktop Desktop Entry Specification.
45
46    2. Packages may provide menu files at the pleasure of the
47       maintainer, but packages providing a .desktop file shall not
48       also provide a menu file.
49
50    2. We further resolve that "menu programs" should not depend on the
51       Debian Menu System and should instead rely on .desktop file
52       contents for constructing a list of applications to present to
53       the user.
54
55    3. We recommend that the maintainers of the 'menu' package update
56       that package to reflect this increased focus on .desktop files
57       by modifying the 'menu' package to use .desktop files for the
58       source of menu information in addition to menu files.
59
60    4. Discussion of the precise relationship between menu file
61       section/hints values and .desktop file Categories values may be
62       defined within the Debian Menu sub-policy and Debian Menu
63       System.
64
65 The following information is an informative addition to help describe
66 the motivation for this policy change.
67
68    A. The .desktop spec provides more functionality:
69
70         a) Associating mime types with applications
71         b) Support for more icon image formats
72         c) Translation of menu items
73         d) D-Bus application activation
74         e) StartupNotify support
75
76    B. Support for the .desktop spec is widely provided as part of
77       upstream packaging for desktop applications.
78
79    C. A .desktop file describe in the .desktop spec captures
80       essentially the same information as that present in the Debian
81       menu system:
82
83       menu      .desktop                Notes
84       ?package  TryExec                 [0]
85       title     Name / GenericName      [1]
86       needs     Terminal                [2]
87       section   Catagories              [3]
88       command   Exec
89       icon      Icon                    [4]
90       hints     Catagories              [5]
91
92       Notes
93
94       [0] ?package uses Debian package names, TryExec offers a
95           system-independent mechanism using a special program or
96           mode of the existing program to query whether the
97           dependencies to run the application are satisfied
98
99       [1] GenericName can offer a brief functional description of a
100           program, much like the Debian alternatives for things like
101           www-browser
102
103       [2] needs adds 'vc' and 'wm' classifications, a .desktop file
104           does not anticipate running applications on virtual consoles
105           as a separate notion from within an X. I'll note that the
106           only package on my system with needs="vc" is psmisc for the
107           pstree application, which runs just fine in any X terminal
108           emulator. Also .desktop files do not expect people to switch
109           window managers during a session.
110
111       [3] The menu file requires that the package define the entire
112           menu path to the entry, while the .desktop file defines only
113           the Catagories within the menu, which allows the user
114           environment to construct its own presentation method
115
116       [4] Menu files allow only for xpm format icons while
117           .desktop files support a wide variety of image formats,
118           including png jpg and svg. Menu files also limit the size of
119           icons to 32x32, which can be painfully small on higher
120           resolution monitors, or less detailed when scaled to large
121           sizes.
122
123       [5] Because the .desktop specification does not enforce a
124           particular layout of menu entries, applications are
125           encouraged to specify as many 'categories' as they like and
126           have the menu system pick where to include them. This can
127           easily include policies like that described for the hints
128           field in the Debian menu.
129
130     D. .desktop files also provide additional fields not present in
131        the Debian menu system:
132
133        Type             Application, Link or Directory. The latter two
134                         provide a common format for storing references
135                         to non-application objects within the desktop
136                         environment.
137
138        NoDisplay        An artifact of the ability to handle
139                         content-based application launching; a
140                         NoDisplay entry isn't shown in the menu
141                         system, but is available for handling Mime types.
142
143        Comment          Offered as a tooltip to the user, providing
144                         additional details about the application.
145
146        Hidden           An artifact of the implementation allowing
147                         users to selectively disable system menu entries
148
149        OnlyShowIn/      Allows desktop-system specific applications to not
150        NotShowIn        appear in other desktop environments, such as
151                         desktop system preferences systems.
152
153        DBusActivatable  Whether the application supports standard
154                         D-Bus messages to control the application, including
155                         the ability to direct applications to open
156                         additional files or perform other operations
157
158        Path             The starting directory for the application. I
159                         haven't found any .desktop file using this
160                         feature, but it is replicates functionality
161                         present in Mac OSX and Windows.
162
163        Actions          Similar to a mechanism provided on Windows
164                         where you can list many different operations
165                         available from a single application, such as
166                         "open", "print", "play", "frobnicate" and
167                         Windows automatically adds these to the
168                         right-click menu from within explorer.
169
170        MimeType         The mime types supported by the
171                         application. This allows the wider system to
172                         find a application suitable for
173                         viewing/modifying specific content, such as a
174                         file browser.
175        
176        KeyWords         Provides tags to allow for some degree of
177                         search-ability/categorization of menu
178                         entries. I'd be able to explain this in more
179                         detail if I could find any examples of it in use.
180
181        StartupNotify/   Announces that the application supports the Startup
182        StartupWMClass   Notification Protocol Specification, which
183                         allows the desktop environment to detect when
184                         the application has successfully launched so
185                         that it can disable the waiting cursor.
186
187        URL              Used in 'Link' .desktop files to reference an object.
188
189     E. .desktop files cede significant authority over menu
190        organization to the user agent presenting the overall
191        application menu. This is already a reality as many desktop
192        environments show *none* of the menu file data at all; having
193        applications which currently ship a menu file change to
194        shipping a .desktop file will bring them into uniformity with
195        other pieces of the desktop environment by incorporating them
196        into the existing desktop menu system
197
198     F. The .desktop specification and other Freedesktop.org
199        specifications relating to mime types and icons are all interrelated
200        and work together to provide a system capable of implementing
201        common desktop operations. Not providing a .desktop file
202        significantly reduces the functionality of the overall
203        environment, and so any desktop application must provide the
204        full suite. Also delivering a Debian menu file would end up
205        duplicating information in potentially conflicting ways.
206