ratmen man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

ratmen(1)							     ratmen(1)

NAME
       ratmen - create a menu to run commands

SYNOPSIS
       ratmen [OPTION]... MENUITEM COMMAND...

       ratmen [OPTION]... {-d##|--delimiter ##} MENUITEM##COMMAND ...

DESCRIPTION
       Ratmen is a simple program that accepts a list of MENUITEM and COMMAND
       pairs on the command line. It creates a window that consists of nothing
       but a menu.  When a particular MENUITEM is selected by the user, the
       corresponding COMMAND is executed or (using --print) printed on
       standard output.

       Menu items and commands may either be given separately (as in ratmenu)
       using two arguments for each menu option, or, optionally you may
       specify a delimiter (using the --delimiter option) and specify both
       menu item and command in the same argument (similar to 9menu). The
       delimiter may be of any length.

       If the command is omitted (or if an empty command is supplied when not
       using --delimiter) then the menu item text will be used as the command.

OPTIONS
       Some options may be specified using X resouces (allowing you to define
       some defaults you like in your in you ~/.Xresources, ~/.Xdefaults or
       similar).  To make this mechanism as useful as possible I would suggest
       that you refrain from using such options on the command line, unless
       you really need to, and instead enable/disable the corresponding X
       resource setting.

       ratmen's default resource class is the name of the executed file,
       either ratmen or, if the executable was called through a link, the name
       of the link in question. The command line option --class may be used to
       override the default X resource class name.

       --align {left|center|right}  (X resource: align)
	       Aligns the text of the menu entries to the left, center or
	       right.  Defaults to left. (Short options -l, -c and -r may also
	       be used for left, center and right respectivelly.)

       -b, --back PREVMENU
	       Run command PREVMENU when user goes back in the menu hierarchy.
	       Useful when using nested menus; it gives the user a way to back
	       out and return to the previous menu. Note that you can use this
	       option for other things too. The command specified by the
	       --back option is executed when the user hits one of the "back"
	       keys.

       --background BGCOLOR  (X resource: background)
	       Set the background color to BGCOLOR. By default, the background
	       color is black.	BGCOLOR may be the name of any color accepted
	       by your X server.

       -C, --class CLASSNAME
	       This option allows you to override ratmen's resource class.
	       Normally it is "ratmen", but it can be set to another class
	       such as "ratmenu" to override selected resources.

       --debug Makes ratmen talk quite a lot on standard error.

       -d, --delimiter DELIM
	       This changes the behaviour when parsing subsequent
	       menuitem/command pairs.

	       Normally the command line argumens are taken to be alternately
	       menu items and their related commands, thus requiring an even
	       number of arguments to be passed to ratmen. (If a command is
	       given as "" it is taken to be the same as the menu item.) This
	       behaviour can make it somewhat difficult to distinguish between
	       menu item arguments and command arguments in cases where the
	       menu grow quite big (e.g. in a script). Therefore an
	       alternative is provided...

	       If you specify a delimiter (using --delimiter) this behaviour
	       is changed and the menu item and command are both expected to
	       occur in the same argument, separated by whatever delimiter
	       you've specified. This makes the command line easier to read
	       (for a human) but is sometimes disadvantageous, especially in
	       autogenerated menus, since the delimiter in question cannot
	       occur in the menu item text. (See also "EXAMPLES" below.)

       -D, --display DISPLAYNAME
	       Use the X display DISPLAYNAME, instead of the default display.
	       Normally you won't need to use this.

       --foreground FGCOLOR  (X resource: foreground)
	       Set the foreground color to FGCOLOR. By default, the foreground
	       color is black.	FGCOLOR may be the name of any color accepted
	       by your X server.

       -F, --font FONTNAME  (X resource: font)
	       Use the font FONTNAME instead of the default font.

       -h, --help
	       Output a brief help message.

       --mouse	(X resource: mouse)
       --no-mouse
	       Enable/disable mouse support in ratmen. The mouse support is
	       quite limited (you can't scroll a large menu using the mouse)
	       and is only intended for those moments when you instinctively
	       want to click on something you see in order to select it. See
	       also "MOUSE SUPPORT".

	       Use "ratmen.mouse: false" (or `no' or `off') in your X resource
	       file to disable mouse support as a default, and "ratmen.mouse:
	       true" (or `yes' or `on) to enable it.

       -i, --item POSITION
	       Pre-select menu item number POSITION, instead of the first menu
	       item, upon opening the menu. Menu items are numbered from 1.
	       This is sometimes useful in scripts.

	       If POSITION is 0, then no item is selected initially. Going up
	       one item will make the menu jump to the last item, going down
	       will jump to the first item.  Pressing enter while no item is
	       selected is the same as aborting. There is no way to zero
	       entries, other than this, so if you move about you cannot
	       return to the state where no item is selected (but why should
	       you ever want that?).

	       The described behavior is useful when the initially selected
	       item denotes a `current' value (useful when called from a
	       script) and the absence of a selected item may be used to
	       indicate that there is no such `current' value.

       -p, --print
	       Prints the COMMAND associated with the selected MENUITEM on
	       standard output instead of running it.

	       Using this option you can use a menu for all kinds of
	       selections, and not only for running a program. When using this
	       option COMMAND no longer need to be a valid command at all --
	       any string will work. See also "EXAMPLES" below.

       -o, --scroll-offset ITEMS  (X resource: scrollOffset)
	       If a menu is too large to fit in one window, it will become
	       scrollable.  Ratmen will try to keep at least ITEMS number of
	       items between the current position and the top or bottom of the
	       menu. If you get closer than this, the menu will scroll. As you
	       get close to the top or bottom of the menu scrolling will
	       cease. (Default scroll offset is 3.)

	       Scroll offset may not be larger than half of the menu. If it is
	       it will be cut down to that value.

       -S, --shell PROG
	       Use PROG as the shell to run commands, instead of /bin/sh. A
	       popular alternative shell is rc(1). If the shell cannot be
	       executed, ratmen will silently fall back to using /bin/sh.

       -s, --style {snazzy|dreary}  (X resource: style)
	       The default style is dreary, where the highlight bar moves up
	       and down the menu as it does on all conventional keyboard
	       controlled menus.  In dreary mode, the highlight bar, which
	       shows the currently selected item, remains stationary while all
	       the menu items are rotated up or down when the cursor keys are
	       moved.

       -t, --title NAME
	       Change the title of the menu window to NAME. The default title
	       is the last component of the path used to run ratmen,
	       typically, "ratmen".

       --unfocus-exit  (X resource: unfocusExit)
       --no-unfocus-exit
	       FIXME: Currently a `BadWindow' error message is generated by X
	       when the current instance of ratmen dies of unfocus. Does
	       anyone know how to fix this?

	       --unfocus-exit causes ratmen to die (without any option being
	       selected) if its window loses focus (it's probably not a good
	       to use in combination with a window manager that automatically
	       focuses the window under your pointer).

	       --no-unfocus-exit makes ratmen survive unfocusing. This can be
	       confusing in some cases as it makes it possible to have start
	       several menus at once (normally the previous menu would die
	       from unfocus).

	       Use "ratmen.unfocusExit: false" (or `no' or `off') in your X
	       resource file to disable unfocus deaths as a default, and
	       "ratmen.unfocusExit: true" (or `yes' or `on) to enable it.

       -V, --version
	       This option prints the version of ratmen on the standard
	       output, and then exits with  an exit value of zero.

KEYSTROKES
       The Up keystrokes move the selection to the next item up. The Down
       keystrokes move the selection to the next item down. When the selection
       reaches the top or bottom, it scrolls around to the other side on
       pressing of the appropriate keystroke. The Select keystrokes execute
       the command corresponding to the currently selected menu item, and exit
       ratmen. The Back keystrokes does nothing unless the --back option was
       used, in which case it will run the command specified by that option
       and exit ratmen. The Exit keystrokes quit ratmen without doing
       anything.

	   Up	   "k", Up_arrow, BackSpace, "-"
	   Down	   "j", Down_arrow, Space, Tab, "+"
	   Select  "l", Right_arrow, Return
	   Back	   "h", Left_arrow
	   Exit	   "q", Escape

MOUSE SUPPORT
       Ratmen implements limited support for the rodent, you may select an
       item (left), go to any previous menu, given by --back, (right) or abort
       the menu (any other; usually middle). The mouse cannot be used to
       scroll the menu.

       Your rodent won't interfere with the normal operation. If you place the
       pointer on the menu by mistake, simply move it outside of the menu to
       restore the selection. You may, however, use the keys to manipulate an
       entry selected with the mouse, in this case the key based selection
       sticks.

       Actions are performed upon releasing a mouse butten. To cancel an
       action after the button has been pressed, move it outside the menu
       window and release the button (this goes for all the buttons).

EXAMPLES
       How about creating a little remote shell menu? The ratmenuish approach
       would be

	   ratmen --label Remotes xterm "" acme "rsh acme xterm" herman "rsh herman 9term" &

       and to do it the 9menu way, type something like

	   ratmen --label Remotes -d: xterm "acme:rsh acme xterm" "herman:rsh herman 9term" &

       to do the trick. You could also make a menu containing some nice X
       programs to run. Like this:

	   ratmen --label "X progs" ghostview "" xdvi "" xeyes "" xneko "" &

       Or like this:

	   ratmen --label -d: "X progs" ghostview xdvi xeyes xneko &

       That last one is a bit easier on the eyes, don't you think? If you
       want, you can use the --back to call an "earlier" menu, like this:

	   ratmen --back ~/bin/mypreviousmenu "X Eyes" xeyes &

       If you'd like to use a menu from within a shell script (a similar
       technique may of course be employed from any other programming
       language, such as perl) you could use the following:

	   choice=`ratmen -pd: Abort Retry Ignore`

       Now any of the options selected will be put into the environment
       variable `$choice' (note, though, that this may also be empty if the
       user cancelled the

       menu). Here -p (or --print) option is used to print the selected
       COMMAND to standard out instead of running it, and -d (or --delimiter)
       is used simply to avoid having to fill out the command line with a lot
       of ugly "" arguments. (You could, of course, replace the colon in the
       command line with any character that you don't use in the menu.)

       And here are some lines from my ~/.Xresources file, for those
       interested:

       ! ratmen ratmen*foreground:    yellow ratmen*font:
       -adobe-courier-medium-r-normal-*-18-*-*-*-m-*-iso8859-1
       ratmen*unfocusExit:   true

       This makes my menus easily distinguishable (since not much else is
       yellow in my system configuration), easily readable (since I like
       courier) and doesn't clutty my screen too much in case I happen to
       forget about them and go about doing something else instead of choosing
       and item from the menu.

SEE ALSO
       /etc/X11/rgb.txt where you may find the names of appropriate colours to
       use with the --background and --forground options and X resources.

AUTHORS
       The initial idea for this program was by Arnold Robbins, after having
       worked with John Mackin's GWM Blit emulation. Matty Farrow wrote a
       version using libXg, from which some ideas were borrowed. This code was
       written by David Hogan and Arnold Robbins. Rich Salz motivated the
       -shell option. Jonathan Walther modified this code to play nicely with
       the ratpoison window manager by removing handling of mouse events and
       iconification.

       Zrajm C Akfogh <ratmen-mail@klingonska.org> changed command line syntax
       into the more standard getopts, added scrolling capacity if menu is to
       large to fit all at once, added --delimiter, --item, --print,
       --scroll-offset and --unfocus-exit options and X resource support (Yay!
       No need to specify those longish font-thingies on the command line any
       more!).

       The name `ratmen' is both an abbreviation of `ratmenu' (from which this
       program is heavily derived) and a reference to the fact that *I* don't
       have any religious reasons for not using the rodent (I like the
       keyboard, but I also like freedom of choice).

FUTURE
       I have not activelly made any changes to this program for several
       years, though it was originally my intention to write a program that
       works both under X, and in the console.

       I later wrote termmen, which much closer resembles my intentions for
       ratmen, but unfortunately only works in the console or terminal (i.e.
       does not pop up a window of its own under X). Both termmen and this
       program is available from <http://zrajm.klingonska.org/programs/>.

       This program is written in C, which is not my native language, while
       Termmen is written as a zsh script. If anyone would like to continue
       development of ratmen, or a have a patch they'd like applied. Please
       feel free to send it to me at ratmen-mail@klingonska.org.

HISTORY
       [2003-02-21, 12:47-16:18] Implemented `--item' for choosing initially
       selected item. Menu item and command is now given in the same string,
       separated with :, which makes for nicer error detection and lesser
       errors since it is a bit easier to keep track of what does which on the
       command line.

       [2003-02-22, 15:38-16:43]

       [2003-02-23, 02:19-02:36] Implemented `--delimiter' which now must be
       used to get the "menuitem:command" (as opposed to "menuitem" "command")
       behaviour.  This, because I realised that when called from a script
       using an on-the-fly generated menu it can be quite tedious to make sure
       that the delimiter does not occur in the `menuitem' string (and thus
       fuck up the menu). Of course in handwritten menus the delimiter
       approach is easier to handle, hence I allow for both. Delimiter now
       also may be more than one character long.

       [2003-02-23, 19:08-20:30] Implemented --unfocus-exit which exits the
       menu if it's window is unfocused.

       [2003-02-23, 21:12-21:22]

       [2003-02-24, 00:22-00:49]

       [2003-02-24, 11:38-17:47] Now reads some options regulating appearance
       and behaviour from X resources in addition to the command line.

       [2003-02-25, 18:47-22:20] Wrote POD. At last found a really good name
       for the product. The ratmen.

       [2003-02-26, 01:38-09:15] Now reads command line option using getopt;
       thusly supports both --long-options and short ones (and bundles of
       short ones). Yay!  Still haven't been able to get the --unfocus-exit to
       work properly.

       [2003-02-26, 13:27-14:34] Fixxed --unfocus-exit so that it now really
       makes the menu die of unfocus. Unfortunately, however a `BadWindow'
       message is generated by X when doing so, which looks quite ugly in
       ratpoison (which faithfully reports the error). I simply haven't been
       able to figure out what command is causing this, but my best guess is
       that there's some unlucky X function still queued which tries to
       manipulate the window after it has been closed.

       [2003-03-03, 00:13-01:54] Added the --print option, which can be
       extremely useful in scripts and other programs where you want to use a
       menu for some kind of input, rather than for a platform from which to
       fire off some program. Added "BUGS" section below. Added the --debug
       option which (as of now) dumps some info on the events (key/mouse
       clicks focusing etc.) intercepted from X.

       [2003-03-08, 11:21-11:29] Added a declaration of the subroutine
       `strcasecmp' and thus eliminating a compiler warning. Program worked
       flawlessy even before (and still does) but with less annoyance for me..
       =|:-) The declaration thingy was found on the 'net by googling for
       "strcasetmp introduction". Made arguments to --align and --style case
       insensetive.

       [2003-03-08, 20:27-22:58] Found and killed a bug which made X resources
       override the command line options.

       [2003-03-09, 07:04-10:15] Totally fixed the bug mentioned in previous
       comment.	 Added short options -l, -c and -r (for left, center and right
       aligning of the menu text), and changed --label to --title. Also
       changed the size of the menu window so that it will always be an even
       number of text lines (looks pretty ogly when only half or a third of
       the last item can be seen).  Opening of window could be still more
       optimal though (the problem still arises when X refuses to open the
       window with the requested height, e.g. when one uses frames in
       ratpoison).

       [2003-03-10, 00:53-04:07] v2.0 - Optimized menu redrawing routine for
       the non-scrolling case (used to flicker quite nastily when moving down
       large menus fast). Also finally got around to add scrolling capacity
       for menus too large to fit all at once. Added the related
       --scroll-offset option and X resource as well.

       [2003-03-10, 22:10-23:00] v2.0.1 - Begun fixxing window size bug
       (interrupted by Buffy - The Vampire Slayer).

       [2003-03-11, 00:31-04:25]

       [2003-03-12, 00:13-01:14] v2.0.2 - Fixed weird update/redraw bug
       thingy. Used to get a totally black empty menu sometimes. Bug probably
       introduced in last session, and now deceased.

       [2003-03-19, 10:48-12:38]

       [2003-03-19, 14:17-20:18] v2.1 - Wrote better handling of X resources,
       comlete with readable --debug output and all.

       [2003-03-19, 22:40-09:05] v2.2 - Implemented mouse support. Made
       --item=0 special. Bugfix: Now opens a window of the correct size by
       telling X that it wants a window whose vertical size should be any
       number of pixels evenly dividable by the font height. (Rxvt served as a
       source of inspiration for this feature.) Also added keys Home/PgUp for
       going to the first item in the menu and End/PgDn to go to the last.
       --class now really works.

       [2003-03-24, 15:41-16:32] v2.2.1 - Added options --mouse and --no-mouse
       and the corresponding X resource ratmen.mouse -- mouse is enabled by
       default. Removed the short options -u and -U (synonyms for
       --unfocus-exit and --no-unfocus-exit) as to not encourage the useage of
       those options on the command line (should be set using X resources).

       [2003-03-28, 11:29-11:32] v2.2.2 - Killed bug which didn't allow spaces
       to be used in font names (this little bugfix also makes it quite
       necessary not to end your X resources in any extraneous spaces).

       [2007-10-25, 11:23-14:13] v2.2.3 -- Bugfix. Changed a couple of latin-1
       characters 173 (soft hyphens) to the minus signs the should have been
       all the time. Added the "FUTURE" heading above. Rewrote the Makefile.

BUGS
       o   When no item is selected (i.e. on startup with -i0) and you hover
	   the menu with the pointer, and then remove the pointer, the first
	   item becomes selected.

       o   The snazzy mode. I'm probably going to remove it sometime in the
	   future.  I don't use it and I don't see any reason why anybody else
	   should want to either... (Especially not now that we got scrollable
	   dreary mode..)

       o   Generates a `BadWindow' when dying of unfocus under the
	   --unfocus-exit option.

	   This should be curable by means of XSetErrorHandler(), at least if
	   it is not ratpoison causing these things.

       o   Memory leaks? There are probably several (me being totally new to
	   C) but since the execution time should never really accumulate I
	   haven't made it a priority to kill 'em. Please tell me if you find
	   any.

       o   When using --item=0 and --style=snazzy one must press arrow down
	   *twice* to select the first item on the menu. (I'll probably fix
	   this by removing the `snazzy' mode.)

TODO
       These are the things a want to do next in approximate order of
       priority:

       o   Parsing of standard input (so one may use ratmen as a magic number)
	   for interpreting menu files. If this is to work, maybe some special
	   command line argument parsing is needed? (I strongly suspect that
	   magic number arguments are not passed in the same fashion, as if
	   given on the command line..)

       o   Option for outputting number of selected menu item
	   (--print-number/-P maybe?).

       o   Change --print behaviour to include -d: or something automatically
	   (so that menu item text is default output).

       o   User-configurable keys for up/down choose etc.

       o   Menu shortcuts (defined in the menu) -- if autogenerated shortcuts
	   are good enough, this might not be needed.

       o   Automatically generated key shortcuts (E.g. numbers 0-9 for items
	   1-10, or letter 'a' letter to loop through all items begginning
	   with an 'a', or "/" and "?" to do incremental forward/backward
	   search...)

       o   Multiple selection mode (space=select; enter=finalize) (introduce
	   colors for marked entry and marked & selected entry).

       o   Incremental search in menu (using bottom item space for input).

       o   Replacing top/bottom item with arrow (or something) if scrollable
	   in that direction.

Zrajm C Akfohg			  2015-12-24			     ratmen(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net