Qman turns man pages into something you can click through
A more modern man page viewer for our terminals
At a glance
- What is it?
- Qman is a C program that renders Unix manual pages with hyperlinks, a per page table of contents, incremental search, apropos and whatis pages, keyboard mappings borrowed from less and INI style configuration, and it reads mandb, mandoc, FreeBSD and macOS manual databases. It suits someone who wants to read documentation rather than scroll past it, and it is a viewer, not a replacement for the man pages themselves.
- Who is it for?
- Adopt Qman when you read a lot of manual pages and want links, a table of contents and search rather than a wall of text, and when you are willing to install a small C program and point it at your existing manual database. Do not adopt it expecting the manual pages themselves to change, since it is a viewer over what is already installed, and note that custom configuration files may need updating after a release.
- Can I use it commercially?
- Yes. BSD-2-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 47 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The premise is that man has not changed since the early days
The rationale section makes the argument in a few sentences. Unix manual pages are lovely, they are concise, well-written, complete and downright useful, but the standard way of accessing them from the command line has not changed since the early days. Qman aims to change that, and the features list is the shape of the change. It is a modern, full-featured manual page viewer featuring hyperlinks, web browser like navigation, a table of contents for each page, incremental search, on-line help and more, and it also strives to be fast and tiny so that it can be used everywhere. The last clause is the design constraint that explains everything else. For this reason it has been written in plain C and has only minimal dependencies, which is why the build is a meson.build rather than a package manager manifest and why the feature list reads like a wish list rather than a list of things a modern toolkit makes free.
What you get on top of the plain man experience
The feature list is long and each entry is a specific answer to a specific irritation. There is an index page displaying all manual pages available on the system, sorted alphabetically and organised by section, and pages for apropos and whatis results. Hyperlinks go to other manual pages, to URLs and email addresses, to files or directories in the local filesystem, and there are in-page hyperlinks too. Each page carries a table of contents. There is incremental search for manual pages, which is the find-in-page search, and incremental free page text search, which is a full text search across the manual set, and those are two different things. Command-line options are similar to those of man, most importantly -k and -f, keyboard mappings are similar to those of less, there is mouse support, navigation history, on-line help, and everything is configurable using INI-style config files, with the manual page itself shipped in the repository.
Support for four manual page systems, added in 1.5.0
The newest version entry is the one that changes what the program can be used for. Version 1.5.0 introduces support for several different manual page systems. Historically Qman only supported mandb, but that is no longer the case, and the program now supports mandb, which covers most Linux distributions, mandoc, used by Void Linux and Haiku, FreeBSD, and macOS. That is a meaningful widening. Before 1.5.0 the program was effectively a Linux tool that happened to be written in portable C, and the platform work in the CI matrix did not translate into reading other systems' manual databases. Now the format of the underlying database is a supported axis, and the same viewer works across a Linux workstation, a BSD system and a Mac. The remaining 1.5.0 changes are smaller: hyperlinks to files and directories in the local filesystem with a new viewer_path config option to choose the program that opens them, a new [capabilities] config section for disabling non-core features, three new themes, reorganised and extended documentation, and better error messages for misconfiguration or a missing manual pages database.
Configuration is INI files, and upgrades can move options
The configuration story is documented in the config/ directory and it has one sharp edge that the README calls out in a note. Users with custom config files may need to update them after a new release, and in version 1.5.0 the config options sections_on_top, hyphenate and justify have been moved to the [capabilities] section. The reason is the new capabilities mechanism, which lets users disable several non-core program features. The model is therefore two layered: a [capabilities] section that turns features off, and the rest of the file that tunes them. For a user with a hand-written config, an upgrade can silently change behaviour, since an option that moved to a section is no longer read from where it was, and the effect is a setting that reverts to its default rather than an error. The advice in the note is to consult the manual page and the documentation in config/README.md. The themes follow the same structure, with adwaita and adwaita-light designed to match dark and light Adwaita desktops, and modernity-light a generic light theme to complement modernity.
Building it and the documentation layout
The get started section is a list of documents rather than a command, and each of them points at a different need. There are generic build instructions in doc/BUILDING.md that work for most Linux distros, operating system specific instructions in doc/OS_SPECIFIC.md, the manual itself in man/qman.1.md, troubleshooting notes in doc/TROUBLESHOOTING.md, a list of packages in doc/PACKAGES.md, the configuration and theme files in the config/ directory, and the contributing guide in doc/CONTRIBUTING.md. The repository root holds the Meson build with meson.build and meson_options.txt, the src/ directory, the man/ directory, the config/ directory, doc/, screenshots/, a bump.sh script for version bumps and a git-hooks/ directory. The split between BUILDING.md and OS_SPECIFIC.md is the practical one, since the generic path covers the common case and the OS specific document covers the platform quirks for each of the systems the CI matrix touches. The documentation on its own is unusually complete for a small terminal program, which fits a project whose whole premise is that reading documentation well matters.
The project status is stated plainly
The project status section is short and says what it means. All basic functionality has been completed, the software has been in use since late 2023 and is considered stable, and bugs of course still happen, with an issue tracker link for reporting them. The README carries a version line reading Version 1.5.1-5-g972486b, which is a git describe string rather than a plain tag, so the version you see reflects how far past the 1.5.1 release the working tree is. The release history shows v1.5.1 on 2025-11-17, v1.5.0 on 2025-08-11 and v1.4.3 on 2025-08-04, so the cadence is steady rather than fast, with the two 1.5 releases six weeks apart and the 1.4.3 release a week before the 1.5.0. The licence is BSD-2-Clause. The last push was on 2026-09-06, so the tree is still being worked on even though the release tags come less often than the commits.
Editorial conclusion
Adopt Qman when you read a lot of manual pages and want links, a table of contents and search rather than a wall of text, and when you are willing to install a small C program and point it at your existing manual database. Do not adopt it expecting the manual pages themselves to change, since it is a viewer over what is already installed, and note that custom configuration files may need updating after a release. Verify first which manual page system your distribution uses, mandb, mandoc, FreeBSD or macOS, since the support list changed in version 1.5.0, that your terminal supports what the viewer needs, and that the configuration options you rely on are still where you left them after an upgrade.
Frequently asked questions
Which manual page systems does Qman support?
Since version 1.5.0 it supports mandb, which covers most Linux distributions, mandoc, used by Void Linux and Haiku, FreeBSD and macOS. Historically it only supported mandb, which is why support for the others is listed as a new feature of that release.
What does Qman add to reading a man page?
Hyperlinks to other manual pages, to URLs and email addresses, to files and directories in the local filesystem, and in-page links, a table of contents per page, incremental search, a full text search across manual pages, an index page of everything installed sorted by section, apropos and whatis pages, less-like key bindings, mouse support, navigation history and on-line help.
How do I install and build Qman?
The generic build instructions in doc/BUILDING.md work for most Linux distros, and doc/OS_SPECIFIC.md covers the platform specific cases. The project uses Meson with meson.build and meson_options.txt at the repository root, and is written in plain C with only minimal dependencies. Packages are listed in doc/PACKAGES.md.
Do I need to change my Qman config after an upgrade?
Possibly. The README notes that users with custom config files may need to update them after a new release, and specifically that in version 1.5.0 the options sections_on_top, hyphenate and justify moved into the new [capabilities] section, which is where non-core features can now be disabled.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/plp13-qman)Was this useful?