Omarchy Apps Sponsor

Omarchy shell guide

omarchy-zsh on Omarchy

Zero-config Zsh with Omarchy's aliases — installed the safe way, not with chsh.

Reviewed 2026-10-19 · independent editorial guide

Short answer

Install omarchy-zsh with omarchy pkg add omarchy-zsh, then run omarchy-setup-zsh. Keep bash as your login shell — the setup auto-launches zsh from it. Do not use chsh: it breaks Omarchy's session startup.

omarchy-zsh: How to use Omarchy’s Zsh setup (install, keybindings, aliases)

omarchy-zsh is Omarchy’s zero-config Zsh — it layers the distro’s shared shell config (aliases, functions, env, tool inits) onto Zsh plus fzf-powered keybindings, so you get Omarchy’s terminal experience in a better shell without hand-editing dotfiles.

TL;DR install

# Install the package (omarchy pkg add is the distro's pacman wrapper)
omarchy pkg add omarchy-zsh

# Set up zsh (keeps bash as the login shell; zsh auto-launches from it)
omarchy-setup-zsh

Open a new terminal (Super+Enter). You’re now in zsh with Omarchy’s config.

Getting started in 5 minutes

1. The fzf keybindings you’ll actually use daily

These come from the package’s zsh-specific config (documented in the repo README):

KeyWhat it does
Ctrl+RFuzzy-search command history
Ctrl+TFuzzy-search files in the current directory
Alt+Ccd into a fuzzy-picked directory
Ctrl+Alt+FSearch files and directories
Ctrl+Alt+LSearch your git log
Ctrl+Alt+VSearch shell variables

Ctrl+R alone will change how you feel about the terminal. Type a fragment of a command you ran three days ago, hit Ctrl+R, pick it.

2. The aliases worth knowing (from omadots)

Shared config is pulled from the omadots dotfiles project at package build time and sourced from /usr/share/omarchy-zsh/shell/, so package updates apply immediately. The key aliases to learn (same set Omarchy ships for bash, syntax-compatible with zsh):

  • ls → eza with icons, dirs-first; lt → eza tree (level 2, git status); lsa / lta are their -a variants
  • .., ..., .... → up one, two, three directories
  • g → git; gcm → git commit -m; gcam → git commit -a -m; gcad → git commit -a --amend
  • d → docker; r → rails; ff → fzf with a bat preview of each file
  • open → xdg-open; n → nvim (opens current dir with no args)
  • cc / cdx → Claude Code / Codex; ccx / cdxx → the same with permission checks bypassed (intentional — the x suffix means dangerous mode)
  • z → zoxide smart-jump (the cd function itself is zoxide-backed)

3. Where your personal config goes

nvim ~/.zshrc

omarchy-setup-zsh generates your ~/.zshrc as a small loader. Add your own config at the bottom, after the omarchy-zsh loading — user customizations there take precedence over system defaults. This is the designed split: the package owns /usr/share/omarchy-zsh/; you own ~/.zshrc; updates never touch your file.

Shell functions are also shared with Omarchy’s bash defaults and documented in the Omarchy manual’s shell-functions page: compress/decompress, iso2sd, format-drive, tmux dev layouts (tdl, tds, tdlm, tsl — tdl c opens a layout with your editor + opencode + terminal), ga/gd for git worktrees, rsw/lsw/dsw rsync watchers, and fip/dip/lip SSH port forwards.

Common issues & fixes

You ran chsh -s /usr/bin/zsh and now things break — or nothing works after reboot

Fix: That’s the known trap on Omarchy: the display manager and session init chain expect bash, so a zsh login shell breaks session startup (basecamp/omarchy discussion #2495 documents the whole chain; one user reports the black-screen-after-decrypt symptom). Fix: chsh -s /usr/bin/bash to restore bash, then use the supported flow — install the package and run omarchy-setup-zsh, which auto-launches zsh from bash instead.

You want to remove starship, but pacman refuses

Fix: This is a real open issue on the omarchy-zsh tracker (“Support to turn starship off”): starship is a hard package dependency because the prompt init lives in the shared inits file. Until the maintainer makes it optional, the workarounds are: edit your ~/.zshrc to neutralize the prompt (e.g. don’t source the starship init, or set STARSHIP_CONFIG to a minimal config — your ~/.zshrc runs last so it wins), or use STARSHIP env overrides rather than uninstalling.

Your own ~/.zshrc additions (or another dotfiles framework) die silently

Fix: zsh expands aliases at parse time, so if your rc defines a function whose name is already a live alias (omarchy-zsh defines single-letter aliases like c and cy), that’s a parse error and zsh abandons the rest of the file (documented real-world case, measured at line 470 of a ~/.zshrc). Fix: don’t define functions named after omarchy aliases; if a framework defines them, escape the name (\cy() { ... }) to suppress alias expansion.

Double prompts, doubled-up completions, or hooks firing twice after layering oh-my-zsh or another rc on top

Fix: omarchy-zsh’s inits initializes starship, zoxide, mise, and fzf. If your rc initializes them again, you get duplicate precmd hooks and two inits for one prompt (same source). Either let omarchy-zsh own those inits (it’s already doing them) or skip them in your ~/.zshrc. Same goes for zsh-syntax-highlighting: the package sources it last by design, so don’t source it twice.

Completions for omarchy subcommands feel thin

Fix: This was a real gap fixed by PR omacom/omarchy-zsh#10, which brought the zsh _omarchy completion in line with the bash completer (arg enums, alternatives, file fallback). Update the package (omarchy pkg add omarchy-zsh on an already-installed package, or sudo pacman -Syu omarchy-zsh) and open a new shell. The completer ships to /usr/share/zsh/site-functions/_omarchy, so it works even in a custom ~/.zshrc that never ran omarchy-setup-zsh, as long as compinit runs.

Pairs well with / If you hate this, try

Pairs well with

  • omarchy-nvim (Omarchy’s editor config — EDITOR=nvim is already set for you), fzf and zoxide (their keybindings/inits are wired in automatically), starship (the default prompt), tmux (the tdl/tds dev-layout functions), eza + bat (the ls/lt/ff aliases assume them).

If you hate this, try

  • Stay on Omarchy’s bash defaults — same aliases and functions, zero setup. Want a different shell philosophy: omarchy-fish is the sibling package for Fish. Want the plugin ecosystem: oh-my-zsh works on Omarchy, but see the parse-conflict and double-init issues above before stacking it on top of omarchy-zsh.

Comparison

omarchy-zshbash + Omarchy defaultsoh-my-zshfish (+ omarchy-fish)
PriceFree (MIT)Free (ships with Omarchy)Free (MIT)Free (MIT/GPL)
Best forOmarchy users who want Zsh with zero config workPeople who just want Omarchy to work as designedZsh plugin/theme explorersPeople who prefer fish’s syntax and autosuggestions
Omarchy installomarchy pkg add omarchy-zsh + omarchy-setup-zshAlready installedManual install script (watch for conflicts with Omarchy aliases/inits)omarchy-fish package (same setup flow)

One-line verdict: if you’re on Omarchy and want Zsh, install omarchy-zsh — it’s the only Zsh option built to carry Omarchy’s exact shell config, and it’s the only one that keeps your session boot chain intact.

Open the omarchy-zsh package

See the live version, upstream screenshot, requirements, source and exact Omarchy install command.

View omarchy-zsh →

Frequently asked questions

How do I switch to zsh on Omarchy?

omarchy pkg add omarchy-zsh, then run omarchy-setup-zsh. Keep bash as your login shell — the setup makes zsh auto-launch from your ~/.bashrc. Do not use chsh; it breaks Omarchy’s session startup.

Will it overwrite my .zshrc?

The setup writes a small loader ~/.zshrc. If you already have one with real content, back it up first — the supported workflow is one loader file that you extend at the bottom. Package updates never touch ~/.zshrc; everything system-owned lives under /usr/share/omarchy-zsh/.

omarchy-zsh vs oh-my-zsh?

Different jobs. omarchy-zsh ports Omarchy’s shared shell config to Zsh and adds fzf keybindings; it’s small, fast, and Omarchy-aware. oh-my-zsh is a huge plugin/theme framework with hundreds of community plugins. You can run oh-my-zsh on Omarchy, but disable its duplicated inits (starship, zoxide, mise, fzf) and never define functions over omarchy’s aliases (c, cy) or your rc will silently break.

Do my bash habits carry over?

Mostly, yes. The aliases, functions, and env vars are the same ones Omarchy ships for bash (pulled from omadots at build time), and the syntax is compatible. The prompt is starship in both.

How do I go back to plain bash?

sudo pacman -R omarchy-zsh, then restore your ~/.bashrc from one of the .bashrc.backup-* files the setup saved, or just remove the exec zsh line.

Official sources

Commands and fixes verified against official sources October 2026; on-machine verification pending.