pinfo - curses based lynx-style info browser
pinfo [options] [infopage]
This is a program for viewing info files. You specify which page you want to read by pass-
ing it an infopage argument. This argument contains the name of an info page (i.e.
'bash'). The program will then (by default) search for it in ./, /usr/info,
/usr/share/info, and /usr/local/info. The searchpath can be adjusted by INFOPATH environ-
ment variable or in config file. Pinfo will also automaticaly add the suffix '-info',
'-info.Z', At present other suffixes are not recognized, but you can easily add them to
the function openinfo() in filehandling_functions.c.
When the search for info pages fails, man is called with the infopage argument, and it's
output is parsed by pinfo. This means that when you don't have the appropriate info page,
but have a man page instead; the man page will be viewed.
When no infopage is specified, the default `dir' page is shown.
Supported options are
-h, --help - print help information and exit.
-v, --version - print version information and exit.
-m, --manual - uses manual page instead of info by default. (pinfo -m could be used as a
manual pager). Warning: Everything what follows this option is passed to the `man' pro-
gram. Don't be confused if pinfo options, which followed `-m' don't work. When using this
option, pinfo does not parse the info options as ussual! It invokes the man part of pro-
You can also call the man function of pinfo in another way. When pinfo is called with an
argv (the program file name), which contains the word 'man' in it's name, the man func-
tions are enabled automatically.
Previously there was a symlink to pinfo, called pman, but I had to remove it from the dis-
tribution, since it's name was in conflict with some other utility. Anyway, you can feel
free to create such a link if you wish.
-r, --raw-filename - uses a raw filename first (i.e. the name which you specified as
infopage is considered to be a real file in the specified location).
-f, --file synonym for -r.
-a, --apropos - if this is set, apropos is called when no man or info page could be found.
-c, --cut-man-headers - if this is set, man parsing code will try to cut out the repeated
man headers. Use with care. ;)
-s, --squeeze-lines- cut empty lines from manual pages. This option enables autocutting of
every repeated newline in a manual page.
-t, --force-manual-tag-table- forces manual detection of tag table. This allows you to
view info pages, which may be corrupted. (as i.e. version of jed's pages, shipped with
RH5.0). The tag table corruption ussualy appears in that the info links, which you follow,
move you to quite unexpected nodes.
--node=nodename, --node nodename- Go to the node `nodename' of info file.
--rcfile=filename, --rcfile filename- Use alternate rcfile.
--long-manual-links, -l- Use long link names in manuals. On some systems the manual hier-
archy is divided into subsections like `3ncurses', etc, while on other systems all belongs
to section `3'. If this option is what your system is like, feel free to use it.
--clear-at-exit, -x- Clear screen at exit.
The options are handled by GNU getopt, so you can here (as in other programs) abbreviate
the option names to the minimal number of characters by which the options differ.
Warning! If you do not have getopt, these options will not work!
DEFAULT KEYS WHEN BROWSING INFO FILE
Just take a look at the example config file (below), and at the key descriptions. Keys
available in manual viewer differ a bit from the keys available in info viewer.
There is a variable $INFOPATH, which can specify the paths to be searched for info files.
It's format is similar to that of the $PATH variable. An example setting could look like:
etc. Directories are separated by colons.
COLOR AND KEY DEFINITIONS
There are configuration files called ~/.pinforc and [prefix]/etc/pinforc, for local and
global configuration (where prefix is the prefix of the directory, where pinfo is
installed, i.e. /usr/local, or /). Here's an example of such a file; we'll discuss the
# Here are some colour setting.
# Whitespace between the entries is optional.
COL_NORMAL = COLOR_WHITE, COLOR_BLACK, NO_BOLD, NO_BLINK
COL_MENUSELECTED = COLOR_RED, COLOR_BLACK, BOLD, NO_BLINK
# Here are some keybindings as well...
KEY_TOTALSEARCH_1 = 's'
KEY_TOTALSEARCH_2 = 'S'
KEY_SEARCH_1 = '/'
KEY_SEARCH_2 = '.'
# 12 is a code for ctrl+l
# Some options, explained in the man page
As you can see, the format is simple. First I'll explain the color definitions. First you
must enter a color name (all available color names are present in the example, and they're
self explanatory, I think. There is also a special color COLOR_DEFAULT, which stands for
transparency). Then you enter the foreground color, and the background color. The BOLD
attribute means that we want the foreground color to be highlighted. (i.e. lightblue,
lightgreen). BLINK attribute is the blinking attribute, or highlighted background in some
Now let's move to the key definitions. Here we first put a key name (again all keys are
present in the example); then we enter it's value -- either surrounded by apostrophes, or
a keycode number (like in KEY_REFRESH_1), or its mnemonic code name if it's a special key
(like i.e. in KEY_FOLLOWLINK_1).
If you wish to specify key by code value, use the supplied program 'testkey' to obtain the
needed value. It mainly is a feature, when you want to add some ctrl+letter keybindings,
For each function you can bind two keys, i.e. you could bind both Enter and Cursor Right
to the FollowLink-function. As you can see in the example above, the two key names are
KEY_FOLLOWLINK_1 and KEY_FOLLOWLINK_2.
Here's an explanation of the key names:
Key for searching through all nodes of info file.
Alternate key for searching through all nodes of info file.
Key for searching through current node (or manual).
Alternate key for searching through current node (or manual).
Key for repeating the last search.
Alternate key for repeating the last search.
Key for explicitly going to a node (by specifing it's name).
Alternate key for explicitly going to a node (by specifing it's name).
Key for going to a node marked as 'Prev' in the header. In manpage viewer
this goes to the previous man section.
Alternate key for going to a node marked as 'Prev' in the header. In man-
page viewer this goest to the previous man section.
Key for going to a node marked as 'Next' in the header. In manpage viewer
this goes to the next man section.
Alternate key for going to a node marked as 'Next' in the header. In man-
page viewer this goes to the next man section.
KEY_UP_1 Key for scrolling text one line up.
KEY_UP_2 Alternate key for scrolling text one line up.
KEY_END_1 Key for going to the end of the node.
KEY_END_2 Alternate key for going to the end of the node.
Key for going one page down in the viewed node.
Alternate key for going one page down in the viewed node.
Key for going to the next node when you're at the end of node (default is
zero -- turned off).
Alternate key for going to the next node when you're at the end of node
(default is space, as for pgdn_2).
Key for going to the beginning of the node.
Alternate key for going to the beginning of the node.
Key for going one page up in the viewed node.
Alternate key for going one page up in the viewed node.
Key for going to the `up' node, when being at the top of node. (Default
value is zero -- turned off).
Alternate key for going to the `up' node, when being at the top of node.
(Default value is `-', as for pgup_2).
Key for scrolling the text down one line.
Alternate key for scrolling the text down one line.
KEY_TOP_1 Key for going to the top (first) node.
KEY_TOP_2 Alternate key for going to the top (first) node.
Key for going back (in the history of viewed nodes).
Alternate key for going back (in the history of viewed nodes).
Key for following a hypertext link.
Alternate key for following a hypertext link.
Key for refreshing the screen (hardcoded is the ^L value).
Alternate key for refreshing the screen.
Key for calling a shell command, and passing the viewed node to the stdin
of that command.
Alternate key for calling a shell command, and passing the viewed node to
the stdin of that command.
Key for exiting the program.
Alternate key for exiting the program.
Key for going to a specified line in file.
Alternate key for going to a specified line in file.
Key for printing viewed node or man page.
Alternate key for printing viewed node or man page.
The special mnemonics for keys (which are defined at present) are:
KEY_END [Note: this works probably ONLY with linux ncurses]
- this assigns the key value to a ctrl+c combination. c may be any letter
- this assigns the key value to a alt+c combination. c may be any letter
you wish. If alt key won't work, you may use ESC+key combination.
'c' - this means a printable character c. The syntax is just like in C/C++
[number] - you can also specify key as it's code number. It is useful e.g. when
specifing control keys, and some nonstandard keys. A numerical value of
zero turns given keybinding off.
See manual page for curs_getch (3x) for description of their meaning.
Warning! Try not to create some serious keybinding conflicts!
The options in the last part of the example configuration file should be fairly self-
explanatory. The variables that can be set to true or false do the same things as the
commandline arguments with the same names.
MANUAL If this is set to true the default is to first check for a man page,
instead of a texinfo file.
If set to true, then pinfo tries to cut off the repeated headers through-
out man pages.
If set to true, then pinfo tries to cut off the repeated newlines (i.e.
it will shorten each set of consecutive newlines to one newline).
If set to true, the file argument is taken to be the name of a file in
the current working directory, i.e. the directories in INFOPATH will only
be searched if a file with this name is not in the working directory.
APROPOS If set to true, apropos is called if no info or man page is found.
If set to true , pinfo will not attempt to display texinfo pages without
Set this to the program you want to use to follow http links in docu-
FTPVIEWER Set this to the program you want to use to follow ftp links in documents.
Set this to your favourite email program, and it will be started if you
follow an email link in a document.
Utility, which you use for printing. I.e. `lpr'. If you don't use any,
you may also try something like `cat >/dev/lp1', or sth. ;)
MANLINKS This specifies the section names, which may be referenced in your man
pages (i.e. Xtoolkit man pages match the section 3Xt (see for example
XtVaCreateWidget) manpage), Xlib function pages match section 3X11, etc.
Such extensions may not be recognized by default, so it is a good idea to
INFOPATH This allows you to override the default searchpath for info pages. The
paths should be separated by colons.
This specifies the options, which should be passed to the `man' program.
(see man(1) for description of what they're like).
Pinfo allows you to redirect the stderr output of called programms. For
example if you don't want to see man's error messages about manual page
formatting, you can use STDER-REDIRECTION="2> /dev/null". This is the
This is another true/false option, which decides whether your system sup-
ports long manual section names, or not. (i.e. "3ncurses" instead of
This decides, whether you want to convert 0xb7 chars to `o', or not. For
example for iso-8859-2 fonts this makes man's list marks a bit nicer ;)
(look for example at perl's man page, to see how those marks look like).
This decides whether you want to use quit confirmation on exit, or not.
This yes/no option determines the default answer to the QUIT-CONFIRMATION
dialog. (default answer is when you press a key, that does not match the
This true/false option determines if you want to have your screen cleared
at exit, or no.
This is an option, through which you may pass to pinfo regexps, which
should be highlighted when working with document. Warning! This may turn
very slow if you use it without care!
SAFE-USER This option is used to pass the name of user, to which suid when pinfo is
run with root privileges.
This option is used to pass the name of group, to which suid when pinfo
is run with root privileges.
Pinfo implements general features of gnu gettext library (the thing, which you need to see
national messages ;). But it is not the end. Pinfo allows you to use national info pages!
You only need to put them to your info directory, into a subdirectory, which is called
This program is distributed under the terms of GPL.
Please send bug reports to the author.
Przemek Borys <email@example.com>
If that E-mail address wont work (since the machine where it is being handled is a bit
damaged lately), you can try firstname.lastname@example.org, or email@example.com-
There was also a lot of other people, who contributed to this code. See the AUTHORS file.
The author would like to read some comments and suggestions from you, if any.
01 Dec 2001 PINFO(1)