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.

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-runto 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.
myaliaslists all defined aliases, andmyalias dockershows 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=245inhome/blerc(232 is dark, 255 is light). - No clock? Delete the
right_formatline inconfig/starship.toml. - No battery? Set
disabled = trueunder[battery]. - Want a one-line prompt? Move
$characteronto the same line informat.
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→batgrep→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:
- Habits. I’d type
grep -Eand getrg, which uses different options. - Tools that copy your shell setup. Some tools load your interactive shell config. My coding agent picked up the aliases, and its
grep -Ecommands 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
Loads the discussion from giscus.app and GitHub.