Rewrite README: accurate keybindings, safety contract, architecture docs

swadhinbiswas committed 2 months ago
d6e0add
1 parent a4134b1
commit d6e0add
1 file changed
+147 -44
Showing 1 changed file+147-44
▼README.md
+147-44
1
1
# de-omarchy
2
2
3
-Omarchy's Hyprland desktop UI for any Arch-based distro. Bar, launcher, theming, notifications, lock screen, system monitor — without touching your system layer.
3
+**The Omarchy desktop, layered onto any Arch-based system.**
4
4
5
-## What it does
5
+de-omarchy takes the [Omarchy](https://github.com/omarchy/omarchy) Hyprland experience — the Quickshell bar, launcher, theming, notifications, lock screen, screensaver — and installs it as a **self-contained desktop layer** on top of an existing Arch, CachyOS, EndeavourOS, or Manjaro setup. Your system stays yours: no ISO, no bootloader, no display manager, no mirrors touched. Everything de-omarchy adds is additive, marked, and reversible.
6
6
7
-- Omarchy Quickshell shell (bar, app drawer, menu, notifications, clipboard, emojis, lock screen, panels)
8
-- 22 themes with live switching (`omarchy theme set <name>`)
9
-- Hyprland look: gaps, borders, animations, window rules matching upstream defaults
10
-- System monitor bar widget (CPU, RAM, disk, GPU temp, network speed)
11
-- `omarchy` CLI (`omarchy --help`, `omarchy theme list`, etc.)
12
-- Full keybinding system with cheat sheet (`SUPER+H`)
7
+Ported from Omarchy by DHH (MIT). See [Credits](#credits).
13
8
14
-## What it does NOT do
9
+---
15
10
16
-- Does not touch pacman.conf, mirrors, kernels, bootloaders, or display manager
17
-- Does not replace your login shell — zsh stays, hook via `~/.config/zshrc.d/*.zsh` glob
18
-- Does not overwrite terminal config, starship prompt, or SSH keys
19
-- Does not install GNOME or Yaru packages
20
-- Adds one marked block to `hyprland.lua` — delete to revert
11
+## Highlights
12
+
13
+| | |
14
+|---|---|
15
+| **Quickshell shell** | Bar, launcher, menus, notifications, clipboard, emojis, lock screen, OSD |
16
+| **10 bar styles** | Classic → Floating Islands → Glass → OLED Black… cycle live with `SUPER + CTRL + Y` |
17
+| **22 themes** | Live switching, `omarchy theme set "Tokyo Night"` |
18
+| **System monitor widget** | CPU, RAM, disk, GPU temp, network throughput — every 2 s, click for btop |
19
+| **Notification center** | Bell widget + history panel, `SUPER + ALT + N` |
20
+| **Plugin marketplace** | Browse and install community plugins from the Plugin Library (`SUPER + SHIFT + I`) |
21
+| **Monitor Manager** | Visual multi-monitor arrangement, `SUPER + CTRL + M` |
22
+| **Animated screensaver** | Terminal-text-effects engine, random effect each idle — exactly upstream |
23
+| **~440 CLI commands** | The full `omarchy-*` surface, routed through one `omarchy` entry point |
24
+| **Agent skills** | Ships Omarchy skills symlinked into Claude Code, Codex, Gemini, and friends |
21
25
22
26
## Requirements
23
27
24
-- Arch-based distro (CachyOS, Arch, EndeavourOS, Manjaro)
25
-- Hyprland 0.56+ with Lua config
26
-- `quickshell` (repo package)
27
-- paru or yay (AUR helper)
28
+- An **Arch-based distro** already running **Hyprland configured via Lua** (`hyprland.lua`)
29
+- [`quickshell`](https://quickshell.outfoxxed.me/) — repo package on Arch/CachyOS
30
+- `paru` or `yay` for the handful of AUR-only packages (e.g. `python-terminaltexteffects`, `xdg-terminal-exec`)
31
+- `git`, `rsync`, `curl`
28
32
29
33
## Install
30
34
31
35
```bash
32
36
git clone https://github.com/swadhinbiswas/de-omarchy.git ~/de-omarchy
33
37
cd ~/de-omarchy
34
-./scripts/diff-preview.sh # dry run
35
-./install.sh # backs up first, then applies
38
+
39
+./scripts/diff-preview.sh # dry run — see exactly what would change
40
+./install.sh # targeted backup first, then apply
36
41
```
37
42
38
-After install: `hyprctl reload` or re-login.
43
+Then `hyprctl reload` — or log out and back in so environment variables settle everywhere.
44
+
45
+### What the installer does, in order
46
+
47
+1. **Backs up** every file it could touch (plus `.ssh`, zsh stack, starship) to `~/.de-omarchy-backups/<timestamp>/`
48
+2. Installs **missing UI packages only** — never upgrades what you have
49
+3. Deploys the runtime to **`/usr/share/de-omarchy`** (`rsync -a --delete` of `bin/ shell/ themes/ default/ config/ …`)
50
+4. Installs **additive hooks**: three symlinks into `~/.config/hypr/`, one into `~/.config/zshrc.d/` — all pointing at *runtime copies*, never at your git checkout
51
+5. Appends **one clearly-marked block** to `~/.config/hypr/hyprland.lua` (pre-change copy saved next to it)
52
+6. Initializes Omarchy state and applies the rose-pine theme
53
+
54
+Idempotent: safe to re-run any time.
55
+
56
+### The safety contract
57
+
58
+**Never touched:** `pacman.conf`, mirrors, repos, kernel, bootloader, display manager, SDDM, monitors layout, `.zshrc`, `.zshenv`, `starship.toml`, `kitty.conf`, SSH keys. Existing configs are merged `--ignore-existing`; nothing in `$HOME` is deleted or overwritten.
59
+
60
+**Added:** the runtime dir, the four symlinks above, the marked Hyprland block, `/etc/environment.d/10-de-omarchy.conf` (sets `OMARCHY_PATH`), a PAM stanza for the lock screen, and symlinks for a dozen key commands into `/usr/bin`.
39
61
40
62
## Uninstall
41
63
43
65
./uninstall.sh
44
66
```
45
67
46
-Restores everything from `~/.de-omarchy-backups/<timestamp>/`.
68
+Strips the marked block, removes the symlinks, deletes the runtime — then restore anything else from `~/.de-omarchy-backups/<timestamp>/`. Your desktop returns to its pre-install state after `hyprctl reload`.
47
69
48
70
## Keybindings
49
71
72
+Your existing bindings win — de-omarchy only claims keys that are free. The essentials:
73
+
50
74
| Key | Action |
51
75
|---|---|
52
-| `SUPER+M` / `SUPER+D` / `SUPER tap` | App drawer |
53
-| `SUPER+H` | Keybinding cheat sheet |
54
-| `SUPER+T` | Theme switcher |
55
-| `SUPER+SHIFT+M` | Omarchy menu |
56
-| `SUPER+W` | Background switcher |
57
-| `SUPER+E` | Yazi file manager |
58
-| `SUPER+RETURN` | Terminal (kitty) |
59
-| `SUPER+L` | Lock screen |
76
+| <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>M</kbd> | Omarchy menu |
77
+| <kbd>SUPER</kbd> + <kbd>K</kbd> | Keybindings cheat sheet window |
78
+| <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>Y</kbd> | Cycle bar style |
79
+| <kbd>SUPER</kbd> + <kbd>ALT</kbd> + <kbd>N</kbd> | Notification center |
80
+| <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>M</kbd> | Monitor Manager |
81
+| <kbd>SUPER</kbd> + <kbd>SHIFT</kbd> + <kbd>I</kbd> | Plugin Library |
82
+| <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>A</kbd> / <kbd>B</kbd> / <kbd>W</kbd> | Audio / Bluetooth / Network panel |
83
+| <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>SPACE</kbd> | Background switcher |
84
+| <kbd>SUPER</kbd> + <kbd>PRINT</kbd> / <kbd>ALT</kbd> + <kbd>PRINT</kbd> | Screenshot / screen recording |
85
+| <kbd>SUPER</kbd> + <kbd>CTRL</kbd> + <kbd>T</kbd> | Activity (btop) |
86
+| <kbd>SUPER</kbd> + <kbd>grave</kbd> | Scratchpad |
87
+
88
+Full map, including preserved host bindings and documented conflict decisions: [`keybindings/KEYMAP.md`](keybindings/KEYMAP.md).
89
+
90
+## The CLI
91
+
92
+One router, ~440 self-documenting commands:
93
+
94
+```console
95
+$ omarchy --help # grouped, searchable command index
96
+$ omarchy theme list # 22 themes
97
+$ omarchy theme set catppuccin # live switch
98
+$ omarchy bar style list # the 10 bar presets
99
+$ omarchy bar style set glass # repaint the bar
100
+$ omarchy plugins marketplace # browse the community catalog
101
+$ omarchy plugin add <git-url> # sideload a plugin
102
+$ omarchy shell toggle omarchy.audio # IPC into the running shell
103
+```
104
+
105
+Every command carries machine-readable metadata (`# omarchy:summary=…`), so `--help`, menus, and AI agents all read the same source of truth.
106
+
107
+## Shell plugins
108
+
109
+Plugins are Quickshell components with a `manifest.json`: kinds are `bar-widget`, `panel`, or `service`. First-party plugins ship under `/usr/share/de-omarchy/shell/plugins/` and load automatically; user-installed ones live in `~/.config/omarchy/plugins/` and merge in at scan time (first-party ids — anything under the reserved `omarchy.*` namespace — always win).
110
+
111
+Open **Plugin Library** (`SUPER + SHIFT + I`) to browse the bundled catalog plus the [omarchyplugins.com](https://omarchyplugins.com) marketplace, or drive it headless:
112
+
113
+```console
114
+$ omarchy plugins list
115
+$ omarchy plugins install docker-status
116
+$ omarchy-shell shell setPluginEnabled deomarchy.power-profile true
117
+```
60
118
61
-Existing keybindings preserved. Full map: `keybindings/KEYMAP.md`.
119
+## Themes
120
+
121
+22 themes, each a single `themes/<name>/colors.toml`. Templates under `default/themed/*.tpl` consume `{{ variable }}` placeholders and render into your terminal, GTK, and shell configs at switch time. Making a theme is making one TOML file:
122
+
123
+```bash
124
+cp -r themes/rose-pine themes/my-theme && $EDITOR themes/my-theme/colors.toml
125
+omarchy theme set my-theme
126
+```
127
+
128
+## Screensaver
129
+
130
+The real Omarchy screensaver: your branding art rendered by [terminal-text-effects](https://github.com/ChrisBuilds/terminaltexteffects) at 120 fps, a random effect every 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.
62
131
63
132
## Architecture
64
133
134
+```
135
+~/de-omarchy (source, yours) /usr/share/de-omarchy your session
136
+┌──────────────────────────┐ rsync ┌──────────────────────┐ symlinks ┌─────────────────┐
137
+│ bin/ shell/ themes/│ ───────▶ │ OMARCHY_PATH (root) │ ──────────▶ │ ~/.config/hypr/ │
138
+│ default/ config/ docs/ │ │ │ │ ~/.config/zshrc.d/
139
+└──────────────────────────┘ └──────────────────────┘ └─────────────────┘
140
+ edit here the desktop runs HERE override slot
141
+```
142
+
143
+Three layers, one direction of truth:
144
+
145
+- **Source repo** — where you edit. Never referenced at runtime.
146
+- **Runtime** (`OMARCHY_PATH`, set via `/etc/environment.d`) — the authoritative copy every process reads: Hyprland Lua modules, the Quickshell shell, all `omarchy-*` commands, plugin manifests.
147
+- **Live config** — `~/.config/hypr/deo-*.lua` are *override slots*: plain symlinks you may replace with your own files. Hyprland's Lua loader resolves modules in order `~/.local/state/` → `~/.config/` → `$OMARCHY_PATH/`, so user state beats fork defaults beats nothing.
148
+
149
+Because the runtime is authoritative, deleting or breaking the source checkout cannot hurt a running desktop.
150
+
151
+### Deploy loop for development
152
+
153
+| You changed | Deploy | Apply |
154
+|---|---|---|
155
+| a `bin/omarchy-*` script | `sudo cp bin/omarchy-x /usr/share/de-omarchy/bin/` | nothing needed |
156
+| Hyprland Lua (`default/hypr/`, `config/hypr/`) | same pattern into `runtime/<same path>` | `hyprctl reload` |
157
+| QML under `shell/` | same pattern | `omarchy-restart-shell` |
158
+| a user dotfile template | `omarchy-refresh-config <relpath>` | immediate |
159
+
160
+To test unreleased UI ad hoc, run it straight from the checkout — e.g. `quickshell -p ~/de-omarchy/plugin-library` — without touching the installation.
161
+
162
+## Repository layout
163
+
65
164
```
66
165
de-omarchy/
67
- install.sh # idempotent installer
68
- uninstall.sh # full rollback
69
- shell/ # vendored Quickshell UI
70
- themes/ # 22 themes
71
- bin/ # omarchy-* commands
72
- default/ # hypr runtime, templates, fonts
73
- config/ # user-side hooks (hypr layer, zsh, PAM)
74
- scripts/ # backup, verify, migrate, scan-secrets
75
- packages/ # curated UI-only package list
76
- audit/ # system analysis, conflict mapping
166
+├── install.sh / uninstall.sh deploy / fully revert the layer
167
+├── bin/ ~440 omarchy-* commands; router: bin/omarchy
168
+├── shell/ Quickshell desktop: Commons/, Ui/, plugins/
169
+│ └── plugins/ bar/, panels/, services/, notification-center/, …
170
+├── default/ deployed defaults: hypr/ (Lua), themed/ (tpl), agents/skills/
171
+├── config/ live-config hooks: hypr/, omarchy/shell.json, pam/, zshrc.d/
172
+├── themes/ 22 × colors.toml
173
+├── registry.json plugin catalog shown in the Plugin Library
174
+├── monitor-manager/ standalone visual monitor arrangement app
175
+├── plugin-library/ standalone Plugin Library window
176
+├── keybindings/ KEYMAP.md + cheat-sheet window source
177
+├── docs/ manual/ agents/ vendored upstream references (51-chapter manual included)
178
+└── audit/PARITY-AUDIT.md fork-vs-upstream audit trail
77
179
```
78
180
79
-Runtime: `/usr/share/de-omarchy`. Env: `OMARCHY_PATH` via `/etc/environment.d`, `hl.env`, zsh hook.
181
+## Documentation
182
+
183
+The full [Omarchy Manual](manual/) ships vendored — 51 chapters covering navigation, theming, plugins, updates, troubleshooting, and more. Start at [`manual/01-welcome-to-omarchy.md`](manual/01-welcome-to-omarchy.md). Fork-specific deltas live in [`docs/FORK-NOTES.md`](docs/FORK-NOTES.md); where the two disagree, FORK-NOTES wins.
80
184
81
185
## Credits
82
186
83
-[Omarchy](https://github.com/basecamp/omarchy) by David Heinemeier Hansson (MIT).
84
-Vendored components retain upstream MIT license — see `LICENSE.upstream`.
187
+[Omarchy](https://github.com/basecamp/omarchy) by David Heinemeier Hansson and contributors (MIT). de-omarchy ports its UI, shell, and tooling for non-Omarchy Arch systems; vendored components retain the upstream license — see `LICENSE.upstream`.
85
188