Repository navigation
Release Notes - Version 0.9.0
This release is about how mandible looks and how you move around in it. There is now a settings screen and a set of colour themes, search has been rebuilt, both panes can be sorted, long lines can wrap or scroll sideways, and help pages read more like the tool meant them to. Big help pages are also much faster.
Install
Homebrew (macOS or Linux)
brew install as-foss/mandible/mandibleFedora / EPEL (COPR repository)
sudo dnf copr enable as-foss/mandible
sudo dnf install mandibleNix
nix run github:AS-FOSS/mandibleCargo
cargo binstall mandible
cargo install mandibleDebian and Ubuntu: the signed apt repository carries every released version for amd64 and arm64, with setup instructions.
Or download a binary below. Verify with the accompanying .sha256.
Settings and colour themes
Press ? and then Tab to open the new settings tab. Pick a setting with ↑/↓ and change it with ←/→. A change shows on screen straight away and is saved to ~/.config/mandible/config.toml. Only the line you changed is touched, so your own comments and other settings stay where they are.
- Seven built-in themes:
default,light(for light terminals),high-contrast,gruvbox-style,nord-style,dracula-styleandcatppuccin-style. - Your own colours: choose
customand set each of the seven colours yourself. Step through the 256 terminal colours with←/→, or pressEnterand type a number or a colour name. Each row shows a sample of what that colour paints. - Other settings: open in the tool's own
--helpview, scroll long lines sideways, show long descriptions as a preview, use ASCII glyphs, and the starting sort order for flags and commands. NO_COLORandMANDIBLE_ASCIIstill win over the file. A setting they decide is shown dimmed, with the variable's name next to it.- A mistake in
config.tomlcosts only that one line. Everything else still applies, and the footer names the line until you press a key. mandible mandiblenow uses your theme's colours too.
Search, rebuilt
- Every word, in any order.
no verifyfinds--no-verify,sizefinds--blocksize, and a dash is just a character, so--no-squashfinds--[no-]squash. - A suggestion as you type. A dim hint shows where
Enterwill land.Tabtakes it. nandpstep through the matching flags on the page, wrapping at the ends.- Matches are marked in both panes. Matching commands are bold, each one shows how many of its flags matched (
3 found), and matching rows on the page get a bar in the margin with the matched letters underlined. - A better first jump.
Entergoes to the best match: an exact name first, then names that start with what you typed./rebasenow lands ongit rebase. - When nothing matches, the list says
No matches for "…"and the cursor goes back to where it was. Escin the box cancels the search and returns you to the row you started from./reopens the box with your last search.
Sort either pane
Press s to sort the focused pane by name. On a command's page it cycles through the tool's own order, A–Z within each section, and A–Z over the whole page. The commands list switches between the tool's order and A–Z. The pane title shows which order you are in.
Wrap, or scroll sideways
Press w to switch line wrapping off and on in the view on screen. With wrapping off, each line stays on one row, ←/→ scroll sideways, ◀ and ▶ mark lines that continue off screen, and Esc goes back to the first column. Section headings keep their full width however far you scroll.
Moving around
PgUp/PgDnmove ten rows in the commands list and a screenful on the page.Home/Endjump to the top or bottom. This works in the parsed and the raw view.- The
?pop-up fits its content, uses two columns on a wide terminal, and scrolls when the terminal is short. ▲and▼on the page border tell you there is more above or below.- Changing wrap or resizing the terminal keeps the same line at the top of the page.
- Command keys work with Caps Lock on.
- A terminal smaller than 30×10 shows a short message asking for more room, instead of a broken screen.
Pages that read better
Several spellings stay readable. A flag with more than one short or long name keeps the first pair on the first line and lists the others below it, after a dim or.
Narrow terminals get a man-page like layout. When a description would get squeezed below 20 columns, the flag goes on its own line with its description indented underneath.
USAGE is easier to scan. The command path is highlighted at the start of each usage line, and a form that wraps continues indented, so you can see where one form ends and the next begins. The selected row in the commands list is now a full-width bar.
Examples get their own section. A tool's example lines are collected into an EXAMPLES section at the end of the page, printed exactly as written (tar, jq, bpftrace, gh pr list and more).
Long descriptions don't push the flags away. A description that would fill more than half the page shows as a short preview at the top, with the full text as the last section.
Clear notices. Messages from mandible itself, as opposed to the tool's own help text, are short and drawn in the warning colour when something went wrong. For example, when mandible will not run a name it could not confirm is a real command:
- A page with nothing beyond its summary says so and tells you to press
tto see what the command printed. - A command whose help is still being read says
Reading this command's help…instead of showing a blank page. - A description that only repeats the summary line, as on most
dockercommands, is no longer shown twice. - Summaries in the commands list show only when they have room. A long name hides its own summary instead of cutting it to a fragment.
Faster on big help pages
- Searching a page with thousands of flags, like
mandible ffplay, used to take about a second per key. It now takes under a tenth of a second. - Pages with thousands of flags scroll without lag, and an idle screen no longer redraws itself ten times a second.
- Reloading with
ror opening the raw view withtno longer freezes the screen while a slow tool answers. - The command under the cursor is read first, ahead of the background walk.
More reliable reading
- Each command gets 30 seconds to print its help, up from 10. If it takes longer, the page says so and
rtries again with two minutes.--doctorand--reporttake--no-timeoutto wait as long as needed. - A slow command shows the same page on every launch.
git filter-branchused to show different pages on different runs. - Quitting mandible while it is reading a tool's help no longer leaves that tool running in the background.
rreloads what you are looking at: a command and its subcommands, or the whole tool from its root page.- A row opened before the background walk reached it no longer stays
⋯ loadingfor good.
Parser fixes
krb5-configlists its library names under theLIBRARIESoperand instead of under--libs.- A usage line that names another program, like
bpftrace [options] filenameundertcpretrans.bt, is shown as printed. - A value written
--log-file=[PATH]is read as an optional valuePATH. - Long value names and group headings wrap inside a narrow page instead of running past the border.
Changes to know about
- The raw view (
t) now folds long lines to the pane by default. Sethorizontal_scroll = trueinconfig.tomlto get sideways scrolling back. That one setting now covers both views. - The
?pop-up closes withEscor?.
The full list of changes is in the CHANGELOG.









