Omarchy Terminal Customization: Shell Autosuggestions, Themes & Aliases

On this page Table of Contents

Omarchy’s default terminal is clean, but very minimal. The prompt looks like this:

~ ❯

Inside a git repo, it adds the branch name and a few icons. That’s all. It doesn’t show:

  • which commit you’re on
  • whether you have uncommitted changes
  • whether the last command failed

Typing in bash is also basic. There are no suggestions, no colors, and pressing Tab prints a long, messy list.

Omarchy already includes great tools. They just aren’t configured to do much by default. In this post, I show how I set up my terminal to be more helpful, and how you can install the same setup in a few minutes.

Customized Omarchy terminal with Starship prompt and ble.sh syntax highlighting
Customized Omarchy terminal with Starship prompt and ble.sh syntax highlighting

My Omarchy terminal with a Starship prompt and ble.sh syntax highlighting

Quick install

On a fresh Omarchy machine, run:

git clone https://github.com/aganet/omarchy-terminal.git ~/omarchy-terminal
~/omarchy-terminal/install.sh
yay -S --needed blesh-git

Then open a new terminal.

You choose what to install

The installer shows a menu, so nothing is forced on you:

Which parts do you want?
> ✓ prompt    The starship prompt: folder, git state, versions, clock
  ✓ typing    ble.sh: suggestions, syntax colours, Tab menu, Enter fix
  ✓ aliases   ~90 aliases in groups you can switch on and off
  ✓ terminal  Ghostty: font, padding, keys (opinionated)

Press x to toggle a line and Enter to confirm. You can also skip the menu:

./install.sh prompt typing   # only these two parts
./install.sh --all           # everything, no questions
./install.sh --list          # show the parts and exit

It’s safe to try

  • Your existing files are backed up first, with the date in the file name.
  • Running the installer again is safe.
  • Add --dry-run to see exactly what would change, without changing anything:
$ ./install.sh --all --dry-run

Dry run. Nothing will be changed.
Would install: prompt typing aliases terminal
  would link ~/.bashrc
  would back up ~/.config/starship.toml -> ~/.config/starship.toml.2026-09-26, then link it
  would link ~/.blerc
  ...

The rest of this post explains what each part does and why.

The two main tools

A terminal has two parts, and I use one tool for each:

Part What it is Tool
The input line Where you type commands ble.sh
The prompt The info shown before your cursor Starship
  • ble.sh replaces bash’s default line editor. It’s the only tool here that Omarchy doesn’t install for you.
  • Starship is already installed by Omarchy, with a very simple config. With one config file, it can show much more.

Better typing with ble.sh

After installing ble.sh, typing in the terminal becomes much easier:

  • Suggestions from history. As you type, grey text suggests the rest of the command. Press the Right arrow to accept it.
  • Colors that catch mistakes. A command turns green if it exists and red if it doesn’t. You see typos before pressing Enter.
  • Colored quotes and paths. This makes a missing closing quote easy to spot.
  • A real Tab menu. Tab opens a menu with descriptions, instead of a long plain list.

Omarchy’s existing shortcuts still work:

Shortcut What it does
→ Accept the grey suggestion
Tab Open the completion menu
Ctrl-R Search command history (atuin)
Ctrl-T Pick a file (fzf)
Alt-C Pick a folder and go there (fzf)
z name Jump to a folder you’ve visited before

A more useful prompt with Starship

My prompt uses two lines with colored blocks. It shows:

  • The current folder, with an icon
  • Git info: branch, short commit hash, and file status
    • ✚ staged changes
    • ! modified files
    • ? untracked files
    • ⇡ / ⇣ ahead of / behind the remote
  • Language version (Node, Python, Rust, or Go), only when you’re inside a project that uses it
  • Command duration, if the last command took more than 3 seconds
  • Battery and clock on the right side
  • Errors: the ❯ turns red and shows the exit code when a command fails

That last one is more useful than it sounds. Before, a failed command looked exactly like a successful one.

It follows your theme. The colors use terminal palette names (like red or blue), not fixed hex codes. When you change your Omarchy theme, the prompt changes too.

Aliases, in groups you control

I use about 90 aliases, but you probably don’t want all of mine. So they’re split into nine groups:

Group What’s in it
core Everyday shortcuts
system System update, network and process helpers
git git and the GitHub CLI
docker Docker and Compose
kubernetes kubectl, kubectx, stern, k9s, kind
iac Terraform, OpenTofu, Helm
cloud AWS and Azure
python uv
security Secret, dependency, container and IaC scanners

Turn a group on or off by name:

aliasgroup                   # list all groups
aliasgroup off kubernetes    # turn one off
aliasgroup on kubernetes     # turn it back on

This setting is saved outside the repo, so git pull still works and git status stays clean.

Two more things make the aliases safe to use anywhere:

  • Missing tools are skipped. An alias is only created if its tool is installed, so the same setup works on any machine.
  • You can see what’s active. myalias lists all defined aliases, and myalias docker shows only the Docker ones.

Don’t want aliases at all? Run ./install.sh --no-aliases. You still get the prompt and the typing features.

Make it your own

Add your own aliases. Put a file in ~/.bash_aliases.d/. Everything there is loaded. Name it something like 90-mine so it loads after my groups and overrides them.

Keep private settings off GitHub. For work hostnames or secrets:

cp ~/omarchy-terminal/home/bashrc.local.example ~/.bashrc.local

This file isn’t tracked by git, and it’s loaded last, so it can override anything.

Small tweaks:

  • Suggestions too dark or too bright? Change fg=245 in home/blerc (232 is dark, 255 is light).
  • No clock? Delete the right_format line in config/starship.toml.
  • No battery? Set disabled = true under [battery].
  • Want a one-line prompt? Move $character onto the same line in format.

Problems I ran into (and how I fixed them)

1. The first prompt appeared twice

Why: Ghostty loads its shell integration at startup. ble.sh waits for the first prompt before it starts, and during that delay, bash prints its own prompt.

Fix: Turn off Ghostty’s automatic integration, and load the same script from .bashrc instead:

# ~/.config/ghostty/config
shell-integration = none
# ~/.bashrc
[[ -n ${GHOSTTY_RESOURCES_DIR-} ]] && \
  source "$GHOSTTY_RESOURCES_DIR/shell-integration/bash/ghostty.bash"

Window titles and “open terminal here” still work.

2. One part of the prompt had no color

Why: Starship doesn’t have a color called magenta. It’s called purple. When a color name is wrong, Starship ignores it silently, with no error.

Fix: Use purple instead of magenta.

3. Pasted multi-line commands didn’t run

Why: In ble.sh, Enter runs the command only if it’s one line. If it has several lines, Enter just adds a new line. (Ctrl-J runs it.)

Fix: Make Enter always run the command. This must go in ble.sh’s “after load” hook, because ble.sh sets up its own key bindings after it reads .blerc:

# ~/.blerc
blehook/eval-after-load keymap_emacs '
  ble-bind -f "RET"   accept-line
  ble-bind -f "M-RET" newline
'

Now Alt-Enter adds a new line when you need one, for example when writing a loop.

One change I reverted

I used to have these aliases:

  • cat → bat
  • grep → rg

I removed both.

It’s not because they break scripts. Bash doesn’t use aliases in scripts, so scripts still get the real grep:

$ bash -c 'alias grep="echo nope"; grep --version | head -1'
grep (GNU grep) 3.12

The real problems were smaller, but annoying:

  1. Habits. I’d type grep -E and get rg, which uses different options.
  2. Tools that copy your shell setup. Some tools load your interactive shell config. My coding agent picked up the aliases, and its grep -E commands started failing.

bat and rg are still installed. I just call them by their real names.

Get the files

Everything is on GitHub: github.com/aganet/omarchy-terminal

The README also lists the optional tools my aliases use (kubectl, Terraform, trivy, delta, and more), with install commands for each.

Enjoyed this? Buy me a coffee ☕

Comments