How to Reorder Omarchy Status Bar Plugins: Complete Configuration Guide
Reorder Omarchy status bar plugins by editing the bar.layout arrays in ~/.config/omarchy/shell.json or using the omarchy bar CLI commands—changes apply instantly without restarting.
The order of widgets displayed in the Omarchy status bar is controlled through a simple JSON configuration system. Whether you prefer direct file editing or command-line convenience, Omarchy provides multiple paths to rearrange your bar layout. This guide covers both approaches using the official codebase from github.com/omacom/omarchy.
Understanding the Bar Layout Configuration
The Omarchy status bar is divided into three horizontal sections defined in shell.json:
left— widgets aligned to the left edgecenter— widgets centered on the barright— widgets aligned to the right edge
Each section contains an array of objects with an id field identifying the plugin. The array order determines visual placement.
Default configuration lives at [config/omarchy/shell.json](https://github.com/omacom/omarchy/blob/quattro/config/omarchy/shell.json). Omarchy falls back to this file when no user config exists at ~/.config/omarchy/shell.json.
Method 1: Edit shell.json Directly
Locate or Create Your Configuration
# Open your personal shell.json (creates from template if missing)
omarchy edit-shell
This launches $EDITOR targeting ~/.config/omarchy/shell.json.
Example: Move Clock from Center to Right
jq '
.bar.layout.center |= map(select(.id != "omarchy.clock")) |
.bar.layout.right |= . + [{ "id": "omarchy.clock" }]
' "$HOME/.config/omarchy/shell.json" >"$HOME/.config/omarchy/shell.json.tmp" &&
mv "$HOME/.config/omarchy/shell.json.tmp" "$HOME/.config/omarchy/shell.json"
Example: Reorder Left Section (Menu After Workspaces)
jq '
.bar.layout.left |= [
{ "id": "omarchy.workspaces" },
{ "id": "omarchy.menu" }
]
' "$HOME/.config/omarchy/shell.json" >"$HOME/.config/omarchy/shell.json.tmp" &&
mv "$HOME/.config/omarchy/shell.json.tmp" "$HOME/.config/omarchy/shell.json"
Method 2: Use the omarchy bar CLI
The omarchy bar subcommands provide an interactive alternative to manual JSON manipulation. According to the bin/omarchy source, these commands wrap the same file operations.
Move a Widget Interactively
# Launch interactive mover for the clock widget
omarchy bar move omarchy.clock
The tool prompts for target section and position, then updates shell.json automatically.
Other Available Commands
# Add a new widget to a specific section
omarchy bar add <widget-id> <section> [position]
# Remove a widget entirely
omarchy bar remove <widget-id>
# Set explicit order for a section
omarchy bar set left workspace menu spacer
Full command reference is documented in [shell/plugins/bar/README.md](https://github.com/omacom/omarchy/blob/quattro/shell/plugins/bar/README.md).
How Runtime Reloading Works
Omarchy monitors shell.json for changes via its Quickshell-based architecture. When you save the file:
- The filesystem watcher in the bar plugin detects the modification
- [
BarModel.js](https://github.com/omacom/omarchy/blob/quattro/shell/plugins/bar/BarModel.js) re-parses thebar.layoutarrays - The visual bar rebuilds with new widget ordering
No manual restart required—reordering Omarchy status bar plugins happens in real time.
Force Reload (Optional)
omarchy reload
Use only if automatic detection fails.
Common Widget IDs for Reordering
| Widget ID | Typical Default Position | Purpose |
|---|---|---|
omarchy.workspaces |
left | Desktop workspace switcher |
omarchy.menu |
left | Application launcher |
omarchy.window |
center | Active window title |
omarchy.clock |
center or right | Date/time display |
omarchy.tray |
right | System tray icons |
omarchy.battery |
right | Power status |
omarchy.network |
right | Connection status |
omarchy.volume |
right | Audio controls |
Find complete lists in the default [shell.json](https://github.com/omacom/omarchy/blob/quattro/config/omarchy/shell.json).
Summary
- Primary method: Edit
~/.config/omarchy/shell.jsonand rearrange objects inbar.layout.left,bar.layout.center, orbar.layout.right - CLI alternative: Use
omarchy bar move,add,remove, orsetcommands for guided editing - Instant apply: Changes reload automatically; no bar restart needed
- Source authority: Implementation resides in
BarModel.jswith CLI entry points inbin/omarchy
Frequently Asked Questions
Does reordering require restarting Omarchy?
No. The bar watches shell.json and reloads automatically when you save changes. You can verify this behavior in [BarModel.js](https://github.com/omacom/omarchy/blob/quattro/shell/plugins/bar/BarModel.js), which handles runtime layout reconstruction.
Where is the default bar layout defined?
The fallback configuration is hardcoded at [config/omarchy/shell.json](https://github.com/omacom/omarchy/blob/quattro/config/omarchy/shell.json). Omarchy copies this to ~/.config/omarchy/shell.json on first run if no user config exists.
Can I place the same widget in multiple bar sections?
Technically yes—each array is independent. However, most widgets assume single-instance operation. Test thoroughly if duplicating IDs across left, center, and right arrays.
What happens if I delete a widget ID from all sections?
The widget simply won't render. The bar skips missing IDs gracefully. Restore it by adding the object back to any section array, or reset to defaults by removing your custom shell.json.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →