CHANGELOG | Read First | Install | Upgrading | Branding | Keybinds | Menu Suite | Hidden Menu | Uninstall
▄▖ ▌ ▄▖▌ ▘ ▄▖▘ ▗
▙▘█▌▀▌▛▌ ▐ ▛▌▌▛▘ ▙▖▌▛▘▛▘▜▘
▌▌▙▖█▌▙▌ ▐ ▌▌▌▄▌ ▌ ▌▌ ▄▌▐▖
This is not a theme or a plugin — it is a shell replacement. It removes
omarchy-shell and Hyprland from your system and replaces them with
Niri (scrollable-tiling Wayland compositor) and Noctalia (C++23
desktop shell). That means some things you may use daily in stock Omarchy
stop existing until something replaces them: keybindings routed into
omarchy-shell become silent no-ops, its menus and lock screen disappear,
and the idle path changes. This repo rebinds or replaces every dead path it
can, but expect Omarchy to not behave stock out of the box — if you want
stock behavior with a different bar, this remux is not that.
Highlights only; the full compatibility matrix lives at noctarchy.dirty.pizza:
| Stock Omarchy | In Noctarchy | Replacement / notes |
|---|---|---|
| omarchy-shell (bar, notifications, OSD) | Removed | Noctalia provides all three |
| omarchy-shell menus + lock screen | Removed | Fuzzel suite noctarchy-*; Noctalia lock screen |
| Media keys / clipboard / emoji panels | Rebound | noctarchy-media, Noctalia clipboard |
Theme switching (omarchy-theme-set) |
Works as before | A hook bridges each theme's colors.toml into Noctalia's theming pipeline |
| Window management, workspaces, app binds | Changed | Niri scrollable tiling replaces Hyprland dwindle/master |
Hyprland Lua config (*.lua) |
Removed | Niri KDL config (config.kdl) |
Anything not listed here that shells out to omarchy-shell or Hyprland
elsewhere in your own scripts will also be dead — grep for it.
Honest list of the remaining gaps:
- Compositor is different: Niri's scrollable-tiling paradigm is fundamentally different from Hyprland's dwindle/master. Windows tile in horizontal columns that scroll, never resize each other. You must relearn window management habits.
- No plugin system: Niri has no Hyprland-style C++ plugin API. Functionality comes from the compositor + shell + companion tools.
- Config format changed: KDL (Niri) and TOML (Noctalia) replace Lua (Hyprland) and JSON (Caelestia).
- Noctalia is a different shell: bar layout, launcher, notifications, lock screen, and wallpaper management all behave like Noctalia, not Caelestia/omarchy-shell. Noctalia supports per-compositor integration but the UX is its own.
- Noctalia is native C++23: no Quickshell/Qt dependency. Lighter memory footprint (~50 MB vs ~300 MB/monitor for Quickshell shells) but a different extension model.
omarchy-shellIPC callers die: any personal script callingomarchy-shell <...>needs porting toniri msg action ..., Noctalia IPC, or the noctarchy suite.
▄▖ ▗ ▜ ▜ ▗ ▘
▐ ▛▌▛▘▜▘▀▌▐ ▐ ▀▌▜▘▌▛▌▛▌
▟▖▌▌▄▌▐▖█▌▐▖▐▖█▌▐▖▌▙▌▌▌
git clone https://github.com/deoxizn/noctarchy.git ~/.local/opt/noctarchy
cd ~/.local/opt/noctarchy
./install.shUse ./install.sh -y to skip confirmation prompts, or --dry-run to preview everything without touching anything.
- Install Niri and Noctalia (all deps handled)
- Back up existing configs, then install Niri KDL config and Noctalia TOML config
- Disable Omarchy's shell autostart (survives pacman updates and config reloads) and launch Noctalia instead via systemd service
- Set up the theme bridge hook and managed idle/lock stack
- Own the idle/sleep stack: Noctalia's built-in idle handling replaces stock Omarchy's
omarchy-sleep-lock.service - Apply Niri config patches idempotently (
patches/) and install the omarchy-update guard (a libalpm hook re-applies it after every omarchy upgrade) - Install an auto-sync hook into omarchy-update's post-update path: every system update pulls this repo and re-runs
sync.shwhen new commits exist (logged to~/.local/state/noctarchy/repo-sync.log, desktop-notified on failure) — older installs catch up once withgit pull && ./sync.sh, then it stays current on its own - Install the fuzzel menu suite +
noctarchy-media(see Menu suite) — including System → Kernel (CachyOS opt-in + boot-entry repair) and System → Splash (adopt/refresh the boot splash) — seed the fastfetch OS line, deploy branding art - Sync your current theme
- Run the session-start preflight, then auto-logout after 5s if every check passed (Ctrl+C cancels) — logout uses
omarchy-system-logout(uwsm stop) so the session ends cleanly
After logging back in: test SUPER+D (launcher), SUPER+Ctrl+L (lock) and omarchy-theme-set <theme>.
Before offering to log you out, the installer verifies the chain your next
login depends on: autostart stub placement, valid Niri config, Noctalia
config, and noctalia.service health (enabled, real binary,
systemd-analyze clean).
All checks pass → normal logout prompt. Any check fails → automatic
rollback to fully usable stock Omarchy (configs restored from backup, service
disabled) instead of a dead session. Everything, including what was rolled
back, lands in ~/noctarchy-preflight.log — send it for help or hand it to
your AI agent, then fix and re-run.
Noctalia didn't start after an older install? Press Ctrl+Alt+F4 for a TTY,
log in, then:
cat ~/noctarchy-preflight.log # see what's wrong
systemctl --user start noctalia.service # bring the shell back nowKernel and splash live in the menus: System → Kernel (CachyOS opt-in, boot-entry status & repair) and System → Splash (adopt/refresh the boot splash) under SUPER+Alt+Space — plain scripts (noctarchy-kernel, noctarchy-splash) if you prefer a terminal.
Kernel variants (Kernel menu), all prebuilt from chaotic-aur:
| Variant | Package | One-liner |
|---|---|---|
default |
linux-cachyos |
EEVDF scheduler + CachyOS optimizations — the balanced choice |
bore |
linux-cachyos-bore |
BORE scheduler — lowest latency under load; the gaming pick |
eevdf |
linux-cachyos-eevdf |
Explicit EEVDF build (no CachyOS scheduler extras) |
lts |
linux-cachyos-lts |
Long-term support kernel — fewest surprises |
rt-bore |
linux-cachyos-rt-bore |
Real-time patches + BORE |
CachyOS kernels tune CPU scheduling — BORE for lowest latency under load (the gaming pick), EEVDF default, plus LTS and real-time variants. Prebuilt from chaotic-aur, so nothing compiles.
Pick a variant in the Kernel menu (or noctarchy-kernel run <variant>):
default | bore | eevdf | lts | rt-bore.
Adds [chaotic-aur] to pacman.conf (backed up first) and installs the
chosen kernel + headers (DKMS modules like NVIDIA rebuild automatically).
Limine's path-based default_entry: header follows the kernel by name, so it
survives snapshot churn. The stock Arch kernel is never removed — revert any
time via the Limine menu + one default_entry: edit. Full opt-out: remove the
[chaotic-aur] block from /etc/pacman.conf.
▖▖ ▌▘
▌▌▛▌▛▌▛▘▀▌▛▌▌▛▌▛▌
▙▌▙▌▙▌▌ █▌▙▌▌▌▌▙▌
▌ ▄▌ ▄▌
./sync.sh # apply current checkout to the install (the auto-sync hook runs this after pulling)Your configs stay yours — KDL/TOML updates merge in, conflicts never touch your files, and every replaced file is backed up in ~/.config/noctarchy-backup/. Preview with --dry-run; --adopt-kdl adopts repo KDL versions that have no merge history (yours is backed up first).
▄ ▌▘
▙▘▛▘▀▌▛▌▛▌▌▛▌▛▌
▙▘▌ █▌▌▌▙▌▌▌▌▙▌
▄▌
The remux ships its own identity on top of Omarchy. What lands where:
| Touchpoint | New installs | Existing installs (sync.sh / menus) |
|---|---|---|
| Idle screensaver art | Installed | Installed if missing or still stock Omarchy art; your own customization is never overwritten |
About logo (about.txt) |
Installed | Same stock-detection rule |
| fastfetch OS line | If you have no own config, one is seeded from /etc/fastfetch with a commit-stamped Noctarchy r<count>.<sha> OS line; custom configs are untouched |
Same |
| Script headers | Included | Synced with the menu suite |
▖▖ ▌ ▘ ▌
▙▘█▌▌▌▛▌▌▛▌▛▌▛▘
▌▌▙▖▙▌▙▌▌▌▌▙▌▄▌
▄▌
| Binding | Action |
|---|---|
SUPER+Space |
Fuzzel launcher (quick) |
SUPER+D |
Noctalia launcher (full) |
SUPER+Alt+Space |
Noctarchy root menu |
SUPER+Enter |
Terminal |
SUPER+grave |
Agent (default coding agent, e.g. opencode) |
SUPER+Shift+B |
Browser |
SUPER+Shift+E |
Editor (nvim) |
SUPER+Shift+F |
File manager |
SUPER+K |
Keybinding list (fuzzel) |
SUPER+Q |
Close window |
SUPER+Escape |
Power menu |
SUPER+O |
Overview |
SUPER+F |
Maximize column |
SUPER+Ctrl+F |
Fullscreen window |
SUPER+R |
Cycle column width |
SUPER+Shift+R |
Tabbed display |
SUPER+Shift+Space |
Toggle floating |
SUPER+P / SUPER+Shift+P |
Focus floating / Focus tiling |
SUPER+[ / ] |
Consume / expel from column |
SUPER+H/J/K/L or arrows |
Focus left/down/up/right |
SUPER+Ctrl+H/J/K/L or arrows |
Move window |
SUPER+1-9 |
Focus workspace |
SUPER+Shift+1-9 |
Move to workspace |
SUPER+U/I |
Workspace down/up |
SUPER+N |
Noctalia notifications |
SUPER+Comma |
Clear notifications |
SUPER+Ctrl+L |
Lock via Noctalia |
SUPER+Ctrl+V |
Clipboard history (Noctalia) |
SUPER+C/V/X |
Copy/paste/cut via wtype |
Media keys |
Play/pause, next, previous — any MPRIS player |
SUPER+Print |
Screenshot region to clipboard |
Ctrl+Print |
Screenshot region to file |
Alt+Print |
Screenshot fullscreen to clipboard |
All Niri keybindings are defined in ~/.config/niri/config.kdl. Run
niri msg --json event-stream to debug bindings live.
▖ ▖ ▄▖ ▘▗
▛▖▞▌█▌▛▌▌▌ ▚ ▌▌▌▜▘█▌
▌▝ ▌▙▖▌▌▙▌ ▄▌▙▌▌▐▖▙▖
The omarchy-shell menus are recreated as standalone fuzzel scripts in
scripts/ (installed to ~/.local/bin/). All of them are themed
from the live Noctalia scheme, so they restyle automatically on every theme
switch. Esc navigates back one menu level.
| Script | Purpose |
|---|---|
noctarchy-menu |
Root menu (alphabetized): Config, Packages, Restart, Setup, System, Themes, Trigger, Update |
noctarchy-trigger / noctarchy-hardware / noctarchy-speedtest |
Hardware toggles gated on detected hardware (laptop display, hybrid GPU, touchpad...) + network/disk speed tests |
noctarchy-setup / noctarchy-network / noctarchy-security |
DNS picker + Wi-Fi QR code, and security setup (fingerprint/FIDO2/sshd/sudo) |
noctarchy-system |
Config editor, default app pickers, and the Kernel / Splash submenus |
noctarchy-kernel |
Opt into a prebuilt CachyOS kernel (default/bore/eevdf/lts/rt-bore) via chaotic-aur; Limine default_entry: follows by name — plus boot-entry status & repair |
noctarchy-splash |
Adopt or refresh the Noctarchy boot splash (verifies the theme is self-contained before any initramfs rebuild) |
noctarchy-power |
Lock, logout, suspend, hibernate, reboot, shutdown (destructive actions require Confirm) |
noctarchy-keybinds |
Searchable keybinding list parsed from config.kdl — shows actual binds with descriptions |
noctarchy-themes / noctarchy-themes-list |
Theme switcher with preview thumbnails (fuzzel icon protocol) + git theme install |
noctarchy-pkgs / noctarchy-install / noctarchy-remove |
Packages → Install (package/AUR/web app) and Remove (package/web app/theme) submenus |
noctarchy-update |
Noctarchy system update, channel switcher, extra themes, firmware |
noctarchy-config |
Edit niri config.kdl, Noctalia config.toml, palettes, hooks, scripts |
noctarchy-defaults |
Default browser/editor/terminal/agent pickers (includes installed beta/nightly browsers) |
noctarchy-restart |
Reload Niri, restart Noctalia shell, refresh theme |
noctarchy-terminal |
Runs a command in a floating TUI.float terminal with logo/done polish |
noctarchy-media |
Universal MPRIS media control — targets whichever player is currently playing |
noctarchy-wifi-qr |
Renders the current Wi-Fi as a scannable QR in a floating terminal |
noctarchy-update-hardware |
Restart audio/Wi-Fi/Bluetooth/trackpad services |
noctarchy-fuzzel |
Shared fuzzel wrapper — reads colors from Noctalia's config.toml [theming] section |
noctarchy-version |
Prints the dots revision (r<count>.<sha>) shown on the fastfetch OS line |
- Scrollable tiling: windows tile in horizontal columns that scroll, never
resize each other.
SUPER+[consumes a window into the column,SUPER+]expels it. - Column presets:
SUPER+Rcycles through column width presets (half, three-quarters, full). - Tabbed display:
SUPER+Shift+Rtoggles tabbed mode within a column. - Overview:
SUPER+Oshows all workspaces and windows in an overview grid.
- Launcher:
SUPER+Dopens Noctalia's full Material You launcher. - Notifications:
SUPER+Ntoggles the notifications panel;SUPER+Commaclears the active notification. - Clipboard history:
SUPER+Ctrl+Vopens the clipboard manager. - Lock screen:
SUPER+Ctrl+Llocks via Noctalia's built-in lock screen (supports fingerprint via PAM). - Theme toggle: the themes menu lets you switch between palette-derived bar
colors (from
colors.toml) and wallpaper-generated Material You colors.
▖▖ ▘ ▗ ▜ ▜
▌▌▛▌▌▛▌▛▘▜▘▀▌▐ ▐
▙▌▌▌▌▌▌▄▌▐▖█▌▐▖▐▖
./uninstall.shRestores all backed-up configs, stops and removes the Noctalia systemd service, and removes Noctalia configs (including the update guard — which also self-neutralizes once Noctalia is no longer running). Log out/in to restore omarchy-shell.
- Omarchy installed
- base-devel (installer handles these and other deps)
- Omarchy — window manager, theme system, keybindings
- Niri — scrollable-tiling Wayland compositor
- Noctalia — desktop shell, lock screen, launcher
- Stellarchy — architecture inspiration




