Change your manpager
How to change your manpaging utility in Linux/Unix
by spitemim, 2021-11-18
When opening manpages with man
on a Linux/Unix system, the manpage is
printed and fed into a line viewer such as less (1)
. However, the
utility used to open and view manpages can be easily changed by
exporting the $MANPAGER
environment variable to something else. Other
possible utilities include batcat
, vim
, and even gedit or Firefox
just for fun.
(NOTE: do not use gedit or Firefox as your primary manpager.)
Setting the \$MANPAGER variable
When a manpage is opened using man
, it is converted to a readable
format and sent to the manpager via stdin. The $MANPAGER
variable
defines where the manpage is sent (by default, it is piped to less
).
It should contain a shell command that takes input from stdin and does
something with it.
The following examples are some useful or interesting ways to use this
functionality. Some are original, some aren’t. To set one of these as
your default manpager, you can copy the line to your shell’s init file
(e.g: .bashrc
, .zshrc
)
# use batcat as manpager export MANPAGER="sh -c 'col -bx | batcat -l man -p'" # use vim as manpager # I found this one in distrotube's .zshrc. link export MANPAGER='/bin/bash -c "vim -MRn -c \"set buftype=nofile showtabline=0 ft=man ts=8 nomod nolist norelativenumber nonu noma\" -c \"normal L\" -c \"nmap q :qa<CR>>"</dev/tty <(col -b)"' # gedit export MANPAGER="sh -c 'col -bx | gedit -s -'" # firefox export MANPAGER="sh -c 'col -bx > /tmp/manpage; firefox -new-tab /tmp/manpage; rm -rf /tmp/manpage'" # zenity export MANPAGER="sh -c 'col -bx | xargs -0 -I \"%\" | zenity --info --window-icon=\"question\" --width=700 --height=900 --text=\"%\"'" # print manpages to stdout export MANPAGER="cat" # read messages using text-to-speech export MANPAGER="sh -c 'col -bx | espeak'" # print manpages in rainbow export MANPAGER="sh -c 'col -bx | lolcat'"