Updated manpage, removed unused variables, etc.

• Updated manual page (removing mention to the removed -w option).
• Removed unused variables (dc.d).
• Freeing item's label and output.
This commit is contained in:
phillbush 2020-05-29 22:37:55 -03:00
parent ec4ed1ac1e
commit 6b5123e793
2 changed files with 13 additions and 25 deletions

27
xmenu.1
View File

@ -3,8 +3,6 @@
xmenu \- menu utility for X xmenu \- menu utility for X
.SH SYNOPSIS .SH SYNOPSIS
.B xmenu .B xmenu
.RB [ \-w ]
.RI [ title... ]
.SH DESCRIPTION .SH DESCRIPTION
.B xmenu .B xmenu
is a menu for X, is a menu for X,
@ -12,37 +10,28 @@ it reads a list of newline-separated items from stdin,
shows a menu for the user to select one of the items, shows a menu for the user to select one of the items,
and outputs the item selected to stdout. and outputs the item selected to stdout.
.PP .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: Each item read from stdin has the following format:
.IP .IP
.EX .EX
ITEM := TABS LABEL TABS COMMAND NEWLINE ITEM := [TABS] [LABEL [TABS OUTPUT]] NEWLINE
.EE .EE
.PP .PP
That means, each item is composed by That means that each item is composed by
tabs, followed by a label, followed by more tabs, followed by a command, tabs, followed by a label, followed by more tabs, followed by an output,
and ended by a newline. and ended by a newline. Brackets group optional elements.
.IP .IP
The initial tabs indicate the menu hierarchy: The initial tabs indicate the menu hierarchy:
items indented with a tab is shown in a submenu of the preceding item not indented. 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 .IP
The label is the string that will be shown as a item in the menu. 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 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. separating the item above from the item below.
.IP .IP
The command is the string that will be output after selecting the item. The output 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. If an item does not have an output, its label is used as its output.
.IP .IP
The newline terminates the item specification. 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 .SH USAGE
.B xmenu .B xmenu
is controlled by the mouse, is controlled by the mouse,
@ -113,7 +102,7 @@ creating a command to be run by the shell.
.EX .EX
#!/bin/sh #!/bin/sh
cat <<EOF | xmenu | sh cat <<EOF | xmenu | sh &
Applications Applications
Web Browser firefox Web Browser firefox
Image editor gimp Image editor gimp

11
xmenu.c
View File

@ -28,7 +28,6 @@ struct DC {
XftColor border; XftColor border;
XftColor separator; XftColor separator;
Drawable d;
GC gc; GC gc;
XftFont *font; XftFont *font;
}; };
@ -598,14 +597,12 @@ mapmenu(struct Menu *currmenu)
static void static void
drawseparator(struct Menu *menu, struct Item *item) drawseparator(struct Menu *menu, struct Item *item)
{ {
int linex, liney, linew; int y;
linex = dc.font->height; y = item->y + item->h/2;
liney = item->y + item->h/2;
linew = menu->w - dc.font->height;
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 */
@ -821,6 +818,8 @@ freemenu(struct Menu *menu)
freemenu(item->submenu); freemenu(item->submenu);
tmp = item; tmp = item;
item = item->next; item = item->next;
free(tmp->label);
free(tmp->output);
free(tmp); free(tmp);
} }