furnizsh

24 commands

the ones you'll use every day

Same names and same behaviour in zsh and PowerShell. Every one prints a usage line on bad input and degrades gracefully when a tool is missing.

[ start here ]

cheatsheet / chs

Forgot what you installed? Prints the whole reference in your terminal — every plugin, tool, command and keybind. --comp for the exhaustive version.

[ when something breaks ]

fzdoctor

Checks every tool, config file, plugin and font, then prints ✓ or ✗ for each — with the exact command to fix anything missing.

[ the look ]

theme [name]

Lists the four themes, or switches Ghostty, Starship and lazygit together in one go.

[ staying current ]

fzupdate

Updates furnizsh using whichever channel you installed from — the bootstrap script, Homebrew, npm or a git checkout. Checks the current release first and stops early if you are already on it. Also available as furnizsh update in any shell.

core

Always installed.

CommandWhat it does
mkcd <dir>Create a directory, including parents, and cd into it.
up [n]Go up n directory levels. up 3 beats cd ../../..
serve [port]Static HTTP server rooted here. Prints the LAN URL so you can open it on your phone.
portsEverything currently listening, with port, PID and process name.
killport <port>Kill whatever is holding a port — the other half of "port 3000 is already in use".
fkillFuzzy-pick one or more processes from an fzf list and kill them.
fe [query]Fuzzy-pick a file with a syntax-highlighted preview, open it in $EDITOR.
bak <file>Timestamped backup copy alongside the original. A five-second undo.
sizeof [dir]The 20 biggest items in a directory, largest first. Why your disk is full.
gpruneDelete local branches already merged into the default branch. Lists them and asks first.
paths$PATH one entry per line, with duplicates and dead directories flagged.
reloadRestart the shell in place after editing config.

gprune is deliberately not called gclean — Oh My Zsh's git plugin already defines that as git clean, and shadowing it would silently replace a destructive command with an unrelated one.

extras

These call an external service, which is why they're separable — install with --no-extras to leave them out. Nothing private is sent: the queries are command names, city names and language names. note writes locally only.

CommandWhat it does
weather [city]Forecast in the terminal. No argument geolocates by IP.
cheat <cmd>Practical examples for any CLI tool — cheat tar, cheat git/rebase.
qr <text>Renders a QR code in the terminal. Handy for getting a serve URL onto your phone.
gitignore <langs>Fetch a .gitignore. -w writes the file instead of printing.
note [text]Timestamped scratch notes in one local file. -l lists the last 20.
timer <mins>Counts down in place, then fires a desktop notification.
sysinfoOS, CPU, memory, uptime, disk, shell, terminal and the active theme.
dockercleanReclaim docker disk space. Named volumes are never touched — your data is safe.

what the tools give you

Beyond the commands above, the installed tools replace things you already type.

ToolReplacesYou type
ezalsls, ll, lt — icons, git status, tree view
batcatcat file.ts — syntax highlighted, line numbers
fdfindfd -e ts, fd -t d — saner defaults, much faster
zoxidecdz proj — jumps to the directory you actually use
fzfctrl+rctrl+r history, ctrl+t files, alt+c cd
deltagit pagerautomatic on git diff — syntax-highlighted, navigable
lazygitgit CLIlg — stage, commit, push, rebase, all in a TUI

Plus Oh My Zsh with 17 plugins — ghost-text suggestions from history, live valid/invalid command colouring, ESC ESC to prepend sudo, x anything.tar.gz to extract. Full list in the cheatsheet.