de-omarchy takes the Omarchy experience — the bar, launcher, theming, notifications, lock screen, screensaver — and installs it as a self-contained desktop layer on top of your existing system. No ISO, no bootloader, no new display manager, no mirrors touched. Everything it adds is additive, marked, and reversible.
Your system stays yours. Your bindings win. Uninstalling puts everything back exactly as it was.
At a glance
| Quickshell desktop | Bar, launcher, menus, notifications, clipboard, emojis, lock screen, OSD |
| 10 bar styles | Classic → Floating Islands → Glass → OLED Black… cycle live with SUPER+CTRL+Y |
| 22 themes | One TOML file each; live switching across terminal, GTK, and shell |
| System monitor widget | CPU, RAM, disk, GPU temp, network — sampled every 2 s, click opens btop |
| Notification center | History panel + do-not-disturb, SUPER+ALT+N |
| Plugin marketplace | Browse and install community plugins (SUPER+SHIFT+I) |
| Monitor Manager | Visual multi-monitor arrangement, SUPER+CTRL+M |
| Animated screensaver | Terminal-text-effects at 120 fps — the real upstream behavior |
| Omarchy login screen | SDDM greeter themed like upstream, running on a bare Hyprland session |
| ~440 CLI commands | One omarchy entry point; every command self-documents for humans and AI agents |
Installation
git clone https://github.com/swadhinbiswas/de-omarchy.git ~/de-omarchy
cd ~/de-omarchy
./scripts/diff-preview.sh # dry run — see exactly what would change
./install.sh # targeted backup first, then apply
hyprctl reload # or log out and back in
[!TIP] Already installed and re-running later? The installer preserves your current theme, skips packages you already have, and refreshes the runtime — then tells you to run
omarchy-restart-shell.
What the installer does, in order:
- Backs up every file it could touch (plus
.ssh, zsh stack, starship) to~/.de-omarchy-backups/<timestamp>/ - Installs missing UI packages only — never upgrades what you have
- Deploys the runtime to
/usr/share/de-omarchy - Installs four additive hooks — symlinks into
~/.config/hypr/and~/.config/zshrc.d/, pointing at runtime copies, never at your git checkout - Appends one clearly-marked block to
hyprland.lua(pre-change copy saved beside it) - Initializes state and applies a default theme on first install only
Idempotent. Safe to re-run any time.
[!IMPORTANT] The safety contract
Never touched:
pacman.conf, mirrors, repos, kernel, bootloader, display-manager binaries and PAM stack, monitors layout,.zshrc,.zshenv,starship.toml,kitty.conf, SSH keys. Nothing in$HOMEis deleted or overwritten.Added: the runtime dir, the four symlinks, the marked Hyprland block,
/etc/environment.d/10-de-omarchy.conf, a PAM stanza for the lock screen,/usr/binsymlinks for a dozen commands — and, when SDDM is already installed, an Omarchy login theme plus its own drop-in config (remove it to fall back to your previous login screen).
To undo completely:
./uninstall.sh # then restore anything else from ~/.de-omarchy-backups/<timestamp>/
Keybindings
Your existing bindings win — de-omarchy only claims keys that are free.
| Key | Action |
|---|---|
| SUPER + SHIFT + M | Omarchy menu |
| SUPER + K | Keybindings cheat sheet window |
| SUPER + CTRL + Y | Cycle bar style |
| SUPER + ALT + N | Notification center |
| SUPER + CTRL + M | Monitor Manager |
| SUPER + SHIFT + I | Plugin Library |
| SUPER + CTRL + A/B/W | Audio / Bluetooth / Network panel |
| SUPER + CTRL + SPACE | Background switcher |
| SUPER + PRINT / ALT + PRINT | Screenshot / screen recording |
| SUPER + CTRL + T | Activity (btop) |
| SUPER + ` | Scratchpad |
The full map — including preserved host bindings and every conflict decision — lives in keybindings/KEYMAP.md.
The CLI
One router, ~440 self-documenting commands. Every command carries machine-readable metadata (# omarchy:summary=…), so --help, menus, and AI agents all read the same source of truth.
$ omarchy --help # grouped, searchable command index
$ omarchy theme list # 22 themes
$ omarchy theme set catppuccin # live switch
$ omarchy bar style list # the 10 bar presets
$ omarchy bar style set glass # repaint the bar
$ omarchy plugins marketplace # browse the community catalog
$ omarchy plugins install <name> # install a plugin headlessly
$ omarchy shell toggle omarchy.audio # IPC into the running shell
Plugins
Plugins are Quickshell components with a manifest.json; kinds are bar-widget, panel, or service. First-party plugins ship inside the runtime and load automatically. User-installed ones live in ~/.config/omarchy/plugins/ and merge in at scan time — anything under the reserved omarchy.* namespace always resolves to the first-party version.
Open Plugin Library (SUPER+SHIFT+I) for a GUI over the bundled catalog plus the omarchyplugins.com marketplace.
Themes
Each theme is one file — themes/<name>/colors.toml. Templates consume its variables and render into your terminal, GTK, and shell configs at switch time. Making a theme is making one TOML file:
cp -r themes/rose-pine themes/my-theme && $EDITOR themes/my-theme/colors.toml
omarchy theme set my-theme
Screensaver
The real Omarchy screensaver: your branding art rendered by terminal-text-effects at 120 fps, a random effect each idle, cursor hidden, exits on any input. Provided by python-terminaltexteffects (AUR) — installed automatically; without it the screensaver degrades gracefully to static art rather than failing.
Architecture
~/de-omarchy (source, yours) /usr/share/de-omarchy your session
┌──────────────────────────┐ rsync ┌──────────────────────┐ symlinks ┌─────────────────┐
│ bin/ shell/ themes/│ ───────▶ │ OMARCHY_PATH (root) │ ──────────▶ │ ~/.config/hypr/ │
│ default/ config/ docs/ │ │ │ │ ~/.config/zshrc.d/
└──────────────────────────┘ └──────────────────────┘ └─────────────────┘
edit here the desktop runs HERE override slot
Three layers, one direction of truth:
- Source repo — where you edit. Never referenced at runtime.
- Runtime (
OMARCHY_PATH) — the authoritative copy every process reads: Hyprland Lua modules, the Quickshell shell, allomarchy-*commands, plugin manifests. - Live config —
~/.config/hypr/deo-*.luaare override slots: plain symlinks you may replace with your own files. Modules resolve~/.local/state/→~/.config/→$OMARCHY_PATH/, so user state beats fork defaults beats nothing.
Because the runtime is authoritative, deleting or breaking the source checkout cannot hurt a running desktop.
Development loop
| You changed | Deploy | Apply |
|---|---|---|
a bin/omarchy-* script |
sudo cp bin/omarchy-x /usr/share/de-omarchy/bin/ |
nothing needed |
Hyprland Lua (default/hypr/, config/hypr/) |
same pattern into the runtime | hyprctl reload |
QML under shell/ |
same pattern | omarchy-restart-shell |
| a user dotfile template | omarchy-refresh-config <relpath> |
immediate |
To try unreleased UI without touching the installation, run it straight from the checkout — e.g. quickshell -p ~/de-omarchy/plugin-library.
Repository layout
de-omarchy/
├── install.sh / uninstall.sh deploy / fully revert the layer
├── bin/ ~440 omarchy-* commands; router: bin/omarchy
├── shell/ Quickshell desktop: Commons/, Ui/, plugins/
│ └── plugins/ bar/, panels/, services/, notification-center/, …
├── default/ deployed defaults: hypr/ (Lua), themed/ (tpl), agents/skills/
├── config/ live-config hooks: hypr/, omarchy/shell.json, pam/, zshrc.d/
├── themes/ 22 × colors.toml
├── registry.json plugin catalog shown in the Plugin Library
├── monitor-manager/ standalone visual monitor arrangement app
├── plugin-library/ standalone Plugin Library window
├── keybindings/ KEYMAP.md + cheat-sheet window source
├── docs/ manual/ agents/ vendored references (51-chapter manual included)
└── audit/PARITY-AUDIT.md fork-vs-upstream audit trail
Documentation
The full Omarchy Manual ships vendored — 51 chapters covering navigation, theming, plugins, updates, troubleshooting, and more. Start at manual/01-welcome-to-omarchy.md. Fork-specific deltas live in docs/FORK-NOTES.md; where the two disagree, FORK-NOTES wins.
Community
Questions, screenshots, theme shares, and help live on the de-omarchy Discord — usually faster than an issue for "how do I…" questions. Bug reports and feature requests belong on the issue tracker; templates are provided for bugs, installation problems, and features. Anything that reproduces in upstream Omarchy itself should go upstream instead.
Before committing, run scripts/scan-secrets.sh — it's wired up as a pre-commit hook and blocks secrets or personal paths from entering history.