• Updated manual page (removing mention to the removed -w option).
• Removed unused variables (dc.d).
• Freeing item's label and output.
xmenu \- menu utility for X
.SH SYNOPSIS
.B xmenu
xmenu \- menu utility for X
.SH SYNOPSIS
.B xmenu
-.RB [ \-w ]
-.RI [ title... ]
.SH DESCRIPTION
.B xmenu
is a menu for X,
.SH DESCRIPTION
.B xmenu
is a menu for X,
shows a menu for the user to select one of the items,
and outputs the item selected to stdout.
.PP
shows a menu for the user to select one of the items,
and outputs the item selected to stdout.
.PP
-The options are as follows:
-.TP
-.B -w
-Asks the window manager to draw a border around the menus.
-Without this options, the menus do not have border drawn by the window manager.
-.PP
Each item read from stdin has the following format:
.IP
.EX
Each item read from stdin has the following format:
.IP
.EX
-ITEM := TABS LABEL TABS COMMAND NEWLINE
+ITEM := [TABS] [LABEL [TABS OUTPUT]] NEWLINE
-That means, each item is composed by
-tabs, followed by a label, followed by more tabs, followed by a command,
-and ended by a newline.
+That means that each item is composed by
+tabs, followed by a label, followed by more tabs, followed by an output,
+and ended by a newline. Brackets group optional elements.
.IP
The initial tabs indicate the menu hierarchy:
items indented with a tab is shown in a submenu of the preceding item not indented.
.IP
The initial tabs indicate the menu hierarchy:
items indented with a tab is shown in a submenu of the preceding item not indented.
+An item without initial tabs is a top-level item.
.IP
The label is the string that will be shown as a item in the menu.
An item without label is considered a separator and is drawn as a thin line in the menu
separating the item above from the item below.
.IP
.IP
The label is the string that will be shown as a item in the menu.
An item without label is considered a separator and is drawn as a thin line in the menu
separating the item above from the item below.
.IP
-The command is the string that will be output after selecting the item.
-If the item spawns a submenu, the command is the title of the menu.
+The output is the string that will be output after selecting the item.
+If an item does not have an output, its label is used as its output.
.IP
The newline terminates the item specification.
.IP
The newline terminates the item specification.
-.PP
-If the argument
-.I title
-is given, the title of the menu window is set to it.
.SH USAGE
.B xmenu
is controlled by the mouse,
.SH USAGE
.B xmenu
is controlled by the mouse,
+cat <<EOF | xmenu | sh &
Applications
Web Browser firefox
Image editor gimp
Applications
Web Browser firefox
Image editor gimp
XftColor border;
XftColor separator;
XftColor border;
XftColor separator;
static void
drawseparator(struct Menu *menu, struct Item *item)
{
static void
drawseparator(struct Menu *menu, struct Item *item)
{
- int linex, liney, linew;
- linex = dc.font->height;
- liney = item->y + item->h/2;
- linew = menu->w - dc.font->height;
+ y = item->y + item->h/2;
XSetForeground(dpy, dc.gc, dc.separator.pixel);
XSetForeground(dpy, dc.gc, dc.separator.pixel);
- XDrawLine(dpy, menu->pixmap, dc.gc, linex, liney, linew, liney);
+ XDrawLine(dpy, menu->pixmap, dc.gc, 0, y, menu->w, y);
}
/* draw regular item */
}
/* draw regular item */
freemenu(item->submenu);
tmp = item;
item = item->next;
freemenu(item->submenu);
tmp = item;
item = item->next;
+ free(tmp->label);
+ free(tmp->output);