Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1795 commits
Select commit Hold shift + click to select a range
3d033d1
Stop the menu from opening on the previous evaluation's answers (#6601)
dhh Aug 7, 2026
48d77b5
Persist on-screen notification popups across shell restarts (#6600)
dhh Aug 7, 2026
c3bd4a8
Fix unbound XKBLAYOUT under set -u in the keyboard-layout migration (…
acidkill Aug 7, 2026
bb8d2f2
Split agent usage into data files and rename the plugin to omarchy.ag…
dhh Aug 7, 2026
66b1015
Keep the agent mark fallback from stranding on a missing -light twin
dhh Aug 7, 2026
d2b090f
Isolate XDG dirs in shell tests that launch quickshell with a fake HOME
dhh Aug 7, 2026
f490b69
Reopen the wifi passphrase prompt after a wrong saved password (#6584)
DataDave-Dev Aug 7, 2026
96bbe53
Fix panel delegate segfault and the network panel's open stall (#6605)
dhh Aug 7, 2026
9d5c6e2
Keep root= in the kernel cmdline when upgrading to Quattro (#6579)
tmn73 Aug 7, 2026
3bfea9b
Fail loudly when a pre-update snapshot isn't actually created (#6580)
nille Aug 7, 2026
b16ac48
Add commented-out debug symbol repositories to the edge pacman config…
flavorjones Aug 7, 2026
2521b11
Add a disk speed test under a new Trigger > Tests menu (#6607)
dhh Aug 7, 2026
667d2d2
Open panel hotkeys on the focused monitor (#6613)
dhh Aug 7, 2026
b85ae70
Stop pipefail from turning grep -q SIGPIPE exits into false negatives…
dhh Aug 7, 2026
77cf58c
Add Fireworks balance usage panel (#6488)
dhh Aug 7, 2026
f76d058
Force a database refresh before installing keyrings during the Quattr…
dhh Aug 7, 2026
0b24b84
Scope BROWSER to interactive shells so xdg-settings can change the de…
dhh Aug 7, 2026
007d6fc
Use the gmux backlight instead of the Touch Bar on T2 Macs (#6597)
dhh Aug 7, 2026
2b9e272
Run every test file instead of stopping at the first failure (#6622)
scottjones Aug 8, 2026
5e5a6e8
stop omarchy-mise-install from overwriting symlink targets (#6619)
JustMrMendez Aug 8, 2026
318bf2c
Keep the Quattro upgrade from aborting silently into an unsafe state …
dhh Aug 8, 2026
81ecac4
Fix WhatsApp Slim migration targeting brave-origin-beta instead of br…
akashgagda Aug 8, 2026
47fa3ce
Match style from other updates
dhh Aug 8, 2026
76dc120
Fit the About window to its rendered content (#6627)
dhh Aug 8, 2026
0f1e0ce
Remove the omarchy-update-perform compatibility wrapper
dhh Aug 8, 2026
a858803
Make this note of where they're usable
dhh Aug 8, 2026
412f6ac
Don't need the extra CR
dhh Aug 8, 2026
48c17bb
mise already gives the CR needed
dhh Aug 8, 2026
a3aa3c9
Nicer with an extra CR here
dhh Aug 8, 2026
366b789
Revert "Nicer with an extra CR here"
dhh Aug 8, 2026
76117fb
Take mise tool updates without waiting out the release cooldown
dhh Aug 8, 2026
ab367b9
Stop mise wrappers from waiting out the release cooldown
dhh Aug 8, 2026
b925431
Give SSH commands the user-level tool paths (#6632)
dhh Aug 8, 2026
99293aa
Place the Tailscale bar widget on the right
dhh Aug 8, 2026
5a58f79
Keep clicking a notification working after a shell restart (#6636)
dhh Aug 9, 2026
4d29cbb
Use shared speed test dial scale
dhh Aug 8, 2026
a0dbd90
Add battery percentage menu entry (#6640)
bwynnyck Aug 9, 2026
3aa7c1e
Rename menu
dhh Aug 9, 2026
1ded25f
Make a dead lock client diagnosable and recoverable (#6630)
dhh Aug 9, 2026
f8c235a
Read /boot as root when looking for the Omarchy UKI (#6653)
dhh Aug 9, 2026
e4d85bd
Keep concurrent usage collectors off one shared temp file (#6654)
dhh Aug 9, 2026
8be0ca9
Expect Tailscale on the right in the bar defaults test
dhh Aug 9, 2026
2a0c737
Claude collector: attribute pi usage by provider, not api prefix (#6655)
dalmasluca Aug 9, 2026
0795ede
Fix invisible Helix cursorline, ruler, and picker highlights (#6638)
lukehsiao Aug 9, 2026
19572a1
Skip compositor tests without recording a failure
dhh Aug 9, 2026
dd61d4a
Ship herdr alongside tmux (#6406)
dhh Aug 9, 2026
c4dda58
Stop the clipboard picker freezing on huge pastes (#6568)
markbus-ai Aug 9, 2026
e4a8e01
Tag foot's other app-id as a terminal
dhh Aug 9, 2026
ba7925a
Carry tmux's tab moves, zoom flag, and hostname into herdr
dhh Aug 9, 2026
f511cf8
Hide herdr's outer pane frame like tmux
dhh Aug 9, 2026
9d61915
Fix KeyboardLayout plugin label permanently displaying ENG on some sy…
artfwo Aug 9, 2026
6ddc395
Clean up the terminal and reconnect when SSH connections drop (#6661)
dhh Aug 9, 2026
e1d0c4e
Ship the keyboard layout widget on the bar and make clicking it work …
dhh Aug 9, 2026
9b03f15
Detect Elan match-on-chip fingerprint readers again (#6578)
meirdick Aug 9, 2026
6fa4f78
Add deferred first-boot provisioning and factory reset (#6621)
dhh Aug 9, 2026
0a83590
Show install-style progress through first-boot account setup (#6631)
dhh Aug 9, 2026
c7c897c
Follow herdr's new tab bar status config (#6674)
dhh Aug 10, 2026
7644b56
Extract the setup form shared with the ISO installer (#6669)
dhh Aug 10, 2026
4e31b61
Swap terminaltexteffects for ttfx (#6670)
dhh Aug 10, 2026
4564c24
Cover the shared setup form's cancel contract
dhh Aug 10, 2026
f228c4d
Stop checking for commands the package set guarantees
dhh Aug 10, 2026
dc1224c
Stop the sleep lock budget assertion from flaking
dhh Aug 10, 2026
4cc1493
Use sudo for terminal update inhibition
dhh Aug 10, 2026
354c2f0
Wait for the terminal resize before the first screensaver effect
dhh Aug 10, 2026
7633d8d
Keep the bar mapped while hidden so revealing it is instant (#6677)
vivek7405 Aug 10, 2026
6d7826d
Give non-login shells the system locale
dhh Aug 10, 2026
2d44ad5
End deferred first boot on the finished progress bar
dhh Aug 10, 2026
9f13bfc
Center the timezone picker in first-boot setup
dhh Aug 10, 2026
0b670cd
Title herdr's terminal window like tmux did
dhh Aug 10, 2026
4ab51df
Require a factory snapshot to reset a computer (#6680)
dhh Aug 10, 2026
932efbd
Center the first-boot setup screen and fix its greeter animation
dhh Aug 10, 2026
507059e
Open Herdr with SUPER + CTRL + RETURN
dhh Aug 10, 2026
03b825f
Show Herdr keybindings with SUPER + CTRL + K
dhh Aug 10, 2026
366c708
Keyboard window capture in the region picker: Return, Tab, arrows (#6…
jzimdars Aug 10, 2026
199bd01
Reach every window the region picker can highlight
dhh Aug 10, 2026
567e24c
Hold the indicator peek open while the pointer is on the bar (#6663)
scottjones Aug 10, 2026
c53190b
Remember Bluetooth on/off through the rfkill soft block (#6682)
dhh Aug 10, 2026
e4604fb
Generate image picker thumbnails with libvips in parallel (#6686)
dhh Aug 10, 2026
5649740
Build the menu IPC payload with jq instead of perl
dhh Aug 10, 2026
8bc8540
List Herdr right below Tmux in the keybindings menu
dhh Aug 10, 2026
186668a
Apply the Broadcom Wi-Fi quirk to Macs without a T2 (#6652)
cupatea Aug 10, 2026
477284f
Hide install-time setup plumbing from the command listing
dhh Aug 10, 2026
536fcd5
Move install-time plumbing out of the setup namespace
dhh Aug 10, 2026
0d45f09
Note that fully hidden groups stay out of GROUP_DESCRIPTIONS
dhh Aug 10, 2026
3d1914a
Let bar put place a widget on a bar it does not recognize (#6687)
dhh Aug 11, 2026
1e7bb66
Recover a session lock stranded by a dead shell (#6692)
dhh Aug 11, 2026
383addc
Rearrange keybindings presentation
dhh Aug 11, 2026
23d85a9
Open the keybindings menu on first login
dhh Aug 11, 2026
f97ba73
Wait for a connection before prompting to update
dhh Aug 11, 2026
2b38f75
Show the per-model weekly limit Claude's usage endpoint reports (#6691)
GebaRoanoke Aug 11, 2026
9ea9f80
Missed the glyph
dhh Aug 11, 2026
0ad64a5
Fix command injection in theme install, drop tzupdate NOPASSWD (#6694)
KazeTachinuu Aug 11, 2026
efe8053
Title a model-scoped limit the way the flat ones title themselves
dhh Aug 11, 2026
5edc349
Bind SUPER + CTRL + a number to the bar's right panels (#6702)
dhh Aug 11, 2026
66f3155
Label the keyboard widget with the xkb language code (#6699)
defer Aug 11, 2026
9f0c4b9
Ensure we don't register duplicate bindings
dhh Aug 11, 2026
3b08a85
Recover monitors Hyprland brought up with no mode (#6701)
dhh Aug 11, 2026
4d0531f
Add QR code capture (#6705)
dhh Aug 11, 2026
27d1b6b
Resolve omarchy_monitor_scale variable reference in clamshell recover…
s-gato Aug 11, 2026
77bf2ef
Share files and folders with the desktop file chooser (#6707)
dhh Aug 11, 2026
1c9dfc5
Greet the first login with a keybindings toast again
dhh Aug 11, 2026
5817feb
Mute all audio on right-click (#6708)
kevinmcconnell Aug 11, 2026
05bb82b
Add checkout bin to sudoers path
ryanrhughes Aug 11, 2026
5b2c02d
Fix unclickable tray submenus by drilling down inside the popup (#6703)
acidkill Aug 11, 2026
41818ec
Start the agent in ~/Work when launched from home
dhh Aug 11, 2026
f4b832e
fix(monitor): fix display mirroring recovery and UI state (#6457)
setiapam Aug 11, 2026
0820484
Detect NVIDIA GPUs without waking them (#6712)
dhh Aug 11, 2026
912a4ad
Better order
dhh Aug 11, 2026
7d08473
Add Herdr keybindings to the Learn menu
dhh Aug 11, 2026
64e20f8
Let the menu fill 70% of the screen
dhh Aug 11, 2026
96a50cf
Add the Discord community to the Learn menu
dhh Aug 11, 2026
1bb6600
Repair theme symlinks the state-move migration left dangling (#6717)
shrijit37 Aug 11, 2026
b99fd91
Simplify the Quattro upgrade, and stop it leaving an error bar behind…
dhh Aug 11, 2026
1e3c43a
Assert the focused monitor the panel actually reports
dhh Aug 11, 2026
3888dca
Stop script hanging up the inhibitor before it starts
dhh Aug 11, 2026
4727bad
Stop the update-lock stub racing the holder it spawns
dhh Aug 11, 2026
2fa490d
Rebuild boot images the Plymouth migration left stale
dhh Aug 12, 2026
d6b21f8
Launch the default coding agent without permission prompts (#6729)
dhh Aug 12, 2026
ab57ad6
Make notification history the last ten notifications on disk
dhh Aug 12, 2026
cd84583
Show a notification the sender updated, instead of the version it rep…
dhh Aug 12, 2026
fd23ca0
Prune the package cache before updating (#6734)
dhh Aug 12, 2026
9b8bf1d
Fix two races in the notification popup and history handling (#6735)
dhh Aug 12, 2026
21b610a
Need an extra CR for presentation
dhh Aug 12, 2026
3da9eaf
Add quattro background by vulturetone
dhh Aug 12, 2026
0fcdd71
Drop backgrounds no longer worthy
dhh Aug 12, 2026
5c74f82
Ask for the keyboard layout only when the answer can change (#6727)
markbus-ai Aug 12, 2026
a9c159a
Restore FPC fingerprint detection in Quattro (#6737)
Vtorrealba Aug 12, 2026
970ec26
Don't let a usbfs claim count as a kernel driver (#6744)
dhh Aug 12, 2026
106320a
Install ChatGPT as a desktop app under Install > AI (#6747)
dhh Aug 12, 2026
0900855
Stop hot-reloading the shell when a package upgrade rewrites it (#6751)
dhh Aug 12, 2026
0fa3170
Skip shell tests when the compositor can't be reached (#6749)
dhh Aug 12, 2026
66e3f47
Follow the keyboard being typed on in the layout widget (#6740)
KazeTachinuu Aug 12, 2026
b97a148
Treat the guard test's socket fixture as optional (#6755)
dhh Aug 12, 2026
9502b81
Reshape the agent launcher into omarchy agent (#6757)
dhh Aug 12, 2026
2cc3510
Offer an AI diagnosis when a process crashes (#6746)
dhh Aug 12, 2026
f5893dd
Launch the default agent from the agents widget right-click (#6759)
dhh Aug 12, 2026
438f7b3
Stop ttfx before closing the screensaver terminal (#6764)
dhh Aug 12, 2026
38542a1
Open the agent in a normal tiled window (#6769)
dhh Aug 12, 2026
9672d85
fix `--help` being skipped for bin routes that only partially resolve…
EFrMG Aug 13, 2026
f075a78
Recover the wallpaper picker after interrupted thumbnails (#6775)
AksharP5 Aug 13, 2026
457aec6
Stop Bluetooth discovery when the panel closes (#6794)
dhh Aug 13, 2026
6fad761
Unmask wpa_supplicant left masked from the iwd era (#6793)
dhh Aug 13, 2026
ecd57bc
Drop the kms hook when the proprietary NVIDIA driver handles early KM…
matjam Aug 13, 2026
c8fb5be
Explain an expired Claude sign-in instead of hiding the limits (#6795)
dhh Aug 13, 2026
8ca61d6
Open the About window at the size it last settled on (#6770)
dhh Aug 13, 2026
5f74a99
Stop closed network panels from leaving Wi-Fi scanning enabled (#6772)
franciscoaccabral Aug 13, 2026
f6fd2e7
Wait for ttfx before closing its terminal (#6773)
grantwiley Aug 13, 2026
ce21845
Let --force actually re-probe the Claude limits endpoint (#6798)
dhh Aug 13, 2026
860503f
Stop hybrid GPU mode queries from hanging (#6738)
yashranaway Aug 13, 2026
8b9e43d
Only offer video capture devices as webcams (#6732)
yashranaway Aug 13, 2026
090574e
Treat LVDS panels as internal displays (#6752)
yashranaway Aug 13, 2026
78d3224
Bound the hybrid GPU gate's supergfxctl query (#6799)
dhh Aug 13, 2026
929849c
Add the manual to the source code for better agent evolution
dhh Aug 13, 2026
25c2b3a
perf(agents): cut codex usage collector memory with SQL filter and ca…
markbus-ai Aug 13, 2026
fa78633
Not needed
dhh Aug 13, 2026
9c9e082
New launch backgrounds for Omarchy
dhh Aug 13, 2026
144f4d1
First pass on updates for Quattro
dhh Aug 13, 2026
5543479
Cover the shell, capture, browsers, and networking in the manual
dhh Aug 13, 2026
93372d5
Drop the tz and style command group descriptions
dhh Aug 13, 2026
edcbcb4
Point the hyprsunset autostart hint at autostart.lua
dhh Aug 13, 2026
b2207c3
Persist notification images so history keeps avatars (#6804)
dhh Aug 13, 2026
e2cffe1
Add Grok Bot to the Install > AI menu (#6811)
dhh Aug 13, 2026
b508541
Use official marks for the AI installers (#6814)
dhh Aug 13, 2026
5b8fef4
Flesh out the Windows VM chapter
dhh Aug 13, 2026
b085980
Keep AppLibrary scans out of login shells (#6815)
dhh Aug 13, 2026
ed795d8
Select packaged Cursor for theme sync (#6808)
robzolkos Aug 13, 2026
14dc3a3
Add omarchy-dev-font for adding marks to the icon font (#6819)
dhh Aug 13, 2026
82ae514
Fix notification focus for agent terminals (#6801)
atomashevic Aug 13, 2026
5c51ad6
Fix broken manual links in README (#6809)
jitendradara12 Aug 13, 2026
f73740f
Blank the lock screen while the fingerprint reader waits (#6817)
e2escobar Aug 13, 2026
30f8f19
Add a toggle for crash capture (#6824)
dhh Aug 13, 2026
de854d3
Free the Copy URL shortcut from ghost extension registrations (#6821)
dhh Aug 13, 2026
1ae83f1
Add a switchers chapter and fix drift found on a second manual pass
dhh Aug 13, 2026
3a4eda7
Drop retired nmtui and bluetoothctl interactions from the bar README
dhh Aug 13, 2026
5e5197a
Point the README manual TOC at the renumbered chapters
dhh Aug 13, 2026
df70883
Keep the Copy URL migration's browser prompt visible (#6842)
acrogenesis Aug 14, 2026
dc698e5
Suppress LocalSend's redundant tray item (#6852)
dhh Aug 14, 2026
d35f4b6
Wait on the profile being repaired, not on every browser (#6837)
shrijit37 Aug 14, 2026
625c663
Point the headless theme test at the renumbered Tokyo Night backgroun…
dhh Aug 14, 2026
5ca3030
Put a blocked package upgrade back to whoever is updating (#6830)
dhh Aug 14, 2026
864b0d0
Recognize colored package conflict errors
dhh Aug 14, 2026
3bd6ed0
Words
dhh Aug 14, 2026
ca5add0
Words
dhh Aug 14, 2026
fa83593
Fix Pi prompt launch (#6857)
fayimora Aug 14, 2026
28dcbae
Restore preinstalls from the menu, and match the lists to what quattr…
dhh Aug 14, 2026
4559f2d
Add Moonlight to the preinstall remove/install lists
dhh Aug 14, 2026
e7ea031
Host the manual's images in the repo under manual/images (#6861)
dhh Aug 14, 2026
8b70f01
Point Learn > Omarchy at the manual on omarchy.org
dhh Aug 14, 2026
b15ec6c
Fix typo(Primeagen) in Neovim documentation (#6867)
lu-jim Aug 14, 2026
1fe471d
Link the manual to the extra themes page on omarchy.org
dhh Aug 14, 2026
e6d7c62
Extra themes are added via PRs to omarchy-site now
dhh Aug 14, 2026
ebdc026
Point the theme installer at the extra themes page on omarchy.org
dhh Aug 14, 2026
f002044
More manual tweaks
dhh Aug 14, 2026
9b72edc
Add hover-revealed close button to notification toasts (#6946)
dhh Aug 15, 2026
b724f76
Install missing apps when choosing defaults (#6950)
dhh Aug 15, 2026
4b93f8d
Dim installed software in the Install menus instead of hiding it (#6955)
dhh Aug 15, 2026
75b99f7
Fix Windows VM launch never opening an RDP window (#6893)
DataDave-Dev Aug 15, 2026
0965ac2
Fix o.shell_succeeds() always returning false inside Hyprland
dhh Aug 15, 2026
16c8888
Sort documentation by genre and document the layout
dhh Aug 15, 2026
b68c222
Correct stale claims in menu jsonc headers and bar README
dhh Aug 15, 2026
f418939
Bring docs/ up to date and cover the undocumented subsystems
dhh Aug 15, 2026
022f699
Plan the dots feature for preserving and syncing user configs
dhh Aug 15, 2026
b5bb8da
Repair foot.ini configs holding a literal \n[text-bindings] line (#6938)
dhh Aug 15, 2026
1c3da94
Keep mise wrappers from writing to stdout (#6940)
dhh Aug 15, 2026
c0a20e2
Stop the bar sticking in move mode after a press-and-hold on a widget…
dhh Aug 15, 2026
ff4e92e
Fix Clone Plugin failing with "unknown clone option" (#6942)
dhh Aug 15, 2026
25bee1d
Keep the calendar's day names in English (#6988)
dhh Aug 15, 2026
9f109a7
Format the whole speed test dial for the locale (#6994)
dhh Aug 15, 2026
dd9dee4
Launch claude and codex agents with auto-review instead of full bypas…
dhh Aug 15, 2026
7be59e1
Merge pull request #6939 from basecamp/fix-shell-succeeds-hyprland
ryanrhughes Aug 15, 2026
33cda8b
Add --gh-keys so sshd setup can run without prompts (#7086)
omarchybot Aug 16, 2026
a3de80d
Keep shell tests inside their fixtures (#6763)
yashranaway Aug 16, 2026
7488ead
Document remapping the CapsLock compose key (#7091)
omarchybot Aug 16, 2026
30f7a06
Update tokyo-night winding-road background (#7057)
heyjohnwilson Aug 16, 2026
1c1116b
Fix passwordless OWE Wi-Fi handling (#7238)
dhh Aug 17, 2026
262d6f0
Switch to the mise-bin package (#7244)
omarchybot Aug 17, 2026
006460a
Decode UTF-16 clipboard text (#7249)
dhh Aug 17, 2026
0962523
Plan the backup service
dhh Aug 16, 2026
1c8f728
Document full-line style for markdown docs in AGENTS.md
dhh Aug 16, 2026
f8b0d97
Revise backup plan after codex xhigh review
dhh Aug 16, 2026
f32ebbd
Omarchy Server Edition
dhh Aug 17, 2026
ec77971
Shrink theme backgrounds without touching resolution (#7266)
omarchybot Aug 18, 2026
0b51117
Give scratchpad a Quake-style console presentation (#7409)
tobi Aug 18, 2026
d18cb4f
Stick to the theme's rounding
dhh Aug 18, 2026
8398771
Give the Quake console its own file, an agent, and half a screen (#7420)
omarchybot Aug 18, 2026
fa955bf
Better without gaps
dhh Aug 18, 2026
238021c
Decode mixed UTF-16 clipboard text (#7466)
dhh Aug 19, 2026
2684c4b
Print the OEM Windows product key from firmware (#7480)
dhh Aug 19, 2026
a4219f8
Store theme backgrounds as webp (#7477)
omarchybot Aug 19, 2026
3765e80
Switch DNS providers without a password prompt (#7472)
omarchybot Aug 19, 2026
1e70cca
Fall back to polkit when the DNS sudoers grant is missing (#7492)
dhh Aug 19, 2026
260a729
Add T3 Code to the AI install menu (#7496)
omarchybot Aug 19, 2026
023021a
Add Remove > AI for the apps Install > AI offers (#7504)
omarchybot Aug 19, 2026
b3ba358
Rearrange the order
dhh Aug 19, 2026
3451719
Reorder remove to match
dhh Aug 19, 2026
9455496
Fix style inconsistencies in bin/ (#7518)
dhh Aug 19, 2026
688d7df
Drop the Windows VM start notification (#7585)
omarchybot Aug 20, 2026
d3d9bea
Add a clock format with live seconds (#7586)
omarchybot Aug 20, 2026
cf29ce1
Add hey (hey-cli) as a lazy-installed mise tool (#7626)
monorkin Aug 20, 2026
ed7bae4
Replace Gemini coding agent with Antigravity (#6900)
sanjyay Aug 20, 2026
b636164
Leave an auto-scaled internal panel alone in clamshell recovery (#7581)
fuchsblau Aug 22, 2026
9d93807
Tooltip for better discovery of alt date formats
dhh Aug 22, 2026
c539f03
Explain things better
dhh Aug 22, 2026
2c593db
Switch back to the packaged quickshell now that 0.3.1 kills synchrono…
omarchybot Aug 22, 2026
13a969e
Only offer Update > Extra Themes when there is one (#7775)
omarchybot Aug 22, 2026
07fccef
Add Super + Q as a second chord for closing a window (#7767)
omarchybot Aug 22, 2026
eca89f9
Animate the About logo with a passing glint (#7768)
omarchybot Aug 22, 2026
2c247e3
Stop the About logo moving when the animation starts (#7786)
omarchybot Aug 22, 2026
1cc5c72
Add Ori as a lazy-loaded agent and a default-agent choice (#7709)
omarchybot Aug 23, 2026
1926611
Clipboard history needs to be bigger!
dhh Aug 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

# Python bytecode (orchestrator)
__pycache__/
*.pyc
11 changes: 11 additions & 0 deletions .luarc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"workspace": {
"library": [
"/usr/share/hypr/stubs"
],
"checkThirdParty": false
},
"diagnostics": {
"globals": ["hl"]
}
}
142 changes: 72 additions & 70 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,32 @@
# Task Guides

Deeper instructions for specific kinds of work live in `agents/skills/`. Read the
matching guide before starting:

- [`agents/skills/command-metadata.md`](agents/skills/command-metadata.md) - adding or changing commands in `bin/`
- [`agents/skills/install-scripts.md`](agents/skills/install-scripts.md) - working under `install/` or on system/user setup commands
- [`agents/skills/shell-dev.md`](agents/skills/shell-dev.md) - editing the Quickshell desktop under `shell/`
- [`agents/skills/icon-font.md`](agents/skills/icon-font.md) - adding branded glyphs to `default/fonts/omarchy/omarchy.ttf`
- [`agents/skills/acceptance-tests.md`](agents/skills/acceptance-tests.md) - writing or running graphical acceptance tests under `test/acceptance.d/`
- [`agents/skills/visual-verification.md`](agents/skills/visual-verification.md) - verifying any change with a visual effect in the running UI
- [`agents/skills/migrations.md`](agents/skills/migrations.md) - creating or changing migrations under `migrations/`

# Documentation Layout

Three documentation trees, split by genre and audience:

- `agents/skills/` - task procedure ("do this when doing X"), for anyone working on the codebase
- `docs/` - reference on how the system is shaped (file layout, update pipeline, theming, shell architecture), for anyone working on the codebase; skills link here for depth
- `manual/` - end-user documentation for using Omarchy, published; never codebase internals

# Style

- In markdown documents (`plans/`, `docs/`, `manual/`), write full lines — no hard wrapping at 80 columns; break only at structural boundaries like headings and list items
- Two spaces for indentation, no tabs
- Use bash 5 conditionals: use `[[ ]]` for string/file tests and `(( ))` for numeric tests
- In `[[ ]]`, don't quote variables, but do quote string literals when comparing values (e.g., `[[ $branch == "dev" ]]`)
- Prefer `(( ))` over numeric operators inside `[[ ]]` (e.g., `(( count < 50 ))`, not `[[ $count -lt 50 ]]`)
- Prefer a full `if`/`else` conditional for simple two-path control flow; don't rely on `exec` or `exit` in one branch to make following statements unreachable
- For strings/paths with spaces, quote them instead of escaping spaces with `\ ` (e.g., `"$APP_DIR/Disk Usage.desktop"`, not `$APP_DIR/Disk\ Usage.desktop`)
- Shebangs must use `#!/bin/bash` consistently (never `#!/usr/bin/env bash`)
- Scripts under `install/` and `migrations/` may be sourced and intentionally omit shebangs
Expand All @@ -12,7 +35,9 @@

All commands start with `omarchy-`. Prefixes indicate purpose.

The authoritative command group list lives in `bin/omarchy` in `GROUP_DESCRIPTIONS`. Keep `GROUP_DESCRIPTIONS` updated when adding a new command prefix.
The authoritative list of user-facing command groups lives in `bin/omarchy` in `GROUP_DESCRIPTIONS`. Keep `GROUP_DESCRIPTIONS` updated when adding a new command prefix users are meant to browse to.

A group whose commands are all `# omarchy:hidden=true` gets no entry. That table drives the top-level group listing on its own, so an entry there advertises the group even when every command in it is hidden. `apply-` and `provision-` are deliberately absent for that reason; both still route, and `omarchy <group>` still prints a group header without one.

Common prefixes include:

Expand All @@ -29,103 +54,80 @@ Common prefixes include:
- `theme-` - theme management
- `update-` - update components

Other current prefixes include:

- `ac-`, `audio-`, `battery-`, `branch-`, `brightness-`, `channel-`, `config-`, `debug-`, `dev-`, `drive-`, `first-`, `font-`, `haptic-`, `hibernation-`, `hook-`, `hyprland-`, `menu-`, `migrate-`, `notification-`, `npx-`, `plymouth-`, `powerprofiles-`, `reinstall-`, `remove-`, `screensaver-`, `show-`, `snapshot-`, `state-`, `sudo-`, `swayosd-`, `system-`, `transcode-`, `tui-`, `tz-`, `upload-`, `version-`, `voxtype-`, `webapp-`, `wifi-`, `windows-`
Do not maintain a second exhaustive prefix list here. Consult
`GROUP_DESCRIPTIONS` when selecting or checking a command group so this
guidance does not drift from the router.

# Command Metadata

Commands in `bin/` can declare CLI metadata in comments near the top of the file. `bin/omarchy` scans the first 80 lines, and tests expect command metadata to remain valid.

Supported metadata keys:

- `# omarchy:summary=...` - short help text
- `# omarchy:group=...` - command group when it differs from the filename-derived prefix
- `# omarchy:name=...` - command name within the group
- `# omarchy:args=...` - usage arguments
- `# omarchy:examples=...` - examples separated with ` | `
- `# omarchy:alias=...` / `# omarchy:aliases=...` - alternate routes
- `# omarchy:hidden=true` - hide from default command listings
- `# omarchy:requires-sudo=true` - mark commands that require sudo

Prefer explicit metadata for user-facing commands. Keep routes consistent with the filename unless there is a deliberate alias or compatibility route.

Example:

```bash
# omarchy:summary=Take a screenshot
# omarchy:group=capture
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy]
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
# omarchy:aliases=omarchy screenshot
```
# Runtime Environment

# Install Scripts
- `$OMARCHY_PATH` is set at the top level by the uwsm session environment and is always available to Omarchy runtime code.
- Commands in `bin/` and Quickshell QML should rely on `$OMARCHY_PATH` / `Quickshell.env("OMARCHY_PATH")`; do not derive fallback paths from `HOME`, `Quickshell.shellDir`, or re-export/default `OMARCHY_PATH` manually.

Install entry points (`install.sh`, `boot.sh`) use `#!/bin/bash`. Many scripts under `install/` are sourced via `run_logged` and intentionally do not have shebangs.
# Privileged Commands

Install stage files follow this pattern:
- Follow the "Privilege Escalation" section of `default/agents/skills/omarchy/SKILL.md`. It draws the
`sudo`/`pkexec` line by whether the caller has a terminal to enter a password in, and the repo's
own scripts follow it.

- `install/*/all.sh` lists scripts in execution order
- leaf scripts are sourced by `run_logged $OMARCHY_INSTALL/path/to/script.sh`
- avoid `exit` in sourced install scripts unless intentionally aborting the install
- use `$OMARCHY_INSTALL` and `$OMARCHY_PATH` instead of hard-coded Omarchy paths
- keep hardware-specific logic under `install/config/hardware/`
- prefer helper commands for package and command checks where available
# Git

Raw `command -v`, `pacman`, and `pacman-key` are acceptable in bootstrap/preflight/package-helper contexts where the helper commands may not be available yet or where direct package-manager behavior is the point of the script.
- Commits should be atomic: include only one coherent change or fix, and do not mix unrelated work.
- Commit messages should be succinct and describe the change being made.

# Helper Commands

Use these instead of raw shell commands:

- `omarchy-cmd-missing` / `omarchy-cmd-present` - check for commands
- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages
- `omarchy-pkg-missing` / `omarchy-pkg-present` - check for packages (don't use these if you can just use `omarchy-pkg-add`/`omarchy-pkg-drop`)
- `omarchy-pkg-add` - install packages (handles both pacman and AUR)
- `omarchy-pkg-drop` - remove packages; use this instead of raw `pacman -R*`
- `omarchy-notification-send` - send desktop notifications; do not call `notify-send` directly
- `omarchy-hw-asus-rog` - detect ASUS ROG hardware (and similar `hw-*` commands)

Exceptions are allowed for bootstrap, preflight, migration, and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.
Commands installed by Omarchy's default package set are runtime invariants. Invoke them directly; do not add defensive `omarchy-cmd-present` / `omarchy-cmd-missing` checks around them. Use command-presence helpers only for genuinely optional dependencies or code that can run before the default package set is installed.

Exceptions are allowed for migration and package-helper scripts where the helper may not be available yet, where the helper itself is being implemented, or where direct package-manager behavior is required.

# Menu

- The menu definition lives in `default/omarchy/omarchy-menu.jsonc`;
[`docs/menu.md`](docs/menu.md) covers the schema, guards, and providers.
- Do not add `aliases` to new menu entries. Aliases are reserved for
established alternate names users already type, kept for compatibility.

# Config Structure

- `config/` - default configs copied to `~/.config/`
- `default/themed/*.tpl` - templates with `{{ variable }}` placeholders for theme colors
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, color0-15)
- `themes/*/colors.toml` - theme color definitions (accent, background, foreground, red/green/yellow/blue/magenta/cyan and bright_* variants)

# Visual Changes
# Tests

When making visual changes, such as Waybar styles or desktop appearance, always take and analyze a screenshot after applying the change to verify the result. Use `omarchy capture screenshot fullscreen save` for fullscreen screenshots.
Run focused automated tests for the area you changed;
[`docs/testing.md`](docs/testing.md) covers how the suites are shaped. Current
test entry points:

# Refresh Pattern
- `./test/all` - aggregate runner for CLI and shell tests; it intentionally does not run graphical acceptance tests
- `./test/cli` - CLI routing, command metadata, theme helpers, and safe dispatch coverage
- `./test/shell` - all Omarchy shell tests under `test/shell.d/`

To copy a default config to user config with automatic backup:
New Omarchy shell tests should live in `test/shell.d/*-test.sh` so `./test/shell` picks them up automatically. Source `test/shell.d/base-test.sh` for shared root-path discovery, assertions, and Node test helpers.

```bash
omarchy-refresh-config hypr/hyprlock.conf
```
The graphical acceptance suite runs in a disposable VM, not in the active
development session; see [`agents/skills/acceptance-tests.md`](agents/skills/acceptance-tests.md).

This copies `~/.local/share/omarchy/config/hypr/hyprlock.conf` to `~/.config/hypr/hyprlock.conf`.
Visual changes must be verified in the running UI in addition to automated
tests; follow [`agents/skills/visual-verification.md`](agents/skills/visual-verification.md).

# Migrations

To create a new migration, run `omarchy-dev-add-migration --no-edit`. This creates a migration file named after the unix timestamp of the last commit.

New migration format:
- File permissions must be `0644` (`-rw-r--r--`); migrations are sourced, not executed directly
- No shebang line
- Start with an `echo` describing what the migration does
- Use `$OMARCHY_PATH` to reference the omarchy directory
- Prefer helper commands such as `omarchy-cmd-present`, `omarchy-cmd-missing`, `omarchy-pkg-present`, and `omarchy-pkg-missing`

Some older migrations predate these rules. Do not copy older migrations that start with shebangs, omit the leading `echo`, or hard-code `~/.local/share/omarchy`.
# Refresh Pattern

Migrations may use raw `pacman`, `command -v`, or direct config edits when needed for historical compatibility or one-off repair work.
To copy a default config to user config with automatic backup:

Example:
```bash
echo "Disable fingerprint in hyprlock if fingerprint auth is not configured"

if omarchy-cmd-missing fprintd-list || ! fprintd-list "$USER" 2>/dev/null | grep -q "finger"; then
sed -i 's/fingerprint:enabled = .*/fingerprint:enabled = false/' ~/.config/hypr/hyprlock.conf
fi
omarchy-refresh-config hypr/hyprland.lua
```

This copies `$OMARCHY_PATH/config/hypr/hyprland.lua` to `~/.config/hypr/hyprland.lua`. The argument
is interpolated into both paths and only checked with `[[ -e ]]`, so pass a plain relative path: a
name containing `..` resolves and copies, landing outside `~/.config` rather than being rejected.
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
71 changes: 71 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,77 @@ Omarchy is a beautiful, modern & opinionated Linux distribution by DHH.

Read more at [omarchy.org](https://omarchy.org).

## The Omarchy Manual

The manual lives in [`manual/`](manual/), which is its authoritative source. It's
mirrored to [learn.omacom.io](https://learn.omacom.io/2/the-omarchy-manual), where
its screenshots are also hosted.

- [Welcome to Omarchy!](manual/01-welcome-to-omarchy.md)

**The Basics**

- [Getting Started](manual/02-getting-started.md)
- [Coming From Mac or Windows](manual/03-coming-from-mac-or-windows.md)
- [Navigation](manual/04-navigation.md)
- [The top bar](manual/05-the-top-bar.md)
- [Themes](manual/06-themes.md)
- [Hotkeys](manual/07-hotkeys.md)
- [Unified Clipboard & History](manual/08-unified-clipboard-history.md)
- [Reminders](manual/09-reminders.md)
- [Notices](manual/10-notices.md)
- [Text Extraction & Dictation](manual/11-text-extraction-dictation.md)
- [Screenshots & Recording](manual/12-screenshots-recording.md)
- [Toggles, idle & screensaver](manual/13-toggles-idle-screensaver.md)
- [Omarchy CLI](manual/14-omarchy-cli.md)

**The Applications**

- [Terminal](manual/15-terminal.md)
- [Neovim](manual/16-neovim.md)
- [AI](manual/17-ai.md)
- [Development Tools](manual/18-development-tools.md)
- [Shell Tools](manual/19-shell-tools.md)
- [Shell Functions](manual/20-shell-functions.md)
- [TUIs](manual/21-tuis.md)
- [GUIs](manual/22-guis.md)
- [Browsers](manual/23-browsers.md)
- [Commercial apps/services](manual/24-commercial-apps-services.md)
- [Web Apps](manual/25-web-apps.md)
- [Gaming](manual/26-gaming.md)
- [Filling out PDFs](manual/27-filling-out-pdfs.md)
- [Windows VM](manual/28-windows-vm.md)
- [Other Packages](manual/29-other-packages.md)

**Configuration**

- [Updates](manual/30-updates.md)
- [Dotfiles](manual/31-dotfiles.md)
- [Shell plugins](manual/32-shell-plugins.md)
- [Monitors](manual/33-monitors.md)
- [Keyboard, Mouse, Trackpad](manual/34-keyboard-mouse-trackpad.md)
- [Networking](manual/35-networking.md)
- [System sleep](manual/36-system-sleep.md)
- [Hardware authentication](manual/37-hardware-authentication.md)
- [Fonts](manual/38-fonts.md)
- [Backgrounds](manual/39-backgrounds.md)
- [Prompt](manual/40-prompt.md)
- [Branding](manual/41-branding.md)
- [Common tweaks](manual/42-common-tweaks.md)
- [Extra themes](manual/43-extra-themes.md)
- [Making your own theme](manual/44-making-your-own-theme.md)

**The Rest**

- [Mac support](manual/45-mac-support.md)
- [Troubleshooting](manual/46-troubleshooting.md)
- [FAQ](manual/47-faq.md)
- [System snapshots](manual/48-system-snapshots.md)
- [Security](manual/49-security.md)
- [Omarchy on...](manual/50-omarchy-on.md)
- [Dual Boot Install](manual/51-dual-boot-install.md)
- [Unattended Installs](manual/52-unattended-installs.md)

## License

Omarchy is released under the [MIT License](https://opensource.org/licenses/MIT).
46 changes: 46 additions & 0 deletions agents/skills/acceptance-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Acceptance Tests

Read this before writing or running the graphical acceptance suite under
`test/acceptance.d/`.

The graphical acceptance suite lives in `test/acceptance` with test files under
`test/acceptance.d/*-test.sh`. It exercises a real installed Omarchy desktop,
including session health, shell surfaces, panels, keyboard navigation,
representative applications, and system setup. Source
`test/acceptance.d/base-test.sh` for the shared helpers.

Run acceptance tests in a disposable VM through the sibling `omarchy-iso`
repository, not in the active development session. The suite opens and closes
applications and temporarily changes desktop configuration.

For acceptance-test-only changes, reuse an installed base and sync the suite:

```bash
cd ../omarchy-iso
./bin/omarchy-iso-test release/<iso>.iso --reuse-base --sync-omarchy ../omarchy --no-preview
```

Use `--sync-all ../omarchy` instead of `--sync-omarchy ../omarchy` when the
acceptance run must exercise local `bin/`, `config/`, or `shell/` source too.
Changes to package manifests, installation, finalization, or shipped defaults
require a fresh ISO built from the local checkouts and a run without
`--reuse-base`:

```bash
cd ../omarchy-iso
./bin/omarchy-iso-make --no-boot-offer --local-source ../omarchy ../omarchy-pkgs
./bin/omarchy-iso-test release/<generated-iso>.iso --no-preview
```

Keep unrelated acceptance workflows in separate test files. The runner records
a failed file and continues with the remaining files, which preserves as much
diagnostic coverage as possible. Restore modified user state with traps, close
anything the test opens, and capture every visually distinct state (including
entered input where relevant) as `success-<step>.png`; failure helpers capture
`failure-<step>.png`. The ISO harness collects the screenshots and logs under
its timestamped `test-runs/` directory and opens the screenshots after the run
unless `--no-preview` is passed.

The ISO harness exercises compositor-level shortcuts with QMP virtual keyboard
input. In-guest `wtype` is suitable for typing into focused controls, but it
does not reliably prove that a global Hyprland keybinding works.
31 changes: 31 additions & 0 deletions agents/skills/command-metadata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Command Metadata

Read this before adding or changing commands in `bin/`.

Commands in `bin/` can declare CLI metadata in comments near the top of the
file. `bin/omarchy` scans the first 80 lines, and tests expect command metadata
to remain valid.

Supported metadata keys:

- `# omarchy:group=...` - override the command group inferred from the filename
- `# omarchy:name=...` - override the command name inferred from the filename
- `# omarchy:summary=...` - short help text
- `# omarchy:args=...` - usage arguments
- `# omarchy:examples=...` - examples separated with ` | `
- `# omarchy:alias=...` / `# omarchy:aliases=...` - alternate routes
- `# omarchy:hidden=true` - hide from default command listings
- `# omarchy:requires-sudo=true` - mark commands that require sudo

Only use `omarchy:examples` where there are args that need explaining.

Prefer explicit metadata for user-facing commands. Keep routes consistent with
the filename unless there is a deliberate alias or compatibility route.

Example:

```bash
# omarchy:summary=Take a screenshot
# omarchy:args=[smart|region|windows|fullscreen] [slurp|copy]
# omarchy:examples=omarchy screenshot | omarchy capture screenshot region
```
Loading