four ways, no clone
install
The whole payload is about 50 KB. Nothing needs a repo left on disk.
# anywhere — POSIX sh, so it runs before you know anything about the machine.
# macOS · Linux — Installs the command; setting up your shell stays an explicit second step.
# anywhere with Node — Node is only the delivery mechanism — nothing runs on install.
# Windows — The native Windows channel — real cmdlets, not a folder of loose files.
Run it with --dry-run first. It prints every single action it
would take and changes nothing — including the one line it would append to your
.zshrc. Read that before you trust it.
pick what you want
Everything optional sits behind a flag. A plain furnizsh install stays minimal.
| Flag | Default | What it does |
|---|---|---|
| --theme <name> | neon | neon · catppuccin · gruvbox · tokyonight |
| --tools <set> | core | core · extended · all — see below |
| --dry-run | off | print every action, change nothing |
| --yes | off | don't prompt — for non-interactive installs |
| --no-font | off | skip the JetBrains Mono Nerd Font |
| --no-tmux | off | skip the tmux config |
| --no-extras | off | skip the network-dependent commands |
| --no-claude | off | skip the optional Claude Code extras |
| --no-chsh | off | don't change your login shell |
| Tool set | Installs |
|---|---|
| core | starship · fzf · zoxide · eza · bat · fd · git-delta · lazygit |
| extended | core, plus ripgrep · tmux · jq · direnv · tldr · btop |
| all | extended, plus atuin · yq · httpie · dust · procs · gh |
PowerShell takes the same options in its own spelling:
-Theme, -Tools, -DryRun, -Yes,
-NoFont, -NoExtras, -NoTerminal.
platforms
| Platform | Terminal | Shell | Commands | Scripts |
|---|---|---|---|---|
| macOS | Ghostty | zsh + Oh My Zsh | 24 | install.sh · uninstall.sh · doctor.sh |
| Linux | Ghostty | zsh + Oh My Zsh | 24 | install.sh · uninstall.sh · doctor.sh |
| Windows + WSL2 | Ghostty | zsh + Oh My Zsh | 24 | install.sh · uninstall.sh · doctor.sh |
| Windows native | Windows Terminal | PowerShell + PSReadLine | 24 | install.ps1 · uninstall.ps1 · doctor.ps1 |
Ghostty has no native Windows build — it ships macOS and Linux only. On Windows you get either the full thing through WSL2, or the same tool stack and all 24 commands in PowerShell with Windows Terminal and a matching colour scheme. Both routes are written up.
Windows is untested. CI runs the whole install, verify, re-run and uninstall cycle on Ubuntu, Fedora and Arch, and lints the PowerShell with PSScriptAnalyzer — but nothing executes those scripts on an actual Windows machine yet. Treat the native route as unverified until that changes.
questions
Does this work with fish shell?
No. furnizsh targets zsh on macOS and Linux, and PowerShell on Windows. The mascot is a deep-sea anglerfish, not an endorsement of the Friendly Interactive Shell. Most of the config is Oh My Zsh plugins and zsh functions, which have no fish equivalent.
Will it break my existing .zshrc?
No. It appends one marker-guarded source line and writes the
actual config to ~/.config/furnizsh/. Your PATH exports, work
tooling and aliases are never read, moved or rewritten. Everything it does
replace is backed up to ~/.furnizsh-backup/<timestamp>/
first, and furnizsh uninstall restores it — verified
byte-for-byte in CI.
I already have my own dotfiles. Can I take just the bits I want?
Yes, and that's a reasonable way to use it. SETUP.md is the manual version of everything the installer does, step by step, so you can lift the Ghostty config, the Starship preset or just the helper functions.
Why is it called furnizsh?
It's "furnish" with zsh spliced into the middle — you pronounce
it the same. To furnish is to fit out a space so it's worth living in, which
is what the tool does to a bare shell.
Do I have to use Ghostty?
No. The shell config, tools, prompt and all 24 commands work in any terminal
— you just lose the specific theme. Alacritty, Kitty, WezTerm and even
Terminal.app all work; set the font to
JetBrainsMono Nerd Font Mono and pick a dark theme.
Why are the icons all boxes?
The Nerd Font isn't active. Check it installed, then set your terminal's font
to JetBrainsMono Nerd Font Mono exactly — plain "JetBrains Mono"
is a different, icon-free font. fzdoctor checks this for you.
Something's broken. Where do I start?
Run fzdoctor. It checks every tool, config file, plugin and font
and prints the exact fix command for anything missing. Include its output if
you open an issue.
Is it safe to run twice?
Yes — it's idempotent. It compares against what's already installed and only changes what actually drifted. Rerunning is also how you apply an update.