Xmenu now has a man page.
This commit is contained in:
		
							
								
								
									
										2
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								README
									
									
									
									
									
								
							| @@ -24,3 +24,5 @@ of tabs.  Lines without labels are menu separators. | |||||||
|  |  | ||||||
| See the script ./xmenu.sh for an example of how xmenu can be used to | See the script ./xmenu.sh for an example of how xmenu can be used to | ||||||
| draw a simple menu with submenus and separators. | draw a simple menu with submenus and separators. | ||||||
|  |  | ||||||
|  | Read the manual for more information on running xmenu. | ||||||
|   | |||||||
							
								
								
									
										66
									
								
								xmenu.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								xmenu.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | |||||||
|  | .TH PROG 1 | ||||||
|  | .SH NAME | ||||||
|  | xmenu \- menu utility for X | ||||||
|  | .SH SYNOPSIS | ||||||
|  | .B xmenu | ||||||
|  | .RB [ \-w ] | ||||||
|  | .SH DESCRIPTION | ||||||
|  | .B xmenu | ||||||
|  | is a menu for X, | ||||||
|  | it reads a list of newline-separated items from stdin, | ||||||
|  | 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 | ||||||
|  | ITEM := TABS LABEL TABS COMMAND NEWLINE | ||||||
|  | .EE | ||||||
|  | .PP | ||||||
|  | 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. | ||||||
|  | .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 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. | ||||||
|  | .IP | ||||||
|  | The newline terminates the item specification. | ||||||
|  | .SH EXAMPLES | ||||||
|  | The following is an script exemplifying the use | ||||||
|  | .BR xmenu . | ||||||
|  | The output is redirected to xargs to make a command to be run by the shell. | ||||||
|  | .IP | ||||||
|  | .EX | ||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | cat <<EOF | ./xmenu | xargs sh -c | ||||||
|  | Applications | ||||||
|  | 	Web Browser	firefox | ||||||
|  | 	Image editor	gimp | ||||||
|  | Terminal (xterm)	xterm | ||||||
|  | Terminal (urxvt)	urxvt | ||||||
|  | Terminal (st)		st | ||||||
|  |  | ||||||
|  | Shutdown			poweroff | ||||||
|  | Reboot			reboot | ||||||
|  | EOF | ||||||
|  | .EE | ||||||
|  | .PP | ||||||
|  | For example, by selecting \(lqApplications\(rq, a new menu will appear. | ||||||
|  | Selecting \(lqWeb Browser\(rq in the new menu will open firefox. | ||||||
|  | .SH SEE ALSO | ||||||
|  | .IR dmenu (1), | ||||||
|  | .IR 9menu (1), | ||||||
|  | .IR thingmenu (1) | ||||||
							
								
								
									
										17
									
								
								xmenu.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								xmenu.c
									
									
									
									
									
								
							| @@ -79,7 +79,7 @@ static void setcurrmenu(struct Menu *currmenu_new); | |||||||
| static void parsestdin(void); | static void parsestdin(void); | ||||||
| static void run(void); | static void run(void); | ||||||
| static void freewindow(struct Menu *menu); | static void freewindow(struct Menu *menu); | ||||||
| static void cleanupexit(void); | static void cleanup(void); | ||||||
| static void usage(void); | static void usage(void); | ||||||
|  |  | ||||||
| /* X variables */ | /* X variables */ | ||||||
| @@ -146,7 +146,9 @@ main(int argc, char *argv[]) | |||||||
| 	/* run event loop */ | 	/* run event loop */ | ||||||
| 	run(); | 	run(); | ||||||
|  |  | ||||||
| 	return 1;   /* UNREACHABLE */ | 	cleanup(); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* get color from color string */ | /* get color from color string */ | ||||||
| @@ -576,8 +578,6 @@ run(void) | |||||||
| 	struct Item *previtem = NULL; | 	struct Item *previtem = NULL; | ||||||
| 	XEvent ev; | 	XEvent ev; | ||||||
|  |  | ||||||
| 	setcurrmenu(rootmenu); |  | ||||||
|  |  | ||||||
| 	while (!XNextEvent(dpy, &ev)) { | 	while (!XNextEvent(dpy, &ev)) { | ||||||
| 		switch(ev.type) { | 		switch(ev.type) { | ||||||
| 		case Expose: | 		case Expose: | ||||||
| @@ -608,11 +608,11 @@ run(void) | |||||||
| 					setcurrmenu(item->submenu); | 					setcurrmenu(item->submenu); | ||||||
| 				} else { | 				} else { | ||||||
| 					printf("%s\n", item->output); | 					printf("%s\n", item->output); | ||||||
| 					cleanupexit(); | 					return; | ||||||
| 				} | 				} | ||||||
| 				drawmenu(); | 				drawmenu(); | ||||||
| 			} else { | 			} else { | ||||||
| 				cleanupexit(); | 				return; | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		case LeaveNotify: | 		case LeaveNotify: | ||||||
| @@ -639,19 +639,18 @@ freewindow(struct Menu *menu) | |||||||
|  |  | ||||||
| /* cleanup and exit */ | /* cleanup and exit */ | ||||||
| static void | static void | ||||||
| cleanupexit(void) | cleanup(void) | ||||||
| { | { | ||||||
| 	freewindow(rootmenu); | 	freewindow(rootmenu); | ||||||
| 	XFreeFont(dpy, dc.font); | 	XFreeFont(dpy, dc.font); | ||||||
| 	XFreeGC(dpy, dc.gc); | 	XFreeGC(dpy, dc.gc); | ||||||
| 	XCloseDisplay(dpy); | 	XCloseDisplay(dpy); | ||||||
| 	exit(0); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| /* show usage */ | /* show usage */ | ||||||
| static void | static void | ||||||
| usage(void) | usage(void) | ||||||
| { | { | ||||||
| 	(void)fprintf(stderr, "usage: xmenu [-w] menuname\n"); | 	(void)fprintf(stderr, "usage: xmenu [-w]\n"); | ||||||
| 	exit(1); | 	exit(1); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user