add lastitem and adapt code to general code style
[xmenu] / xmenu.1
CommitLineData
5a83c7dc 1.TH XMENU 1
08f16589 2.SH NAME
3xmenu \- menu utility for X
4.SH SYNOPSIS
5.B xmenu
a48473fd 6.RB [ \-iw ]
05cfe1a0 7.RB [ -p
8.IR position ]
3bec05ea 9.RI [ title ]
08f16589 10.SH DESCRIPTION
11.B xmenu
12is a menu for X,
13it reads a list of newline-separated items from stdin,
14shows a menu for the user to select one of the items,
15and outputs the item selected to stdout.
16.PP
3bec05ea 17The options are as follows:
18.TP
71b4db92 19.B -i
20Disable icons.
7832d2cf 21This makes xmenu loading faster when not using icons.
71b4db92 22.TP
05cfe1a0 23.BI -p " position"
24Set the position to spawn xmenu.
25Without this option, xmenu spawns next to the cursor.
26.I position
27is a string of the form
237da982 28.BR INTxINT[:MONITOR] ,
05cfe1a0 29where the first INT is the x position and the second INT is the y position.
237da982 30The monitor part between brackets is optional.
31.B MONITOR
32can be a number from 0 to the number of monitors minus 1;
33or it can be a string like
34.B current
35or
36.BR cursor .
37If present, the monitor specifies that the position is relative to the upper left corner
38of that monitor.
39If
40.B monitor
41is
42.B current
43or
44.BR cursor ,
45the monitor to be used is that where the cursor is in.
46For example,
47.B -p 0x0:cursor
48specifies that
49.B xmenu
50must spawn at the position 0x0 of the monitor where the cursor is in.
51And
52.B -p 100x500:0
53specifies that
54.B xmenu
55must spawn at the position 100x500 of the monitor 0.
05cfe1a0 56.TP
3bec05ea 57.B -w
58Asks the window manager to draw a border around the menus.
71b4db92 59This option may be buggy in some window managers,
60specially tiled ones that do not respect window hints.
3bec05ea 61.PP
08f16589 62Each item read from stdin has the following format:
63.IP
64.EX
33376f54 65ITEM := [TABS] [[IMAGE TABS] LABEL [TABS OUTPUT]] NEWLINE
08f16589 66.EE
67.PP
6b5123e7 68That means that each item is composed by
33376f54 69tabs, followed by an optional image specification, followed by tabs
70followed by a label, followed by more tabs, followed by an output,
6b5123e7 71and ended by a newline. Brackets group optional elements.
08f16589 72.IP
73The initial tabs indicate the menu hierarchy:
74items indented with a tab is shown in a submenu of the preceding item not indented.
6b5123e7 75An item without initial tabs is a top-level item.
08f16589 76.IP
33376f54 77The image is a string of the form "IMG:/path/to/image.png".
78It specifies a image to be shown as icon at the left of the entry.
79.IP
08f16589 80The label is the string that will be shown as a item in the menu.
81An item without label is considered a separator and is drawn as a thin line in the menu
82separating the item above from the item below.
83.IP
6b5123e7 84The output is the string that will be output after selecting the item.
85If an item does not have an output, its label is used as its output.
08f16589 86.IP
87The newline terminates the item specification.
3bec05ea 88.PP
89If the argument
90.I title
91is given, the title of the menu window is set to it.
858338d9 92.SH USAGE
93.B xmenu
94is controlled by the mouse,
95but can also be controlled by the keyboard.
96Items can be selected using the arrow keys,
97Tab (with and without Shift),
45115feb 98Home, End,
2b0484b1 99Enter and Esc, and 1-9 keys.
858338d9 100.TP
45115feb 101.BR Home
102Select the first item in the menu.
103.TP
104.BR End
105Select the last item in the menu.
106.TP
858338d9 107.BR Down ", " Tab
108Cycle through the items in the regular direction.
109.TP
110.BR Up ", " Shift-Tab
111Cycle through the items in the reverse direction.
112.TP
113.BR Right ", " Enter
114Select the highlighted item.
115.TP
116.B Left
117Go to the menu above.
118.TP
119.B Esc
120Go to the menu above or exit xmenu.
45115feb 121.PP
122Additional key bindings can be set at compile time by changing the
123.B config.h
124file.
f644b8bc 125.SH RESOURCES
126.B
127xmenu
128understands the following X resources.
129.TP
130.B xmenu.font
131The font in which the labels should be drawn.
cdeaefaa 132Multiple fonts can be added as fallback fonts;
133they must be separated by a comma.
f644b8bc 134.TP
135.B xmenu.background
5a83c7dc 136The background color of non-selected items in the menu.
f644b8bc 137.TP
138.B xmenu.foreground
5a83c7dc 139The color of the label text of non-selected items in the menu.
f644b8bc 140.TP
141.B xmenu.selbackground
5a83c7dc 142The background color of selected items in the menu.
f644b8bc 143.TP
144.B xmenu.selforeground
5a83c7dc 145The color of the label text of selected items in the menu.
f644b8bc 146.TP
147.B xmenu.border
148The color of the border around the menu.
149.TP
150.B xmenu.separator
5a83c7dc 151The color of the separator between items in the menu.
f644b8bc 152.TP
92e7609b 153.B xmenu.gap
154The gap, in pixels, between the menus.
155.TP
f644b8bc 156.B xmenu.width
157The minimum width, in pixels, of the items in the menu.
158.TP
685ca30d 159.B xmenu.height
160The size in pixels of the height of a single menu item.
f644b8bc 161.TP
fd530f3f 162.B xmenu.borderWidth
f644b8bc 163The size in pixels of the border around the menu.
164.TP
fd530f3f 165.B xmenu.separatorWidth
f644b8bc 166The size in pixels of the item separator.
167
08f16589 168.SH EXAMPLES
d584fba6 169The following script illustrates the use of
08f16589 170.BR xmenu .
c49dad28 171The output is redirected to
172.IR sh (1),
173creating a command to be run by the shell.
08f16589 174.IP
175.EX
176#!/bin/sh
177
6b5123e7 178cat <<EOF | xmenu | sh &
08f16589 179Applications
33376f54 180 IMG:./web.png Web Browser firefox
d584fba6 181 IMG:./gimp.png Image editor gimp
33376f54 182Terminal (xterm) xterm
183Terminal (urxvt) urxvt
184Terminal (st) st
08f16589 185
33376f54 186Shutdown poweroff
187Reboot reboot
08f16589 188EOF
189.EE
190.PP
191For example, by selecting \(lqApplications\(rq, a new menu will appear.
d584fba6 192Selecting \(lqWeb Browser\(rq in the new menu opens firefox.
08f16589 193.SH SEE ALSO
194.IR dmenu (1),
195.IR 9menu (1),
196.IR thingmenu (1)