Mirrors the private dots tree at 900bdda: one shared base plus per-host overlays, replacing the old flat .config/ layout (last synced 2026-06-28). - packages: common/ gui/ wm/ lw/ fl/ + install.sh and bin/ tooling (dotsync, reconcile-hyde.sh) - new README (layout, deploy order, HyDE dependency), plus ToDo.md and HYDE-UPDATE.md - current HyDE waybar rig (layouts/, cava), pi agent extensions, claude/ config, tmux, presenterm, aichat roles - drops stale duplicates and generated cruft that should never have been tracked: the second top-level .pi/ copy, btop.log, zellij config.kdl.bak, fish_variables, nvim codecompanion.lua - .pi/agent/auth.json is gitignored now; auth.json.example ships instead - fl/ and wm/ hypr themes/ stay untracked (HyDE-generated per machine, per the root .gitignore)
9.7 KiB
Dots — TODO
Backlog after the HyDE modernization (legacy Hyprdots → current HyDE), merged to main 2026-07-22.
Hosts: lw current HyDE (active); wm current HyDE (not set up yet); fl KDE (future: bare Hyprland).
Key architecture note (learned 2026-07-23)
On current HyDE, waybar's config.jsonc is generated by waybar.py from the active layout in
~/.config/waybar/layouts/ (active layout tracked in ~/.local/state/hyde/staterc). So the dots manage
the layout + module defs, NOT config.jsonc (HyDE overwrites it). Also: the Arch waybar build has
no native cava module — use the script module custom/cava → hyde-shell cava.py waybar --json.
Cava (working on lw — remaining polish)
The rig: layouts/custom.jsonc + layouts/custom.css = two bars launched standalone
(waybar -c …custom.jsonc -s …custom.css, exec-once in userprefs.conf) — transparent main bar (top layer)
over a full-width custom/cava bar behind it (bottom layer; margin-top: -33 cancels the main bar's
exclusive-zone displacement). NOT HyDE-managed — the raw waybar -c bind on keybindings.conf:39 IS the
launcher/toggle; keep it as-is. Deployed on lw 2026-07-25: HyDE's bar unit stopped + masked, rig live.
HyDE ownership rules (learned the hard way 2026-07-25): HyDE's waybar.py writes
~/.config/waybar/config.jsonc AND ~/.config/waybar/style.css (any --set/--update clobbers them —
through the stow symlink, i.e. into the repo checkout!). theme.css is wallbash-generated on theme change.
The rig therefore keeps its own files in layouts/ (never written by HyDE) and only imports ../theme.css.
HyDE's bar itself is systemd unit hyde-<XDG_SESSION_DESKTOP>-bar.service behind a waybar.py --watch
auto-restarter launched by startup.conf ($start.BAR — not overridable from user config; variables.conf
re-sets it after any user assignment).
theme.cssis dirty-prone on lw: wallbash writes through the dots symlink on every theme change — decide: untrack it like config.jsonc (rig imports the live generated file either way) or keep a pinned fallback for non-HyDE hosts (fl). Checkgit statuson lw after a theme switch.- Tune
cava.widthper host if the bars don't span the screen (gui default 94; wm overrides to 218). - Icon map on the HyDE-managed bar (if ever unmasked/used again):
modules/window.jsonccarries the same map; if titles lack icons there,includes.jsonoverrides it and the def must move there. - Upstream HyDE deprecated the header/footer module fragments (its
footer.jsoncis now a{}stub; padding defs move tocustom-module.jsonc). Our old-stylemodules/footer.jsoncstill works with the current generator — re-check against upstream at the next HyDE update (only matters if the managed bar is revived).
Hardware-gated (needs the physical box)
- Bring
wmonto current HyDE: install HyDE framework (~/HyDE/Scripts/install.sh),dotsync, relogin,hyprctl configerrors; watch wm-specificnvidia.conf/monitors.conf— monitors.conf carries a FIXME (eDP-1is a laptop panel name on a desktop; checkhyprctl monitorsfor the real outputs first). Then the same one-time bar disable as lw (gui's exec-once launches the rig here too):systemctl --user stop hyde-<XDG_SESSION_DESKTOP>-bar.service+mask(name viasystemctl --user list-units 'hyde*'if unsure). fl→ bare Hyprland: deferred to flip-time. Not worth a partialwindowrulev2conversion now — fl is dormant KDE, and when it flips it needs the full treatment (HyDE framework sourcing + rules), done in-context like lw's was. Its only deprecated syntax iswindowrulev2(windowrules.conf ×67, userprefs.conf ×18).
Small / whenever
git push origin --delete worktree-hyde-modernize— fully merged into main; remote copy is stale.reconcile-hyde.shSUBTREES =hypr+waybaronly — addrofiif rofi ever becomes dots-tracked (not yet).- Waybar add and fix all nerd font icons
- keybind initialization failed, $mainMod + /
Make all .file -> dotfile, because Telescope search is ignoring them— solved 2026-08-08 without renaming anything: repo-root.ignoreun-hides dotdirs for rg/fd/telescope, andFZF_DEFAULT_COMMAND=fdpoints fzf (whose own walker ignores.ignore) at fd.- pi-vim on the other hosts (lw/fl/wm): the tracked
settings.json > packagesgetspi install npm:pi-vimdone, but the AUR pi build can't resolve its embedded@earendil-works/*, so the extension won't load until the peer dep is installed by hand —cd ~/.pi/agent/npm && fnm exec --using=22 -- npm install @earendil-works/pi-coding-agent@$(pi --version). Full rationale incommon/.pi/CLAUDE.md(Vim input editor). — done 2026-08-09, pi-vim confirmed good in daily use. Recover withgit rmthe parkedvim-editor.ts.disabledgit show c6566af^:common/.pi/agent/extensions/vim-editor.tsif ever needed.
Back-ported from dots-wm (2026-08-08) — verify on lw
The wm migration surfaced bugs that were live in .dots (and so on lw). Fixes are ported;
these are the checks that were only ever reproduced on wm. Full rationale: dots-wm
MIGRATION-TEST.md "Back-port list".
- lw: confirm the hypr fixes took.
grep -cE 'globbing error|Error parsing gradient' /run/user/1000/hypr/*/hyprland.log(should be 0 — catches the$ANIMATION_PATHfix) andhyprctl getoption decoration:rounding(set: true;set: false= nothing ever assigned it).hyprctl configerrorsis useless here — it returns empty for a missingsource =, which is what hid all of this. lw: retune hyprlock sizes— done 2026-08-08 via a per-host hook:hyprlock.confsources~/.config/hypr/hyprlock-host.conf, shipped empty ingui/(so the source always resolves — a missing target is a hard parse error, and for hyprlock that means the lock screen fails) and overridden inlw/with the 1920x1080 set.- lw: check hyprlock on the built-in panel. The 1080p sizes are for the externals;
monitors.confmakes$mainScreen(eDP-1) 1366x768 and hyprlock draws on every output, so the clock reads ~18% of height there instead of ~13%. A 768-tuned set is in the comment at the top oflw/.config/hypr/hyprlock-host.confif the laptop panel is the one that matters. - wm:
cantarell-fonts+adobe-source-code-pro-fontsfor hyprlock's$timeFontFamily/$fontFamily(both OFL-1.1, both inextra). Installed on lw 2026-08-08; wm needs them at migration time. A missing family degrades silently to a fallback whose metrics are not what the layout offsets were tuned against — install before judging the lock screen's spacing on a new host. lw: check the lock screen has a wallpaper— confirmed 2026-08-08. It had been pointing at~/sync/Drive/pics/, which does not exist on lw either; the in-repohypr/hyprlock/assets/fixed it, once./install.shhad actually linked them (a pull alone does not — new files).- wm's old-HyDE window (decided 2026-08-08:
hypr/themes/{colors,theme,wallbash}.confare NOT being added — wm's HyDE is updated right after this merge, which makes them obsolete). The gap is the interval: if wm runs~/.dotswhile still on the old HyDE, that HyDE hard-sources all three and Hyprland silently falls back to compositor defaults (border 1, rounding 0, gaps_out 20, no blur) whilehyprctl configerrorsstill reports clean. So update wm's HyDE with/before the switch — or copy the three out of dots-wm intowm/as a stopgap. - Capture
.config/hyde/before dots-wm is abandoned.config.toml+wallbash/(always/{cava,chrome}.dcol,scripts/{cava,chrome,code}.sh,theme/code.dcol— 8 files, ~2.5k lines) exist in dots-wm and in no package here. Not an intentional exclusion:.gitignoreonly drops the generated**/hyde/themes/, andreconcile-hyde.shSUBTREES covers just hypr+waybar. Best captured after wm's HyDE update — its installer rewrites~/.config/hyde, so taking it now banks soon-stale content.gui/is the natural home (the wallbash templates theme the cava bar), but check lw for real files there first: a stow conflict aborts the entire package (same failure as the claude/settings.json item). — reconciled 2026-08-08. Claude Code had replaced the symlink with a real file, so~/.config/claude/settings.jsonis a real file, not a stow link./install.shaborted all ofcommon(gui still stowed), meaning no new file undercommon/could deploy on this host. It had not actually lost keys — all 20 were present, the apparent loss was key reordering from Claude Code rewriting the file. Onlymodeldiffered, so the live value (claude-fable-5[1m]) was written into the repo copy and the symlink restored;install.shis clean again. Watch for it recurring: anything that rewrites a stowed file in place instead of through the link re-severs it.- Before making the repo public: confirm the hyprlock images' provenance.
gui/.config/hypr/hyprlock/assets/{background.jpg,logo.jpg}came over from dots-wm with EXIF stripped, so nothing in the files says where they're from. GPL-3 can't relicense someone else's photo. Everything else is settled: HyDE-derived configs are GPL-3 like this repo,dark.tmThemeis MIT with its header intact, and the fastfetch PNGs are third-party marks used nominatively (see README "Third-party content and licensing").