GROFFER(1) General Commands Manual GROFFER(1)
groffer - display groff files and man pages on X and tty
groffer [option...] [--] [filespec...]
The groffer program is the easiest way to use groff(1). It can display
arbitrary documents written in the groff language, see groff(7), or other
roff languages, see roff(7), that are compatible to the original troff
language. The groffer program also includes many of the features for
finding and displaying the Unix manual pages (man_pages), such that it
can be used as a replacement for a man(1) program. Moreover, compressed
files that can be handled by gzip(1) or bzip2(1) are decompressed on-the-
The normal usage is quite simple by supplying a file name or name of a
man_page without further options. But the option handling has many
possibilities for creating special behaviors. This can be done either in
configuration files, with the shell environment variable $GROFFER_OPT, or
on the command line.
The output can be generated and viewed in several different ways
available for groff. This includes the groff native X Window viewer
gxditview(1), each Postcript, pdf, or dvi display program, a web browser
by generating html in www_mode, or several text_modes in text terminals.
Most of the options that must be named when running groff directly are
determined automatically for groffer, due to the internal usage of the
grog(1) program. But all parts can also be controlled manually by
Several file names can be specified on the command line arguments. They
are transformed into a single document in the normal way of groff.
Option handling is done in GNU style. Options and file names can be
mixed freely. The option `--' closes the option handling, all following
arguments are treated as file names. Long options can be abbreviated.
groffer mode options
[--auto] [--default] [--default-modes mode1,mode2,...] [--dvi]
[--dvi-viewer prog] [--dvi-viewer-tty prog] [--groff] [--html]
[--html-viewer prog] [--html-viewer-tty prog] [--mode
display_mode] [--pdf] [--pdf-viewer prog] [--pdf-viewer-tty prog]
[--ps] [--ps-viewer prog] [--ps-viewer-tty prog] [--text] [--tty]
[--tty-viewer prog] [--tty-viewer-tty prog] [--www] [--www-viewer
prog] [--www-viewer- prog] [--x|--X] [--x-viewer|--X-viewer prog]
[--debug] [--do-nothing] [--shell prog] [-Q|--source] [-V]
options related to groff
[-T|--device device] [-Z|--intermediate-output|--ditroff]
All further groff short options are accepted.
options for man_pages
[--apropos] [--apropos-data] [--apropos-devel] [--apropos-progs]
[--whatis] [--man] [--no-man] [--no-special]
long options taken over from GNU man
[--all] [--ascii] [--ditroff] [--extension suffix] [--locale
language] [--local-file] [--manpath dir1:dir2:...] [--pager
program] [--sections sec1:sec2:...] [--systems sys1,sys2,...]
Further long options of GNU man are accepted as well.
X Window Toolkit options
[--bd pixels] [--bg|--background color] [--bw pixels] [--display
X-display] [--fg|--foreground color] [--ft|--font font_name]
[--geometry size_pos] [--resolution value] [--rv] [--title string]
No filespec parameters means standard input.
- stands for standard input (can occur several times).
filename the path name of an existing file.
search the man page name in man section section.
name.s if s is a character in [1-9on], search for a man page
name in man section s.
man:name man page in the lowest man section that has name.
s name if s is a character in [1-9on], search for a man page
name in man section s.
name if name is not an existing file search for the man page
name in the lowest man section.
The groffer program can usually be run with very few options. But for
special purposes, it supports many options. These can be classified in 5
All short options of groffer are compatible with the short options of
groff(1). All long options of groffer are compatible with the long
options of man(1).
groffer breaking Options
As soon as one of these options is found on the command line it is
executed, printed to standard output, and the running groffer is
terminated thereafter. All other arguments are ignored.
-h | --help
Print a helping information with a short explanation of option sto
-v | --version
Print version information to standard output.
groffer Mode Options
The display mode and the viewer programs are determined by these options.
If none of these mode and viewer options is specified groffer tries to
find a suitable display mode automatically. The default modes are mode x
with gxditview in X Window and mode tty with device latin1 under less on
There are two kinds of options for viewers. --mode-viewer chooses the
normal viewer programs that run on their own in X Window, while
--mode-viewer-tty chooses programs that run on the terminal (on tty).
Most graphical viewers are programs running in X Window, so there aren't
many opportunities to call the tty viewers. But they give the chance to
view the output source; for example, --ps-viewer-tty=less shows the
content of the Postscript output with the pager less.
The X Window viewers are not critical, you can use both --*-viewer and
--*-viewer-tty for them; with --*-viewer-tty the viewer program will not
become independently, it just stays coupled with groffer. But the
program will not run if you specify a terminal program with --*-viewer
because this viewer will stay in background without a chance to reach it.
So you really need --*-viewer-tty for viewers that run on tty.
--auto Equivalent to --mode=auto.
Reset all configuration from previously processed command line
options to the default values. This is useful to wipe out all
former options of the configuration, in $GROFFER_OPT, and restart
option processing using only the rest of the command line.
Set the sequence of modes for auto_mode to the comma separated
list given in the argument. See --mode for details on modes.
Display in the default manner; actually, this means to try the
modes x, ps, and tty in this sequence.
--dvi Equivalent to --mode=dvi.
Choose an X Window viewer program for dvi_mode. This can be a
file name or a program to be searched in $PATH. Known X Window dvi
viewers include xdvi(1) and dvilx(1) In each case, arguments can
be provided additionally.
Choose a program running on the terminal for viewing the output of
dvi_mode. This can be a file name or a program to be searched in
$PATH; arguments can be provided additionally.
Equivalent to --mode=groff.
--html Equivalent to --mode=html.
Choose an X Window web browser program for viewing in html_mode .
It can be the path name of an executable file or a program in
$PATH. In each case, arguments can be provided additionally.
Choose a terminal program for viewing the output of html_mode .
It can be the path name of an executable file or a program in
$PATH; arguments can be provided additionally.
Set the display mode. The following mode values are recognized:
auto Select the automatic determination of the display mode.
The sequence of modes that are tried can be set with the
--default-modes option. Useful for restoring the
default_mode when a different mode was specified before.
dvi Display formatted input in a dvi viewer program. By
default, the formatted input is displayed with the xdvi(1)
groff After the file determination, switch groffer to process the
input like groff(1) would do. This disables the groffer
html Translate the input into html format and display the result
in a web browser program. By default, the existence of a
sequence of standard web browsers is tested, starting with
konqueror(1) and mozilla(1). The text html viewer is
pdf Display formatted input in a PDF (Portable Document Format)
viewer program. By default, the input is formatted by
groff using the Postscript device, then it is transformed
into the PDF file format using gs(1), and finally displayed
either with the xpdf(1) or the acroread(1) program. PDF
has a big advantage because the text is displayed
graphically and is searchable as well. But as the
transformation takes a considerable amount of time, this
mode is not suitable as a default device for the auto_mode
ps Display formatted input in a Postscript viewer program. By
default, the formatted input is displayed with the
text Format in a groff_text_mode and write the result to
standard output without a pager or viewer program. The
text device, latin1 by default, can be chosen with option
tty Format in a groff_text_mode and write the result to
standard output using a text pager program, even when in
www Equivalent to --mode=html.
x Display the formatted input in a native roff viewer. By
default, the formatted input is displayed with the
gxditview(1) program being distributed together with groff.
But the standard X Window tool xditview(1) can also be
chosen with the option --x-viewer. The default resolution
is 75 dpi, but 100 dpi are also possible. The default
groff device for the resolution of 75 dpi is X75-12, for
100 dpi it is X100. The corresponding groff intermediate
output for the actual device is generated and the result is
displayed. For a resolution of 100 dpi, the default width
of the geometry of the display program is chosen to
X Equivalent to --mode=x.
The following modes do not use the groffer viewing features. They
are only interesting for advanced applications.
groff Generate device output with plain groff without using the
special viewing features of groffer. If no device was
specified by option -T the groff default ps is assumed.
source Display the source code of the input without formatting;
equivalent to -Q.
--pdf Equivalent to --mode=pdf.
Choose an X Window viewer program for pdf_mode. This can be a
file name or a program to be searched in $PATH; arguments can be
Choose a terminal viewer program for pdf_mode. This can be a file
name or a program to be searched in $PATH; arguments can be
--ps Equivalent to --mode=ps.
Choose an X Window viewer program for ps_mode. This can be a file
name or a program to be searched in $PATH. Common Postscript
viewers inlude gv(1), ghostview(1), and gs(1), In each case,
arguments can be provided additionally.
Choose a terminal viewer program for ps_mode. This can be a file
name or a program to be searched in $PATH; arguments can be
--text Equivalent to --mode=text.
--tty Equivalent to --mode=tty.
Choose a text pager for mode tty. The standard pager is less(1).
This option is eqivalent to man option --pager=prog. The option
argument can be a file name or a program to be searched in $PATH;
arguments can be provided additionally.
This is equivalent to --tty-viewer because the programs for tty
mode run on a terminal anyway.
--www Equivalent to --mode=html.
Equivalent to --html-viewer.
Equivalent to --html-viewer-tty.
--X | --x
Equivalent to --mode=x.
--X-viewer | --x-viewer prog
Choose an X Window viewer program for x_mode. Suitable viewer
programs are gxditview(1) which is the default and xditview(1).
The argument can be any executable file or a program in $PATH;
arguments can be provided additionally.
--X-viewer-tty | --x-viewer-tty prog
Choose a terminal viewer program for x_mode. The argument can be
any executable file or a program in $PATH; arguments can be
-- Signals the end of option processing; all remaining arguments are
interpreted as filespec parameters.
Besides these, groffer accepts all short options that are valid for the
groff(1) program. All non-groffer options are sent unmodified via grog
to groff. So postprocessors, macro packages, compatibility with
classical troff, and much more can be manually specified.
Options for Development
Enable five debugging informations. The temporary files are kept
and not deleted, the name of the temporary directory and the shell
name for groffer2.sh are printed, the parameters are printed at
several steps of development, and a function stack is output with
function error_user() as well. Neither the function call stack
that is printed at each opening and closing of a function call nor
the landmark information that is printed to determine how far the
program is running are used. This seems to be the most useful
among all debugging options.
Enable all seven debugging informations including the function
call stack and the landmark information.
Enable two debugging information, the printing of the name of the
temporary directory and the keeping of the temporary files.
Enable one debugging information, the landmark information.
Enable one debugging information, the parameters at several steps.
Enable one debugging information, the shell name for groffer2.sh.
Enable one debugging information, the function call stack.
Enable one debugging information, the name of the temporary
Enable one debugging information, the function stack with
This is like --version, but without the output; no viewer is
started. This makes only sense in development.
Just print the argument to standard error. This is good for
Specify the shell under which the groffer2.sh script should be
run. This option overwrites the automatic shell determination of
the program. If the argument shell_program is empty a former
shell option and the automatic shell determination is cancelled
and the default shell is restored. Some shells run considerably
faster than the standard shell.
-Q | --source
Output the roff source code of the input files without further
processing. This is the equivalent --mode=source.
-V This is an advanced option for debugging only. Instead of
displaying the formatted input, a lot of groffer specific
information is printed to standard output:
• the output file name in the temporary directory,
• the display mode of the actual groffer run,
• the display program for viewing the output with its arguments,
• the active parameters from the config files, the arguments in
$GROFFER_OPT, and the arguments of the command line,
• the pipeline that would be run by the groff program, but without
Other useful debugging options are the groff option -Z and --mode=groff.
Options related to groff
All short options of groffer are compatible with the short options of
groff(1). The following of groff options have either an additional
special meaning within groffer or make sense for normal usage.
Because of the special outputting behavior of the groff option -Z groffer
was designed to be switched into groff_mode ; the groffer viewing
features are disabled there. The other groff options do not switch the
mode, but allow to customize the formatting process.
-a This generates an ascii approximation of output in the text_modes.
That could be important when the text pager has problems with
control sequences in tty mode.
Add file as a groff macro file. This is useful in case it cannot
be recognized automatically.
Send the argument opt_or_arg as an option or option argument to
the actual groff postprocessor.
-T | --device devname
This option determines groff's output device. The most important
devices are the text output devices for referring to the different
character sets, such as ascii, utf8, latin1, and others. Each of
these arguments switches groffer into a text_mode using this
device, to mode_tty if the actual mode is not a text_mode. The
following devname arguments are mapped to the corresponding
groffer --mode=devname option: dvi, html, and ps. All X*
arguments are mapped to mode_x. Each other devname argument
switches to mode_groff using this device.
-X is equivalent to groff -X. It displays the groff intermediate
output with gxditview. As the quality is relatively bad this
option is deprecated; use --X instead because the x_mode uses an
X* device for a better display.
-Z | --intermediate-output | --ditroff
Switch into groff_mode and format the input with the groff
intermediate output without postprocessing; see groff_out(5).
This is equivalent to option --ditroff of man, which can be used
All other groff options are supported by groffer, but they are just
transparently transferred to groff without any intervention. The options
that are not explicitly handled by groffer are transparently passed to
groff. Therefore these transparent options are not documented here, but
in groff(1). Due to the automatism in groffer, none of these groff
options should be needed, except for advanced usage.
Options for man pages
Start the apropos(1) command or facility of man(1) for searching
the filespec arguments within all man_page descriptions. Each
filespec argument is taken for search as it is; section specific
parts are not handled, such that 7 groff searches for the two
arguments 7 and groff with a large result; for the filespec
groff.7 nothing will be found. The display differs from the
apropos program by the following concepts:
• construct a groff frame to the output of apropos,
• each filespec argument is searched on its own.
• the restriction by --sections is handled as well,
• wildcard characters are allowed and handled without a further
Show only the apropos descriptions for data documents, these are
the man(7) sections 4, 5, and 7. Direct section declarations are
ignored, wildcards are accepted.
Show only the apropos descriptions for development documents,
these are the man(7) sections 2, 3, and 9. Direct section
declarations are ignored, wildcards are accepted.
Show only the apropos descriptions for documents on programs,
these are the man(7) sections 1, 6, and 8. Direct section
declarations are ignored, wildcards are accepted.
For each filespec argument search all man_pages and display their
description — or say that it is not a man_page. This differs from
man's whatis output by the following concepts
• each retrieved file name is added,
• local files are handled as well,
• the display is framed by a groff output format,
• wildcard characters are allowed without a further option.
The following two options were added to groffer for choosing whether the
file name arguments are interpreted as names for local files or as a
search pattern for man_pages. The default is looking up for local files.
--man Check the non-option command line arguments (filespecs) first on
being man_pages, then whether they represent an existing file. By
default, a filespec is first tested whether it is an existing
--no-man | --local-file
Do not check for man_pages. --local-file is the corresponding man
Disable former calls of --all, --apropos*, and --whatis.
Long options taken over from GNU man
The long options of groffer were synchronized with the long options of
GNU man. All long options of GNU man are recognized, but not all of
these options are important to groffer, so most of them are just ignored.
In the following, the man options that have a special meaning for groffer
The full set of long and short options of the GNU man program can be
passed via the environment variable $MANOPT; see man(1) if your system
has GNU man installed.
--all In searching man_pages, retrieve all suitable documents instead of
-7 | --ascii
In text_modes, display ASCII translation of special characters for
critical environment. This is equivalent to groff -mtty_char; see
Eqivalent to groffer -Z.
Restrict man_page search to file names that have suffix appended
to their section element. For example, in the file name
/usr/share/man/man3/terminfo.3ncurses.gz the man_page extension is
Set the language for man_pages. This has the same effect, but
Print the location of the retrieved files to standard error.
Do not display the location of retrieved files; this resets a
former call to --location. This was added by groffer.
Use the specified search path for retrieving man_pages instead of
the program defaults. If the argument is set to the empty string
"" the search for man_page is disabled.
Set the pager program in tty_mode; default is less. This is
equivalent to --tty-viewer.
Restrict searching for man_pages to the given sections, a colon-
Search for man_pages for the given operating systems; the argument
systems is a comma-separated list.
Eqivalent to --location.
X Window Toolkit Options
The following long options were adapted from the corresponding
X Window Toolkit options. groffer will pass them to the actual viewer
program if it is an X Window program. Otherwise these options are
Unfortunately these options use the old style of a single minus for long
options. For groffer that was changed to the standard with using a
double minus for long options, for example, groffer uses the option
--font for the X Window option -font.
See X(1), X(7), and the documentation on the X Window Toolkit options for
more details on these options and their arguments.
Set the background color of the viewer window.
Specifies the color of the border surrounding the viewer window.
This is equivalent to --background.
Specifies the width in pixels of the border surrounding the viewer
Set the X Window display on which the viewer program shall be
started, see the X Window documentation for the syntax of the
Set the foreground color of the viewer window.
This is equivalent to -foreground.
Set the font used by the viewer window. The argument is an
X Window font name.
This is equivalent to --ft.
Set the geometry of the display window, that means its size and
its starting position. See X(7) for the syntax of the argument.
Set X Window resolution in dpi (dots per inch) in some viewer
programs. The only supported dpi values are 75 and 100.
Actually, the default resolution for groffer is set to 75 dpi.
The resolution also sets the default device in mode x.
--rv Reverse foreground and background color of the viewer window.
Set the title for the viewer window.
--xrm Set X Window resource.
A filespec parameter is an argument that is not an option or option
argument. It means an input source. In groffer, filespec parameters are
a file name or a template for searching man_pages. These input sources
are collected and composed into a single output file such as groff does.
The strange POSIX behavior to regard all arguments behind the first non-
option argument as filespec arguments is ignored. The GNU behavior to
recognize options even when mixed with filespec arguments is used
througout. But, as usual, the double minus argument -- ends the option
handling and interprets all following arguments as filespec arguments; so
the POSIX behavior can be easily adopted.
For the following, it is necessary to know that on each system the
man_pages are sorted according to their content into several sections.
The classical man sections have a single-character name, either a digit
from 1 to 9 or one of the characters n or o. In the following, a stand-
alone character s stands for a classical man section. The internal
precedence of man for searching man_pages with the same name within
several sections goes according to the classical single-character
sequence. On some systems, this single character can be extended by a
following string. But the special groffer man_page facility is based on
the classical single character sections.
Each filespec parameter can have one of the following forms in decreasing
• No filespec parameters means that groffer waits for standard input.
The minus option - stands for standard input, too; it can occur several
• Next a filespec is tested whether it is the path name of an existing
file. Otherwise it is assumed to be a searching pattern for a
• man:name(section) and name(section) search the man page name in
man section section, where section can be any string, but it must exist
in the man system.
• Next some patterns based on the classical man sections are checked.
man:name.s and name.s search for a man page name in man section s if s
is a classical man section mentioned above. Otherwise a man_page named
name.s is searched in the lowest man section .
• Now man:name searches for a man_page in the lowest man_section that has
a document called name.
• The pattern s_name originates from a strange argument parsing of the
man program. If s is a classical man section interpret it as a search
for a man_page called name in man section s, otherwise interpret both s
and name as two independent filespec arguments.
• We are left with the argument name which is not an existing file. So
this searches for the man_page called name in the lowest man_section
that has a document for this name.
Wildcards in filespec arguments are only accepted for --apropos* and
--whatis; for normal display, they are interpreted as characters.
Several file name arguments can be supplied. They are mixed by groff
into a single document. Note that the set of option arguments must fit
to all of these file arguments. So they should have at least the same
style of the groff language.
By default, the groffer program collects all input into a single file,
formats it with the groff program for a certain device, and then chooses
a suitable viewer program. The device and viewer process in groffer is
called a mode. The mode and viewer of a running groffer program is
selected automatically, but the user can also choose it with options.
The modes are selected by option the arguments of --mode=anymode.
Additionally, each of this argument can be specified as an option of its
own, such as --anymode. Most of these modes have a viewer program, which
can be chosen by an option that is constructed like --anymode-viewer.
Several different modes are offered, graphical modes for X Window,
text_modes, and some direct groff_modes for debugging and development.
By default, groffer first tries whether x_mode is possible, then ps_mode,
and finally tty_mode. This mode testing sequence for auto_mode can be
changed by specifying a comma separated list of modes with the option
The searching for man_pages and the decompression of the input are active
in every mode.
Graphical Display Modes
The graphical display modes work mostly in the X Window environment (or
similar implementations within other windowing environments). The
environment variable $DISPLAY and the option --display are used for
specifying the X Window display to be used. If this environment variable
is empty groffer assumes that no X Window is running and changes to a
text_mode. You can change this automatic behavior by the option
Known viewers for the graphical display modes and their standard X Window
viewer progams are
• X Window roff viewers such as gxditview(1) or xditview(1) (in x_mode),
• in a Postscript viewer (ps_mode),
• in a dvi viewer program (dvi_mode),
• in a PDF viewer (pdf_mode),
• in a web browser (html or www_mode).
The pdf_mode has a major advantage — it is the only graphical diplay mode
that allows to search for text within the viewer; this can be a really
important feature. Unfortunately, it takes some time to transform the
input into the PDF format, so it was not chosen as the major mode.
These graphical viewers can be customized by options of the
X Window Toolkit. But the groffer options use a leading double minus
instead of the single minus used by the X Window Toolkit.
There are two modes for text output, mode_text for plain output without a
pager and mode_tty for a text output on a text terminal using some pager
If the variable $DISPLAY is not set or empty, groffer assumes that it
should use tty_mode.
In the actual implementation, the groff output device latin1 is chosen
for text_modes. This can be changed by specifying option -T or --device.
The pager to be used can be specified by one of the options --pager and
--tty-viewer, or by the environment variable $PAGER. If all of this is
not used the less(1) program with the option -r for correctly displaying
control sequences is used as the default pager.
Special Modes for Debugging and Development
These modes use the groffer file determination and decompression. This
is combined into a single input file that is fed directly into groff with
different strategy without the groffer viewing facilities. These modes
are regarded as advanced, they are useful for debugging and development
The source_mode with option -Q and --source just displays the
The groff_mode passes the input to groff using only some suitable options
provided to groffer. This enables the user to save the generated output
into a file or pipe it into another program.
In groff_mode, the option -Z disables post-processing, thus producing the
groff intermediate output. In this mode, the input is formatted, but not
postprocessed; see groff_out(5) for details.
All groff short options are supported by groffer.
MAN PAGE SEARCHING
The default behavior of groffer is to first test whether a file parameter
represents a local file; if it is not an existing file name, it is
assumed to represent a name of a man_page. This behavior can be modified
by the following options.
--man forces to interpret all file parameters as filespecs for searching
disable the man searching; so only local files are displayed.
If neither a local file nor a man_page was retrieved for some file
parameter a warning is issued on standard error, but processing is
The groffer program provides a search facility for man_pages. All long
options, all environment variables, and most of the functionality of the
GNU man(1) program were implemented. This inludes the extended file
names of man_pages, for example, the man_page of groff in man section 7
may be stored under /usr/share/man/man7/groff.7.gz, where /usr/share/man/
is part of the man path, the subdirectory man7 and the file extension .7
refer to the man section 7; .gz shows the compression of the file.
The cat_pages (preformatted man_pages) are intentionally excluded from
the search because groffer is a roff program that wants to format by its
own. With the excellent performance of the actual computers, the
preformatted man_pages aren't necessary any longer.
The algorithm for retrieving I man pages uses five search methods. They
are successively tried until a method works.
• The search path can be manually specified by using the option
--manpath. An empty argument disables the man_page searching. This
overwrites the other methods.
• If this is not available the environment variable $MANPATH is searched.
• If this is empty, the program tries to read it from the environment
• If this does not work a reasonable default path from $PATH is searched
• If this does not work, the manpath(1) program for determining a path of
man directories is tried.
After this, the path elements for the language (locale) and operating
system specific man_pages are added to the man_path; their sequence is
determined automatically. For example, both /usr/share/man/linux/fr and
/usr/share/man/fr/linux for french linux man_pages are found. The
language and operating system names are determined from both environment
variables and command line options.
The locale (language) is determined like in GNU man, that is from highest
to lowest precedence:
The language locale is usually specified in the POSIX 1003.1 based
but the two-letter code in <language> is sufficient for most purposes.
If no man_pages for a complicated locale are found the country part
consisting of the first two characters (without the `_', `.', and `,'
parts) of the locale is searched as well.
If still not found the corresponding man_page in the default language is
used instead. As usual, this default can be specified by one of C or
POSIX. The man_pages in the default language are usually in English.
Several operating systems can be given by appending their names,
separated by a comma. This is then specified by the environment variable
$SYSTEM or by the command line option --systems. The precedence is
similar to the locale case above from highest to lowest precedence: Topic
When searching for man_pages this man_path with the additional language
and system specific directories is used.
The search can further be restricted by limiting it to certain sections.
A single section can be specified within each filespec argument, several
sections as a colon-separated list in command line option --sections or
environment variable $MANSECT. When no section was specified a set of
standard sections is searched until a suitable man_page was found.
Finally, the search can be restricted to a so-called extension. This is
a postfix that acts like a subsection. It can be specified by
--extension or environment variable $EXTENSION.
For further details on man_page searching, see man(1).
The program has a decompression facility. If standard input or a file
that was retrieved from the command line parameters is compressed with a
format that is supported by either gzip(1) or bzip2(1) it is decompressed
on-the-fly. This includes the GNU .gz, .bz2, and the traditional .Z
compression. The program displays the concatenation of all decompressed
input in the sequence that was specified on the command line.
The groffer program supports many system variables, most of them by
courtesy of other programs. All environment variables of groff(1) and
GNU man(1) and some standard system variables are honored.
Native groffer Variables
Store options for a run of groffer. The options specified in this
variable are overridden by the options given on the command line.
The content of this variable is run through the shell builtin
`eval'; so arguments containing white-space or special shell
characters should be quoted. Do not forget to export this
variable, otherwise it does not exist during the run of groffer.
The groffer program is a shell script that is run through /bin/sh, which
can be internally linked to programs like bash(1). The corresponding
system environment is automatically effective. The following variables
have a special meaning for groffer.
If this variable is set this indicates that the X Window system is
running. Testing this variable decides on whether graphical or
text output is generated. This variable should not be changed by
the user carelessly, but it can be used to start the graphical
groffer on a remote X Window terminal. For example, depending on
your system, groffer can be started on the second monitor by the
].groffer:Shell_cmd.prompt_text " "DISPLAY=:0.1 groffer "
$LANG If one of these variables is set (in the above sequence), its
content is interpreted as the locale, the language to be used,
especially when retrieving IR man pages . A locale name is
typically of the form language[_territory[.codeset[@modifier]]],
where language is an ISO 639 language code, territory is an ISO
3166 country code, and codeset is a character set or encoding
identifier like ISO-8859-1 or UTF-8; see setlocale(3). The locale
values C and POSIX stand for the default, i.e. the man_page
directories without a language prefix. This is the same behavior
as when all 3 variables are unset.
$PAGER This variable can be used to set the pager for the tty output.
For example, to disable the use of a pager completely set this
variable to the cat(1) program
].groffer:Shell_cmd.prompt_text " "PAGER=cat groffer " "anything"
$PATH All programs within the groffer shell script are called without a
fixed path. Thus this environment variable determines the set of
programs used within the run of groffer.
The groffer program internally calls groff, so all environment variables
documented in groff(1) are internally used within groffer as well. The
following variable has a direct meaning for the groffer program.
If the value of this variable is an existing, writable directory,
groffer uses it for storing its temporary files, just as groff
Parts of the functionality of the man program were implemented in
groffer; support for all environment variables documented in man(1) was
added to groffer, but the meaning was slightly modified due to the
different approach in groffer; but the user interface is the same. The
man environment variables can be overwritten by options provided with
$MANOPT, which in turn is overwritten by the command line.
Restrict the search for man_pages to files having this extension.
This is overridden by option --extension; see there for details.
This variable contains options as a preset for man(1). As not all
of these are relevant for groffer only the essential parts of its
value are extracted. The options specified in this variable
overwrite the values of the other environment variables that are
specific to man. All options specified in this variable are
overridden by the options given on the command line.
If set, this variable contains the directories in which the
man_page trees are stored. This is overridden by option
If this is a colon separated list of section names, the search for
man_pages is restricted to those manual sections in that order.
This is overridden by option --sections.
If this is set to a comma separated list of names these are
interpreted as man_page trees for different operating systems.
This variable can be overwritten by option --systems; see there
The environment variable $MANROFFSEQ is ignored by groffer because the
necessary preprocessors are determined automatically.
The groffer program can be preconfigured by two configuration files.
System-wide configuration file for groffer.
User-specific configuration file for groffer, where $HOME denotes
the user's home directory. This file is called after the system-
wide configuration file to enable overriding by the user.
The precedence of option delivery is given in the following. The
configuration file in /etc has the lowest precedence; it is overwritten
by the configuration file in the home directory; both configuration files
are overwritten by the environment variable $GROFFER_OPT; everything is
overwritten by the command line.
In the configuration files, arbitrary spaces are allowed at the beginning
of each line, they are just ignored. Apart from that, the lines of the
configuration lines either start with a minus character, all other lines
are interpreted as shell commands.
The lines with the beginning minus are interpreted as groffer options.
This easily allows to set general groffer options that should be used
with any call of groffer. Each line can represent a single short option,
a short option cluster, or a long option with two minus signs, eventually
with an argument. The argument can be appended either after a space
character or an equal sign `='. The argument can be surrounded by
quotes, but this is not necessary. The options from these lines are
collected and prepended to the existing value of $GROFFER_OPT at the end
of each configuration file.
After the transformation of the minus lines, the configuration files have
been transferred into a shell script that is called within groffer using
the `. filename' shell syntax.
It makes sense to use these configuration files for the following tasks:
• Preset command line options, such as choosing a mode or a viewer.
These are written into lines starting with a single or double minus
sign, followed by the option name.
• Preset environment variables recognized by groffer; but do not forget
to export them.
• You can also write a shell function for calling, for example a viewer
program for some mode. Such a function can be fed into a corresponding
• Enter --shell to specify a shell for the run of groffer2.sh. Some
shells run much faster than the standard shell.
As an example, consider the following configuration file in
# groffer configuration file
# groffer options that are used in each call of groffer
--x-viewer='gxditview -geometry 900x1200'
# some shell commands
if test "$DISPLAY" = ""; then
The lines starting with # are command lines. This configuration sets
four groffer options (the lines starting with `-') and runs two shell
commands (the rest of the script). This has the following effects:
• Use ksh as the shell to run the groffer script; if it works it should
be faster than the usual sh.
• Use a text color of DarkBlue in all viewers that support this, such as
• Use a resolution of 100 dpi in all viewers that support this, such as
gxditview. By this, the default device in x mode is set to X100.
• Force gxditview(1) as the x-mode viewer using the geometry option for
setting the width to 900 dpi and the height to 1200 dpi. This geometry
is suitable for a resolution of 100 dpi.
• If the environment variable $DISPLAY is empty set it to localhost:0.0.
That allows to start groffer in the standard X Window display, even
when the program is called from a text console.
• Just for fun, the date of each groffer start is written to the file
mygroffer.log in the home directory.
The usage of groffer is very easy. Usually, it is just called with a
file name or man_page. The following examples, however, show that
groffer has much more fancy capabilities.
"groffer /usr/local/share/doc/groff/meintro.ms.gz" Decompress, format and
display the compressed file meintro.ms.gz in the directory
/usr/local/share/doc/groff, using the standard viewer gxditview as
graphical viewer when in X Window, or the less(1) pager program when not
in X Window.
].groffer:Shell_cmd.prompt_text " "groffer groff" If the file ./groff
exists use it as input. Otherwise interpret the argument as a search for
the man_page named groff in the smallest possible man_section, being
section 1 in this case.
].groffer:Shell_cmd.prompt_text " "groffer man:groff" search for the
man_page of groff even when the file ./groff exists.
].groffer:Shell_cmd.prompt_text " "groffer groff.7"
].groffer:Shell_cmd.prompt_text " "groffer 7 groff" search the man_page
of groff in man_section 7. This section search works only for a digit or
a single character from a small set.
].groffer:Shell_cmd.prompt_text " "groffer fb.modes" If the file
./fb.modes does not exist interpret this as a search for the man_page of
fb.modes. As the extension modes is not a single character in classical
section style the argument is not split to a search for fb.
].groffer:Shell_cmd.prompt_text " "groffer groff ’troff(1)’ man:roff" The
arguments that are not existing files are looked-up as the following
man_pages: groff (automatic search, should be found in man section 1),
troff (in section 1), and roff (in the section with the lowest number,
being 7 in this case). The quotes around ’troff(1)’ are necessary
because the paranthesis are special shell characters; escaping them with
a backslash character \( and \) would be possible, too. The formatted
files are concatenated and displayed in one piece.
].groffer:Shell_cmd.prompt_text " "LANG=de_groffer_--man_--www_--www-
viever=galeon_ls" Retrieve the German man_page (language de) for the ls
program, decompress it, format it to html format (www_mode) and view the
result in the web browser galeon. The option --man guarantees that the
man_page is retrieved, even when a local file ls exists in the actual
].groffer:Shell_cmd.prompt_text " "groffer --source 'man:roff(7)'" Get
the man_page called roff in man section 7, decompress it, and print its
unformatted content, its source code.
].groffer:Shell_cmd.prompt_text " "cat_file.gz_|_groffer_-Z_-mfoo"
Decompress the standard input, send this to groff intermediate output
mode without post-processing (groff option -Z), using macro package by
foo (groff option -m)
].groffer:Shell_cmd.prompt_text " "echo '\f[CB]WOW!' |"
].groffer:Shell_cmd+.prompt_text " "groffer --x --bg red --fg yellow
--geometry 200x100 -" Display the word WOW! in a small window in
constant-width bold font, using color yellow on red background.
The groffer program consists of two shell scripts.
The starting script is the file groffer that is installed in a bin
directory. It is generated from the source file groffer.sh. It is just a
short starting script without any functions such that it can run on very
The main part of the groffer program is the file groffer2.sh that is
installed in the groff library directory. This script can be run under a
different shell by using the groffer option --shell.
Both scripts are compatible with both GNU and POSIX. POSIX compatibility
refers to IEEE P1003.2/D11.2 of September 1991, a very early version of
the POSIX standard that is still freely available in the internet at
Only a restricted set of shell language elements and shell builtins is
used to achieve even compatibility with some Bourne shells that are not
fully POSIX compatible. The groffer shell scripts were tested on many
shells, including the following Bourne shells: ash(1), bash(1), dash(1),
ksh(1), pdksh(1), posh(1), and zsh(1). So it should work on most actual
free and commercial operating systems.
The shell for the run of groffer2.sh can be chosen by the option --shell
on the command line or the environment variable $GROFF_OPT. If you want
to add it to one of the groffer configuration files you must write a line
starting with --shell.
The groffer program provides its own parser for command line arguments
that is compatible to both POSIX getopts(1) and GNU getopt(1). It can
handle option arguments and file names containing white space and a large
set of special characters. The following standard types of options are
• The option consisiting of a single minus - refers to standard input.
• A single minus followed by characters refers to a single character
option or a combination thereof; for example, the groffer short option
combination -Qmfoo is equivalent to -Q -m foo.
• Long options are options with names longer than one character; they are
always preceded by a double minus. An option argument can either go to
the next command line argument or be appended with an equal sign to the
argument; for example, --long=arg is equivalent to --long arg .
• An argument of -- ends option parsing; all further command line
arguments are interpreted as filespec parameters, i.e. file names or
constructs for searching man_pages).
• All command line arguments that are neither options nor option
arguments are interpreted as filespec parameters and stored until
option parsing has finished. For example, the command line
].groffer:Shell_cmd.prompt_text " "groffer file1 -a -o arg file2" is
].groffer:Shell_cmd.prompt_text " "groffer -a -o arg -- file1 file2"
The free mixing of options and filespec parameters follows the GNU
principle. That does not fulfill the strange option behavior of POSIX
that ends option processing as soon as the first non-option argument has
been reached. The end of option processing can be forced by the option
Report bugs to the Include a complete, self-contained example that will
allow the bug to be reproduced, and say which version of groffer you are
You can also use the but you must first subscribe to this list. You can
do that by visiting the
See groff(1) for information on availability.
Details on the options and environment variables available in
groff; all of them can be used with groffer.
Documentation of the groff language.
Internally, groffer tries to guess the groff command line options
from the input using this program.
Documentation on the groff intermediate output (ditroff output).
Documentation on the groff macro files.
man(1) The standard program to display man_pages. The information there
is only useful if it is the man_page for GNU man. Then it
documents the options and environment variables that are supported
ash(1), bash(1), dash(1), ksh(1), pdksh(1), posh(1), sh(1), zsh(1)
Bourne shells that were tested with groffer.
Viewers for groffer's x_mode.
kghostview(1), ggv(1), gv(1), ghostview(1), gs(1)
Viewers for groffer's ps_mode.
kghostview(1), ggv(1), xpdf(1), acroread(1), kpdf(1)
Viewers for groffer's pdf_mode.
kdvi(1), xdvi(1), dvilx(1)
Viewers for groffer's dvi_mode.
konqueror(1), mozilla(1), lynx(1)
Web-browsers for groffer's html or www_mode.
Standard pager program for the tty_mode .
The decompression programs supported by groffer.
This file was written by
Copyright (C) 2001,2002,2004,2005 Free Software Foundation, Inc.
This file is part of groffer, which is part of groff, a free software
project. You can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation,
either version 2, or (at your option) any later version.
You should have received a copy of the GNU General Public License along
with groff, see the files COPYING and LICENSE in the top directory of the
groff source package. Or read the man_page gpl(1). You can also write
to the Free Software Foundation, 51 Franklin St - Fifth Floor, Boston, MA
Groff Version 1.19.2 22 August 2005 GROFFER(1)