Tinkering with omarchy, might delete later
  • Shell 80.2%
  • Lua 19.8%
Find a file
Daniel Flanagan 8741b36a31 fix(claude): stop dropping rate-limit figures that arrive as floats
The 5h segment vanished from the statusline entirely. Claude Code
derives each rate-limit percentage as utilization*100, so a 29% window
arrives as 28.999999999999996. The is_int guard rejected it and the
segment was silently omitted -- no error, just a missing figure.

Only the context percentage is a true integer: Claude Code rounds that
one itself before serialising. The rate-limit pair does not get the
same treatment, and the payload I sampled when writing this happened
to hold 21 and 24 exactly, which hid the bug completely.

Numeric fields are now rounded in jq instead of being validated in
bash. Doing it at the boundary means bash -- whose arithmetic and test
operators are integer-only -- never sees a decimal point, rather than
every consumer needing its own guard.

The guard is `if type == "number"` rather than `// ""` because `//`
treats a legitimate 0 as absent, which would have dropped a freshly
reset window instead of showing "5h: 0%".

Rounding at the boundary also keeps the colour thresholds honest:
75.5 rounds to 76 and turns yellow, 90.4 rounds to 90 and stays
yellow. Verified across 0, 0.4, 74.6, 75.0, 75.4, 75.5, 76.0, 89.99,
90.4, 90.6, 99.999, 100.

Degraded payloads re-checked: absent rate_limits, a null five_hour, a
null resets_at (keeps "7d: 25%", drops the countdown), five_hour
alone, and empty or malformed stdin.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 12:16:57 -05:00
home fix(claude): stop dropping rate-limit figures that arrive as floats 2026-08-20 12:16:57 -05:00
hosts/foxtrot-omarchy/.config/hypr Vim-style hjkl bindings, niri-like gestures, tighter chrome 2026-08-20 09:42:20 -05:00
plugins Carry the multi-battery power panel in the dotfiles 2026-08-19 16:54:26 -05:00
.gitignore Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -05:00
dots Carry the multi-battery power panel in the dotfiles 2026-08-19 16:54:26 -05:00
manifest feat(claude): break statusline usage into session, 5h, and 7d 2026-08-20 11:22:49 -05:00
packages-aur.list Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -05:00
packages.list Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -05:00
README.md Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -05:00
themes.list Initial Omarchy dotfiles sync 2026-08-18 22:34:23 -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

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.
  • 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 ~/omarchy-dotfiles
cd ~/omarchy-dotfiles
./dots packages install     # optional
./dots themes install
./dots apply

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