Tinkering with omarchy, might delete later
  • Shell 62.6%
  • QML 23.6%
  • Lua 13.8%
Find a file
Daniel Flanagan a4a353e581 revert(dragon): drop hypridle — Omarchy already blanks on lock
The previous commit added hypridle to turn dragon's OLED off on idle. It
was redundant: Omarchy has done this all along, through a path I did not
follow far enough.

  plugins/lock/Service.qml:411  on lock, runs
    omarchy-brightness-keyboard off; omarchy-brightness-display off
  omarchy-brightness-display    off ->
    hyprctl dispatch 'hl.dsp.dpms({ action = "disable" })'

and the idle service calls omarchy-system-lock at idle.lock, so the idle
path reaches the same place as the hotkey. Confirmed on the machine: a
manual lock blanks the panels after ~5s.

What misled me was grepping the shell for 'dpms' and finding nothing. The
shell never says dpms -- it shells out to omarchy-brightness-display,
which is where the dispatch lives. Absence of a term is not absence of a
behaviour.

Also worth recording: the form Omarchy uses is
hl.dsp.dpms({ action = "disable" }), a table, not the hl.dsp.dpms("off")
I had written. Mine returned 'ok' from hyprctl, which is what made it look
verified -- but 'ok' only means the dispatcher accepted the call, not that
it did anything. A second reason not to keep that config.

Checked before reverting that the forked daniel.lock still carries the
brightness-off line on both hosts -- a fork that had diverged before it
was added upstream would silently lose display blanking, and that would
have been a real gap rather than an imagined one. It is present on both,
and omarchy.lock is disabled in favour of it.

Leaves dragon protected by idle.lock = 300s. Lower that in shell.json if
five minutes of a static lock screen is too long for the OLED.
2026-08-25 17:02:58 -05:00
home revert(dragon): drop hypridle — Omarchy already blanks on lock 2026-08-25 17:02:58 -05:00
hosts revert(dragon): drop hypridle — Omarchy already blanks on lock 2026-08-25 17:02:58 -05:00
plugins config: bar to the bottom, own Iosevka everywhere, record all themes 2026-08-25 14:47:57 -05:00
system feat(dots): apply installs nix, and records what was silently missing 2026-08-25 15:06:42 -05:00
.gitignore Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -05:00
dots feat(dots): check /shared is mounted, and encrypted where it should be 2026-08-25 16:28:12 -05:00
manifest revert(dragon): drop hypridle — Omarchy already blanks on lock 2026-08-25 17:02:58 -05:00
nixlink config: bar to the bottom, own Iosevka everywhere, record all themes 2026-08-25 14:47:57 -05:00
packages-aur.list feat(dots): scope packages per host, prefer paru, ignore superseded ones 2026-08-25 15:19:49 -05:00
packages-drivers.list feat(dots): ignore driver packages until a host claims its hardware 2026-08-25 16:11:48 -05:00
packages-ignore.list feat(dots): scope packages per host, prefer paru, ignore superseded ones 2026-08-25 15:19:49 -05:00
packages-nix.list feat(dots): get own packages from nix, not the AUR 2026-08-25 14:56:23 -05:00
packages.list feat(package): add sops 2026-08-25 16:38:28 -05:00
README.md feat(dots): ignore driver packages until a host claims its hardware 2026-08-25 16:11:48 -05:00
themes.list config: bar to the bottom, own Iosevka everywhere, record all themes 2026-08-25 14:47:57 -05:00
TODO.md docs(dots): rename the branch master -> main 2026-08-25 16:16:02 -05:00

omarchy-dotfiles

My Omarchy config, synced across machines. No symlinks, no templating engine — just rsync + git behind a small bash script.

Why not stow or chezmoi

  • Stow (what the Omarchy manual suggests) uses symlinks. Omarchy's update migrations run sed -i, which replaces a symlink with a regular file and silently detaches it from the repo. See omarchy#191.
  • chezmoi (what the community mostly uses) is fine but its value is Go templating, which I don't want.

This keeps real files in $HOME where Omarchy expects them. When an update rewrites one, it shows up as ordinary drift you review with dots diff.

Usage

./dots status          # what differs between $HOME and this repo
./dots diff [path]     # unified diff
./dots pull            # $HOME  -> repo   (capture local changes)
./dots apply           # repo   -> $HOME  (backs up first, prompts)
./dots sync "message"  # pull + themes save + commit + push

./dots track <path>            # start tracking (shared across machines)
./dots track --host <path>     # track per-machine (e.g. monitors.lua)
./dots untrack <path>

./dots themes save|install     # git-based themes, by URL (not contents)
./dots packages save|install   # explicit pacman + AUR package lists

Layout

manifest              tracked paths (relative to $HOME) + rsync excludes
home/                 shared files, mirrored tree
hosts/<hostname>/     per-machine overrides, applied *after* home/
themes.list           name <TAB> git URL
packages.list         pacman -Qqen
packages-aur.list     pacman -Qqem
packages-ignore.list  installed here, deliberately never recorded
packages-drivers.list globs for hardware-bound packages (see below)

hosts/<hostname>/ wins over home/ for the same path. Hostname comes from /etc/hostname.

What is deliberately NOT tracked

  • Files byte-identical to Omarchy's defaults in /usr/share/omarchy/config/. Committing those pins you to today's defaults and reverts upstream improvements on the next machine. Run dots track <path> once you change one.
  • Theme contents. The four installed themes are upstream git clones totalling ~188 MB. themes.list records their URLs; dots themes install re-clones.
  • Microcode and per-vendor GPU drivers, unless the host asks for them. The next machine wants the drivers for its GPU, so packages-drivers.list keeps them out of the shared list and out of doctor's "installed but not recorded". A host opts in by naming one in hosts/<hostname>/packages.list; from then on its driver set is tracked and packages save keeps it there.
  • Sockets, logs, and runtime state (*.sock, session.json, .plugins.lock).
  • Secrets. Nothing here should contain credentials — check before committing.

New machine

# install Omarchy first, then:
git clone ssh://forgejo@git.lyte.dev/lytedev/omarchy-dotfiles.git ~/Projects/omarchy-dotfiles
ln -sfT ~/Projects/omarchy-dotfiles ~/.config/omarchy-dotfiles   # optional convenience
cd ~/Projects/omarchy-dotfiles
./dots packages install     # optional
./dots themes install
./dots apply

The clone can live anywhere; dots resolves its own directory, so running it through the ~/.config symlink works and still writes to the real path.

hyprctl reload && hyprctl configerrors
omarchy restart shell
omarchy restart terminal

Per-machine files land in hosts/<new-hostname>/ — copy from another host's directory and edit, e.g. monitors.lua.

After an omarchy update

./dots status     # see what the migrations rewrote
./dots diff       # inspect
./dots pull       # accept upstream's version into the repo
# ...or ./dots apply to force your version back