1 0d0d65c9 2018-06-14 omar.polo MYMENU(1) - General Commands Manual
5 0d0d65c9 2018-06-14 omar.polo **mymenu** - simple menu for XOrg
7 ae801529 2018-07-13 omar.polo # SYNOPSIS
9 ae801529 2018-07-13 omar.polo **mymenu**
10 0dee1b65 2018-08-13 omar.polo \[**-Aamvh**]
11 54fabaa4 2018-09-16 omar.polo \[**-B** *colors*]
12 54fabaa4 2018-09-16 omar.polo \[**-b** *borders*]
13 54fabaa4 2018-09-16 omar.polo \[**-C** *color*]
14 54fabaa4 2018-09-16 omar.polo \[**-c** *color*]
15 54fabaa4 2018-09-16 omar.polo \[**-d** *separator*]
16 54fabaa4 2018-09-16 omar.polo \[**-e** *window*]
17 54fabaa4 2018-09-16 omar.polo \[**-f** *font*]
18 844addbb 2018-07-15 omar.polo \[**-H** *height*]
19 ae801529 2018-07-13 omar.polo \[**-l** *layout*]
20 54fabaa4 2018-09-16 omar.polo \[**-P** *padding*]
21 54fabaa4 2018-09-16 omar.polo \[**-p** *prompt*]
22 ae801529 2018-07-13 omar.polo \[**-T** *color*]
23 54fabaa4 2018-09-16 omar.polo \[**-t** *color*]
24 ae801529 2018-07-13 omar.polo \[**-S** *color*]
25 54fabaa4 2018-09-16 omar.polo \[**-s** *color*]
26 54fabaa4 2018-09-16 omar.polo \[**-W** *width*]
27 54fabaa4 2018-09-16 omar.polo \[**-x** *coord*]
28 54fabaa4 2018-09-16 omar.polo \[**-y** *coord*]
30 0d0d65c9 2018-06-14 omar.polo # DESCRIPTION
33 0d0d65c9 2018-06-14 omar.polo **mymenu**
34 0d0d65c9 2018-06-14 omar.polo utility a simple graphical menu for XOrg. It read the items from
35 0d0d65c9 2018-06-14 omar.polo **stdin**
36 0d0d65c9 2018-06-14 omar.polo and print the user selection to
37 0d0d65c9 2018-06-14 omar.polo **stdout**
38 0d0d65c9 2018-06-14 omar.polo on exit.
40 ae801529 2018-07-13 omar.polo The following options are available and take the maximum precedence
41 ae801529 2018-07-13 omar.polo over the (respective) ones defined in the
42 ae801529 2018-07-13 omar.polo **X Resource Database**
46 54fabaa4 2018-09-16 omar.polo > The user must chose one of the option (or none) and is not able to
47 54fabaa4 2018-09-16 omar.polo > arbitrary enter text
51 ae801529 2018-07-13 omar.polo > The first completion (if any) is always selected. This is like dmenu.
53 54fabaa4 2018-09-16 omar.polo **-B** *colors*
55 54fabaa4 2018-09-16 omar.polo > Override the borders color. Parsed as MyMenu.border.color.
57 54fabaa4 2018-09-16 omar.polo **-b** *borders*
59 54fabaa4 2018-09-16 omar.polo > Override the borders size. Parsed as MyMenu.border.size.
61 54fabaa4 2018-09-16 omar.polo **-C** *color*
63 54fabaa4 2018-09-16 omar.polo > Override the completion background color. See
64 54fabaa4 2018-09-16 omar.polo > MyMenu.completion.background.
66 54fabaa4 2018-09-16 omar.polo **-c** *color*
68 54fabaa4 2018-09-16 omar.polo > Override the completion foreground color. See
69 54fabaa4 2018-09-16 omar.polo > MyMenu.completion.foreground.
71 54fabaa4 2018-09-16 omar.polo **-d** *separator*
73 54fabaa4 2018-09-16 omar.polo > Define a string to be used as a separator. Only the text after the
74 54fabaa4 2018-09-16 omar.polo > separator will be rendered, but the original string will be
75 54fabaa4 2018-09-16 omar.polo > returned. Useful to embed custom data on every entry. See the mpd
76 54fabaa4 2018-09-16 omar.polo > example for hints on how this can be useful.
78 54fabaa4 2018-09-16 omar.polo **-e** *windowid*
80 54fabaa4 2018-09-16 omar.polo > Embed into the given window id.
82 54fabaa4 2018-09-16 omar.polo **-H** *val*
84 54fabaa4 2018-09-16 omar.polo > Override the height. Parsed as MyMenu.height.
88 54fabaa4 2018-09-16 omar.polo > Print a small usage message to stderr.
90 ae801529 2018-07-13 omar.polo **-f** *font*
92 ae801529 2018-07-13 omar.polo > Override the font. See MyMenu.font.
94 54fabaa4 2018-09-16 omar.polo **-l** *layout*
96 54fabaa4 2018-09-16 omar.polo > Override the layout. Parsed as MyMenu.layout.
100 54fabaa4 2018-09-16 omar.polo > The user can select multiple entry via C-m. Please consult
101 845963e5 2018-09-16 omar.polo > *KEYS*
102 845963e5 2018-09-16 omar.polo > for more info.
104 54fabaa4 2018-09-16 omar.polo **-P** *padding*
106 54fabaa4 2018-09-16 omar.polo > Override the padding. See the MyMenu.padding resource.
108 54fabaa4 2018-09-16 omar.polo **-p** *prompt*
110 54fabaa4 2018-09-16 omar.polo > Override the prompt
112 54fabaa4 2018-09-16 omar.polo **-S** *color*
114 54fabaa4 2018-09-16 omar.polo > Override the highlighted completion background color. See
115 54fabaa4 2018-09-16 omar.polo > MyMenu.completion\_highlighted.background.
117 54fabaa4 2018-09-16 omar.polo **-s** *color*
119 54fabaa4 2018-09-16 omar.polo > Override the highlighted completion foreground color. See
120 54fabaa4 2018-09-16 omar.polo > MyMenu.completion\_highlighted.foreground.
122 ae801529 2018-07-13 omar.polo **-T** *color*
124 ae801529 2018-07-13 omar.polo > Override the prompt background color. See MyMenu.prompt.background.
126 54fabaa4 2018-09-16 omar.polo **-t** *color*
128 54fabaa4 2018-09-16 omar.polo > Override the prompt foreground color. See MyMenu.prompt.foreground.
130 54fabaa4 2018-09-16 omar.polo **-v**
132 54fabaa4 2018-09-16 omar.polo > Print version and exit.
134 54fabaa4 2018-09-16 omar.polo **-W** *val*
136 54fabaa4 2018-09-16 omar.polo > Override the width. Parsed as MyMenu.width.
138 54fabaa4 2018-09-16 omar.polo **-x** *val*
140 54fabaa4 2018-09-16 omar.polo > Override the positioning on the X axis, parsed as the resource MyMenu.x
142 54fabaa4 2018-09-16 omar.polo **-y** *val*
144 54fabaa4 2018-09-16 omar.polo > Override the positioning on the Y axis, parsed as the resource MyMenu.y
146 ae801529 2018-07-13 omar.polo # RESOURCES
148 0d0d65c9 2018-06-14 omar.polo MyMenu.font
150 0d0d65c9 2018-06-14 omar.polo > The font name to use. By default is set to "fixed" if compiled without
151 0d0d65c9 2018-06-14 omar.polo > Xft(3) support, "monospace" otherwise. Without Xft(3) only bitmap font
152 0d0d65c9 2018-06-14 omar.polo > are supported.
154 0d0d65c9 2018-06-14 omar.polo MyMenu.layout
156 0d0d65c9 2018-06-14 omar.polo > The layout of the menu. The possible values are "horizontal" and
157 0d0d65c9 2018-06-14 omar.polo > "vertical", with the default being "horizontal". Every other value
158 0d0d65c9 2018-06-14 omar.polo > than "horizontal" is treated like "vertical", but this is kinda an
159 0d0d65c9 2018-06-14 omar.polo > implementation detail and not something to be relied on, since in the
160 0d0d65c9 2018-06-14 omar.polo > future other layout could be added as well.
162 0d0d65c9 2018-06-14 omar.polo Mymenu.prompt
164 0d0d65c9 2018-06-14 omar.polo > A string that is rendered before the user input. Default to "$ ".
166 0d0d65c9 2018-06-14 omar.polo MyMenu.width
168 0d0d65c9 2018-06-14 omar.polo > The width of the menu. If a numeric value is given (e.g. 400) is
169 0d0d65c9 2018-06-14 omar.polo > interpreted as pixel, if it ends with a percentage symbol \`%'
170 0d0d65c9 2018-06-14 omar.polo > (e.g. 40%) the relative percentage will be computed (relative to the
171 0d0d65c9 2018-06-14 omar.polo > monitor width).
173 0d0d65c9 2018-06-14 omar.polo MyMenu.height
175 0d0d65c9 2018-06-14 omar.polo > The height of the menu. Like MyMenu.width if a numeric value is given
176 0d0d65c9 2018-06-14 omar.polo > is interpreted as pixel, if it ends with a percentage symbol \`%' the
177 0d0d65c9 2018-06-14 omar.polo > relative percentage will be computed (relative to the monitor height).
179 0d0d65c9 2018-06-14 omar.polo MyMenu.x
181 0d0d65c9 2018-06-14 omar.polo > The X coordinate of the topmost left corner of the window. Much like
182 0d0d65c9 2018-06-14 omar.polo > MyMenu.height and MyMenu.width both a pixel dimension and percentage
183 ae801529 2018-07-13 omar.polo > could be supplied. In addition to it, some special value can be used.
185 ae801529 2018-07-13 omar.polo > start
187 ae801529 2018-07-13 omar.polo > > Alias for 0;
189 ae801529 2018-07-13 omar.polo > middle
191 ae801529 2018-07-13 omar.polo > > Compute the correct value to make sure that mymenu will be
192 ae801529 2018-07-13 omar.polo > > horizontally centered;
196 ae801529 2018-07-13 omar.polo > > Compute the correct value to make sure that mymenu will be right
197 ae801529 2018-07-13 omar.polo > > aligned.
199 0d0d65c9 2018-06-14 omar.polo MyMenu.y
201 0d0d65c9 2018-06-14 omar.polo > The Y coordinate of the topmost left corner of the window. Like the X
202 0d0d65c9 2018-06-14 omar.polo > coordinate a pixel dimension, percentage dimension or the special
203 ae801529 2018-07-13 omar.polo > value "start", "middle", "end" could be supplied.
205 0d0d65c9 2018-06-14 omar.polo MyMenu.padding
207 0d0d65c9 2018-06-14 omar.polo > Change the padding. In the horizontal layout the padding is the space
208 0d0d65c9 2018-06-14 omar.polo > between the rectangle of the completion and the text as well as the
209 0d0d65c9 2018-06-14 omar.polo > space between the prompt and the first completion. In the horizontal
210 0d0d65c9 2018-06-14 omar.polo > layout the padding is the horizontal spacing between the window edge
211 0d0d65c9 2018-06-14 omar.polo > and the text as well as the space up and down the text within the
212 0d0d65c9 2018-06-14 omar.polo > completion. The default value is 10.
214 500ca6c1 2018-07-08 omar.polo MyMenu.border.size
216 500ca6c1 2018-07-08 omar.polo > A list of number separated by spaces to specify the border of the
217 500ca6c1 2018-07-08 omar.polo > window. The field is parsed like some CSS properties (i.e. padding),
218 500ca6c1 2018-07-08 omar.polo > that is: if only one value is provided then it'll be used for all
219 500ca6c1 2018-07-08 omar.polo > borders; if two value are given than the first will be used for the
220 500ca6c1 2018-07-08 omar.polo > top and bottom border and the former for the left and right border;
221 500ca6c1 2018-07-08 omar.polo > with three value the first is used for the top border, the second for
222 500ca6c1 2018-07-08 omar.polo > the left and right border and the third for the bottom border. If four
223 500ca6c1 2018-07-08 omar.polo > value are given, they'll be applied to the respective border
224 500ca6c1 2018-07-08 omar.polo > clockwise. Other values will be ignored. The default value is 0.
226 500ca6c1 2018-07-08 omar.polo MyMenu.border.color
228 500ca6c1 2018-07-08 omar.polo > A list of colors for the borders. This field is parsed like the
229 500ca6c1 2018-07-08 omar.polo > MyMenu.border.size. The default value is black.
231 0d0d65c9 2018-06-14 omar.polo MyMenu.prompt.background
233 0d0d65c9 2018-06-14 omar.polo > The background of the prompt.
235 0d0d65c9 2018-06-14 omar.polo MyMenu.prompt.foreground
237 0d0d65c9 2018-06-14 omar.polo > The text color (foreground) of the prompt.
239 0d0d65c9 2018-06-14 omar.polo MyMenu.completion.background
241 0d0d65c9 2018-06-14 omar.polo > The background of the completions.
243 0d0d65c9 2018-06-14 omar.polo MyMenu.completion.foreground
245 0d0d65c9 2018-06-14 omar.polo > The text color of the completions.
247 0d0d65c9 2018-06-14 omar.polo MyMenu.completion\_highlighted.background
249 0d0d65c9 2018-06-14 omar.polo > The background of the selected completion.
251 0d0d65c9 2018-06-14 omar.polo MyMenu.completion\_highlighted.foreground
253 0d0d65c9 2018-06-14 omar.polo > The foreground of the selected completion.
255 54fabaa4 2018-09-16 omar.polo # COLORS
257 54fabaa4 2018-09-16 omar.polo MyMenu accept colors only in the form of:
259 54fabaa4 2018-09-16 omar.polo * #rgb
261 54fabaa4 2018-09-16 omar.polo * #rrggbb
263 54fabaa4 2018-09-16 omar.polo * #aarrggbb
265 54fabaa4 2018-09-16 omar.polo The opacity is assumed 0xff (no transparency) if not provided.
267 0d0d65c9 2018-06-14 omar.polo # KEYS
269 bee0837c 2018-07-01 omar.polo This is the list of keybinding recognized by
270 bee0837c 2018-07-01 omar.polo **mymenu**.
271 bee0837c 2018-07-01 omar.polo In the following examples, C-c means Control-c.
275 0d0d65c9 2018-06-14 omar.polo > Close the menu without selecting any entry
279 bee0837c 2018-07-01 omar.polo > The same as Esc
283 0d0d65c9 2018-06-14 omar.polo > Close the menu and print to stdout what the user typed
287 0dee1b65 2018-08-13 omar.polo > Confirm but keep looping (if enabled), otherwise complete only
291 0d0d65c9 2018-06-14 omar.polo > Expand the prompt to the next possible completion
293 0d0d65c9 2018-06-14 omar.polo Shift Tab
295 0d0d65c9 2018-06-14 omar.polo > Expand the prompt to the previous possible completion
299 0d0d65c9 2018-06-14 omar.polo > The same as Tab
303 0d0d65c9 2018-06-14 omar.polo > The same as Shift-Tab
305 0d0d65c9 2018-06-14 omar.polo Backspace
307 0d0d65c9 2018-06-14 omar.polo > Delete the last character
311 0d0d65c9 2018-06-14 omar.polo > The same as Backspace
315 0d0d65c9 2018-06-14 omar.polo > Delete the last word
319 0d0d65c9 2018-06-14 omar.polo > Delete the whole line
323 6254fed8 2018-07-06 omar.polo > Toggle the \`\`first selected'' style. Sometimes, especially with the -a
324 6254fed8 2018-07-06 omar.polo > option, could be handy to disable that behaviour. Let's say that
325 6254fed8 2018-07-06 omar.polo > you've typed \`\`fire'' and the first completion is \`\`firefox'' but you
326 6254fed8 2018-07-06 omar.polo > really want to choose \`\`fire''. While you can type some spaces, this
327 6254fed8 2018-07-06 omar.polo > keybinding is a more elegant way to change, at runtime, the behaviour
328 6254fed8 2018-07-06 omar.polo > of the first completion.
330 3518f203 2018-07-21 omar.polo # EXIT STATUS
332 3518f203 2018-07-21 omar.polo 0 when the user select an entry, 1 when the user press Esc, EX\_USAGE
333 3518f203 2018-07-21 omar.polo if used with wrong flags and EX\_UNAVAILABLE if the connection to X
334 3518f203 2018-07-21 omar.polo fails.
336 3518f203 2018-07-21 omar.polo # EXAMPLES
338 3518f203 2018-07-21 omar.polo * Create a simple menu with a couple of entry
340 3518f203 2018-07-21 omar.polo cat <<EOF | $SHELL -c "$(mymenu -p "Exec: ")"
341 3518f203 2018-07-21 omar.polo firefox
343 3518f203 2018-07-21 omar.polo xcalc -stipple
348 3518f203 2018-07-21 omar.polo * Select and play a song from the current mpd playlist
350 630eb368 2018-09-19 omar.polo fmt="%position% %artist% - %title%"
351 630eb368 2018-09-19 omar.polo if song=$(mpc playlist -f "$fmt" | mymenu -p "Song: " -A -d " "); then
352 630eb368 2018-09-19 omar.polo mpc play $(echo $song | sed "s/ .*$//")
355 3518f203 2018-07-21 omar.polo # SEE ALSO
357 3518f203 2018-07-21 omar.polo dmenu(1)
358 3518f203 2018-07-21 omar.polo sysexits(3)
360 3518f203 2018-07-21 omar.polo # AUTHORS
362 3518f203 2018-07-21 omar.polo Omar Polo <omar.polo@europecom.net>
364 0dee1b65 2018-08-13 omar.polo # CAVEATS
366 0d0d65c9 2018-06-14 omar.polo * If, instead of a numeric value, a not-valid number that terminates
367 0d0d65c9 2018-06-14 omar.polo with the % sign is supplied, then the default value for that field
368 0d0d65c9 2018-06-14 omar.polo will be treated as a percentage. Since this is a misuse of the
369 0d0d65c9 2018-06-14 omar.polo resources this behavior isn't strictly considered a bug.
371 ae801529 2018-07-13 omar.polo * Keep in mind that sometimes the order of the options matter. First are
372 ae801529 2018-07-13 omar.polo parsed (if any) the xrdb options, then the command line flags
373 ae801529 2018-07-13 omar.polo **in the provided order!**
374 ae801529 2018-07-13 omar.polo That meas that if you're providing first the x coordinate, let's say
375 ae801529 2018-07-13 omar.polo "middle", and
376 ae801529 2018-07-13 omar.polo **after that**
377 ae801529 2018-07-13 omar.polo you are overriding the width, the window
378 ae801529 2018-07-13 omar.polo **will not be**
379 ae801529 2018-07-13 omar.polo centered.
381 ae801529 2018-07-13 omar.polo As a general rule of thumb, if you're overriding the width and/or the
382 ae801529 2018-07-13 omar.polo height of the window, remember to override the x and y coordinates as
385 630eb368 2018-09-19 omar.polo OpenBSD 6.4 - September 19, 2018