#! /bin/sh ## ## Usage: %PROG% [OPTIONS] [PAGE[(SECTION)]] ## ## Manual page viewer ## ## Options: ## -c Center the window ## -f COLOUR Foreground colour ## -b COLOUR Background colour ## -g GEOMETRY Window size (e.g. 800x600) ## -s FONT Message font or style (e.g. 'serif 14') ## # trm 2006-11-16 PROG=$(basename $0) TMPFILE=${TMPDIR:-/tmp}/$$.$PROG EX_USAGE=64 MSG_TITLE=$PROG MSG_FONT=monospace MSG_FG= MSG_BG= MSG_GEOM= trap 'rm -f "$TMPFILE"' EXIT invocationError () { echo "Try '$PROG -h'" >&2 exit $EX_USAGE } showUsage () { sed -n '/^##/s/^## //p' $0 | sed -e "s#%PROG%#${PROG}#g" exit } while getopts 'b:cf:g:hs:' Option do case $Option in b) MSG_BG=$OPTARG ;; c) CENTER=yes ;; f) MSG_FG=$OPTARG ;; g) MSG_GEOM=$OPTARG ;; h) showUsage ;; s) MSG_FONT=$OPTARG ;; *) invocationError ;; esac done shift $(($OPTIND - 1)) [ $# -gt 1 ] && invocationError page=$1 [ -z "$page" ] && cat <<-EOF > "$TMPFILE" Type the name of a manual page into the box below, then press ENTER. To specify a manual from a particular section, give the section in backets. For example: printf(3) To quit, leave the box empty or press ESC. EOF while : do if [ -n "$page" ] then i=$(expr index "$page" '\(') if [ "$i" -gt 0 ] then temp=${page#*(} sect=${temp%)*} page=${page%(*} else sect= fi man $sect "$page" 2>&1 | col -b > "$TMPFILE" fi page=$(gxmessage ${MSG_FONT:+-fn "$MSG_FONT"} \ ${MSG_FG:+-fg "$MSG_FG"} \ ${MSG_BG:+-bg "$MSG_BG"} \ ${MSG_GEOM:+-geom "$MSG_GEOM"} \ ${CENTER:+-center} \ -title "$MSG_TITLE" \ -entrytext "$word" \ -buttons "" \ -file "$TMPFILE") [ $? -eq 1 -o -z "$page" ] && exit done