Files
dots/ToDo.md
T
coja a700e23e0a [Sync] adopt unified stow layout from the private repo
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)
2026-08-12 22:50:18 +02:00

120 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.css` is 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). Check `git status` on lw after a theme switch.
- [ ] Tune `cava.width` per 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.jsonc` carries the
same map; if titles lack icons there, `includes.json` overrides it and the def must move there.
- [ ] Upstream HyDE **deprecated the header/footer module fragments** (its `footer.jsonc` is now a `{}` stub;
padding defs move to `custom-module.jsonc`). Our old-style `modules/footer.jsonc` still 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 `wm` onto current HyDE:** install HyDE framework (`~/HyDE/Scripts/install.sh`), `dotsync`, relogin,
`hyprctl configerrors`; watch wm-specific `nvidia.conf` / `monitors.conf` — monitors.conf carries a FIXME
(`eDP-1` is a laptop panel name on a desktop; check `hyprctl monitors` for 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 via
`systemctl --user list-units 'hyde*'` if unsure).
- [ ] **`fl` → bare Hyprland: deferred to flip-time.** Not worth a partial `windowrulev2` conversion 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 is `windowrulev2` (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.sh` SUBTREES = `hypr`+`waybar` only — add `rofi` **if** rofi ever becomes dots-tracked (not yet).
- [ ] Waybar add and fix all nerd font icons
- [ ] keybind initialization failed, $mainMod + /
- [x] ~~Make all .file -> dotfile, because Telescope search is ignoring them~~ — solved 2026-08-08
*without* renaming anything: repo-root `.ignore` un-hides dotdirs for rg/fd/telescope, and
`FZF_DEFAULT_COMMAND=fd` points fzf (whose own walker ignores `.ignore`) at fd.
- [ ] **pi-vim on the other hosts (lw/fl/wm):** the tracked `settings.json > packages` gets `pi install npm:pi-vim`
done, 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 in `common/.pi/CLAUDE.md` (Vim input editor).
- [x] ~~`git rm` the parked `vim-editor.ts.disabled`~~ — done 2026-08-09, pi-vim confirmed good in daily
use. Recover with `git show c6566af^:common/.pi/agent/extensions/vim-editor.ts` if 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_PATH` fix) and
`hyprctl getoption decoration:rounding` (`set: true`; `set: false` = nothing ever assigned it).
`hyprctl configerrors` is useless here — it returns empty for a missing `source =`, which is
what hid all of this.
- [x] ~~lw: retune hyprlock sizes~~ — done 2026-08-08 via a per-host hook:
`hyprlock.conf` sources `~/.config/hypr/hyprlock-host.conf`, shipped empty in `gui/` (so the
source always resolves — a missing target is a hard parse error, and for hyprlock that means
the lock screen fails) and overridden in `lw/` with the 1920x1080 set.
- [ ] **lw: check hyprlock on the built-in panel.** The 1080p sizes are for the externals;
`monitors.conf` makes `$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 of `lw/.config/hypr/hyprlock-host.conf` if the laptop panel is the one that matters.
- [ ] **wm: `cantarell-fonts` + `adobe-source-code-pro-fonts`** for hyprlock's
`$timeFontFamily`/`$fontFamily` (both OFL-1.1, both in `extra`). 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.
- [x] ~~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-repo `hypr/hyprlock/assets/`
fixed it, once `./install.sh` had actually linked them (a pull alone does not — new files).
- [ ] **wm's old-HyDE window** (decided 2026-08-08: `hypr/themes/{colors,theme,wallbash}.conf` are
NOT being added — wm's HyDE is updated right after this merge, which makes them obsolete).
The gap is the interval: if wm runs `~/.dots` while 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) while `hyprctl configerrors` still reports clean. So update
wm's HyDE with/before the switch — or copy the three out of dots-wm into `wm/` 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:
`.gitignore` only drops the generated `**/hyde/themes/`, and `reconcile-hyde.sh` SUBTREES
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).
- [x] ~~`~/.config/claude/settings.json` is a real file, not a stow link~~ — reconciled 2026-08-08.
Claude Code had replaced the symlink with a real file, so `./install.sh` aborted **all** of
`common` (gui still stowed), meaning no new file under `common/` 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. Only `model` differed, so the live value
(`claude-fable-5[1m]`) was written into the repo copy and the symlink restored;
`install.sh` is 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.tmTheme` is MIT with its header intact, and the fastfetch PNGs are third-party marks
used nominatively (see README "Third-party content and licensing").