This file is indexed.

/usr/share/doc/menu/html/ch5.html is in menu 2.1.46.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

<html>

<head>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

<title>Debian Menu System - What packages with menu managers should do</title>

<link href="index.html" rel="start">
<link href="ch4.html" rel="prev">
<link href="ch6.html" rel="next">
<link href="index.html#contents" rel="contents">
<link href="index.html#copyright" rel="copyright">
<link href="ch1.html" rel="chapter" title="1 Introduction">
<link href="ch2.html" rel="chapter" title="2 Menu from the viewpoint of a user">
<link href="ch3.html" rel="chapter" title="3 The menu file">
<link href="ch4.html" rel="chapter" title="4 What packages with applications should do">
<link href="ch5.html" rel="chapter" title="5 What packages with menu managers should do">
<link href="ch6.html" rel="chapter" title="6 How a user can override the menus">
<link href="ch7.html" rel="chapter" title="7 The internals of the menu package">
<link href="ch8.html" rel="chapter" title="8 Variables and functions in the install-menu scripts">
<link href="ch2.html#s2.1" rel="section" title="2.1 How/when do the window manager startup files get created?">
<link href="ch2.html#s2.2" rel="section" title="2.2 Tuning of the generated window manager startup files">
<link href="ch2.html#s2.3" rel="section" title="2.3 Optimization of menu tree: hints">
<link href="ch3.html#s3.1" rel="section" title="3.1 Location">
<link href="ch3.html#s3.2" rel="section" title="3.2 Syntax">
<link href="ch3.html#s3.3" rel="section" title="3.3 The title field">
<link href="ch3.html#s3.4" rel="section" title="3.4 The needs field">
<link href="ch3.html#s3.5" rel="section" title="3.5 The section field">
<link href="ch3.html#s3.6" rel="section" title="3.6 The command field">
<link href="ch3.html#s3.7" rel="section" title="3.7 The icon field">
<link href="ch3.html#s3.8" rel="section" title="3.8 The hints field">
<link href="ch3.html#s3.9" rel="section" title="3.9 Entries for menu sections.">
<link href="ch3.html#s3.10" rel="section" title="3.10 Fvwm's task and title bars">
<link href="ch4.html#s4.1" rel="section" title="4.1 Providing a menu file">
<link href="ch4.html#s4.2" rel="section" title="4.2 Adding a hook for dpkg in your packages">
<link href="ch6.html#s6.1" rel="section" title="6.1 Configuring the menus">
<link href="ch6.html#s6.2" rel="section" title="6.2 Specifying that a menu entry should not be displayed">
<link href="ch6.html#s6.3" rel="section" title="6.3 Including other files">
<link href="ch7.html#s7.1" rel="section" title="7.1 The update-menus program">
<link href="ch7.html#s7.2" rel="section" title="7.2 The install-menu program">
<link href="ch7.html#s7.3" rel="section" title="7.3 The install-menu config script definitions">
<link href="ch7.html#s7.4" rel="section" title="7.4 Hints, tree optimization">
<link href="ch8.html#s8.1" rel="section" title="8.1 String constants">
<link href="ch8.html#s8.2" rel="section" title="8.2 Variables">
<link href="ch8.html#s8.3" rel="section" title="8.3 Functions">
<link href="ch8.html#s8.2.1" rel="subsection" title="8.2.1 Special variables">
<link href="ch8.html#s8.2.2" rel="subsection" title="8.2.2 Preferred variables">
<link href="ch8.html#s8.2.3" rel="subsection" title="8.2.3 Suggested variables">

</head>

<body>

<p><a name="ch5"></a></p>
<hr>

<p>
[ <a href="ch4.html">previous</a> ]
[ <a href="index.html#contents">Contents</a> ]
[ <a href="ch1.html">1</a> ]
[ <a href="ch2.html">2</a> ]
[ <a href="ch3.html">3</a> ]
[ <a href="ch4.html">4</a> ]
[ 5 ]
[ <a href="ch6.html">6</a> ]
[ <a href="ch7.html">7</a> ]
[ <a href="ch8.html">8</a> ]
[ <a href="ch6.html">next</a> ]
</p>

<hr>

<h1>
Debian Menu System
<br>Chapter 5 - What packages with menu managers should do
</h1>

<hr>

<p>
Each package containing a <em>menu manager</em> (i.e., a program that can
display a menu) should provide a script or program in
<code>/etc/menu-methods/</code> that can read the menu files.  This script will
be executed by <code>update-menus</code>, which will feed the menu entries to
be installed to your script via standard input (stdin).
</p>

<p>
The scripts in <code>/etc/menu-methods/</code> should be configuration files,
so the user can tune the behaviour of the script, and they must always include
the <code>/etc/menu-methods/menu.h</code> configuration file at the beginning
with the command <samp>!include menu.h</samp> For the same reason, scripts in
<code>/etc/menu-methods/</code> are requested to use the following configurable
functions: <samp>title()</samp> for the title (in place of
<samp>$title</samp>), <samp>icon()</samp> for the icon (in place of
<samp>$icon</samp>), <samp>term()</samp> for running <samp>text</samp> command
under <samp>X11</samp>.  <samp>sections_translations()</samp> for the list of
translations of sections name available.  This later one is only defined if you
<samp>!include lang.h</samp>
</p>

<p>
Good examples for these scripts for nearly all Debian window managers are
included in the <samp>menu</samp> package in
<code>/usr/share/doc/menu/examples</code>.  Note that while working on your
script, you can use the tricks described in &quot;The internals of the menu
package&quot;, section &quot;The update-menus program&quot;, to run just your
script, instead of having update-menus run all scripts (can save quite a lot of
time).
</p>

<p>
This script should not be executable in the package.  Instead the
<samp>postinst</samp> should add the execute bit and then run
<code>update-menus</code> (if it is executable).
</p>

<p>
Similarly, the <code>postrm</code> script when called with option ``remove''
should remove the execute bit and run <code>update-menus</code> (if it is
executable).
</p>

<p>
Here is an example of such a <code>postrm</code> script using <code>sh</code>:
</p>

<pre>
       #!/bin/sh
       set -e
       inst=/etc/menu-methods/#PACKAGE#
       case &quot;$1&quot; in
          remove)
             if [ -f $inst ]; then
                     chmod a-x $inst
                     if [ -x /usr/bin/update-menus ]; then update-menus ; fi
             fi
          ;;
          purge)
              #remove the files that install-menu creates:
              rm -rf /var/lib/foo-wm/menu
          ;;
          upgrade);;
          *)
              echo &quot;postrm called with unknown argument \`$1'&quot; &gt;&amp;2
              exit 0
          ;;
       esac
</pre>

<p>
And here is a good example for a <code>postinst</code> script:
</p>

<pre>
       #!/bin/sh
       set -e
       inst=/etc/menu-methods/#PACKAGE#
       if [ -f $inst ]; then
           chmod a+x $inst
           if [ -x /usr/bin/update-menus ]; then
               update-menus
           fi
       fi
</pre>

<p>
If you are using <code>debhelper</code>, the program
<code>dh_installmenu</code> can help you do it.
</p>

<p>
Please, do not make your package <em>depend</em> on the menu package!  The
preferred way of telling dpkg that your wm can cooperate with menu is:
</p>

<pre>
        Suggests: menu
</pre>

<p>
Please only consider using &quot;depends&quot; if you feel providing reasonable
defaults for systems without <code>menu</code> will make life very difficult
for you.
</p>

<hr>

<p>
[ <a href="ch4.html">previous</a> ]
[ <a href="index.html#contents">Contents</a> ]
[ <a href="ch1.html">1</a> ]
[ <a href="ch2.html">2</a> ]
[ <a href="ch3.html">3</a> ]
[ <a href="ch4.html">4</a> ]
[ 5 ]
[ <a href="ch6.html">6</a> ]
[ <a href="ch7.html">7</a> ]
[ <a href="ch8.html">8</a> ]
[ <a href="ch6.html">next</a> ]
</p>

<hr>

<p>
Debian Menu System
</p>

<address>
version 1.4, 10 November 2011<br>
<br>
Joost Witteveen <code><a href="mailto:joostje@debian.org">joostje@debian.org</a></code><br>
Joey Hess <code><a href="mailto:joeyh@debian.org">joeyh@debian.org</a></code><br>
Christian Schwarz <code><a href="mailto:schwarz@debian.org">schwarz@debian.org</a></code><br>
Bill Allombert <code><a href="mailto:ballombe@debian.org">ballombe@debian.org</a></code><br>
<br>
</address>
<hr>

</body>

</html>