Skip to content

fix(ml4w): keep Dreamcoder working on ML4W 2.16 - #11

Merged
Dreamcoder08 merged 6 commits into
mainfrom
pr/01-ml4w-2.16-compat
Sep 29, 2026
Merged

Dreamcoder08 merged 6 commits into
mainfrom
pr/01-ml4w-2.16-compat

Conversation

@Dreamcoder08

@Dreamcoder08 Dreamcoder08 commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

ML4W 2.16 moved the Quickshell overview, dropped Waybar/waypaper pieces and rewrites the files Dreamcoder used to inject hooks into. This slice makes the ML4W integration survive upgrades and pins the new upstreams.

Changes

  • Keybind variant aligned with ML4W 2.16 (overview path, autohide toggles, AZERTY detection)
  • Wallpaper hook as a marked, idempotent block in ml4w-wallpaper; waypaper hooked only when present
  • dreamcoder-colors loaded from custom.lua (a file ML4W never ships)
  • verify/doctor accept sync-rendered regular colour files and waybar/colors.css
  • dreamcoder dispatcher exports PYTHONPATH for every Python route
  • Upstream pins: ML4W 2.16 (3960570), Gentleman.Dots 6f44b79

Verification

bats tests/ml4w/ and python -m pytest tests/ green on the slice tip; shellcheck and luac -p clean; applied and verified on a live ML4W 2.16 machine (verify-ml4w-setup.sh 20 passed / 0 failed).

Chain Context

Field Value
Chain ML4W 2.16 + Herdr 0.9.1 + Light/Dark-only stabilisation
Tracker PR Not needed (stacked PRs to main)
Position 1 of 6
Base main
Depends on None (targets main)
Follow-up #12
Review budget 1177 / 400
Starts at main
Ends with fix(ml4w): keep Dreamcoder working on ML4W 2.16

Chain Overview

main
 └── 📍 #11 fix(ml4w)
  └── #12 fix(install)
   └── #13 fix(theme)
    └── #14 fix(shell)
     └── #15 refactor(theme)
      └── #16 chore(quality)

Scope

  • Includes: see Changes above
  • Excludes:
  • Stow relinking and Herdr (PR 2)
  • Mode/colour stability and the GTK listener hook (PR 3)

Autonomy

  • CI is expected to pass for this PR branch
  • This PR has one deliverable scope
  • This PR can be rolled back without unrelated changes
  • Tests, docs, or manual verification cover this unit

- SUPER+Tab opens the overview from ~/.local/share/quickshell-overview,
  the location ML4W 2.16 installs it to.
- Port ALT+B statusbar autohide, ALT+D dock autohide and the rewritten
  AZERTY detection; AZERTY keysyms are bound only on AZERTY layouts since
  the profile owns the digit workspace binds.
- Reload Dock stays unbound: 2.16 moved it to SHIFT+D, which the profile
  uses for the Dreamcoder theme toggle.
- Add bats checks for Lua syntax, overview path, ported toggles and
  profile collisions.
- apply-ml4w-hooks.sh: the ML4W wallpaper runner is the primary target;
  its hook is a marked block replaced on every run, so re-running after an
  ML4W upgrade restores it without duplicates, migrates the old unmarked
  block and keeps a symlinked runner a symlink. waypaper is hooked only
  when its config exists (ML4W 2.16 no longer installs it).
- generate-custom-lua.sh: custom.lua, a file ML4W never ships, loads
  dreamcoder-colors behind an existence guard, replacing the require that
  had to be injected into ML4W's hyprland.lua.
- doctor.py accepts the loader from custom.lua (legacy hyprland.lua still ok).
- doctor.sh / verify-ml4w-setup.sh accept colors.lua and colors.conf as
  managed regular files when their bytes match a Dreamcoder variant: the
  theme sync writes through the path and only flips existing symlinks.
- Tests use ML4W 2.16's ml4w-wallpaper as fixture.
- Pin ML4W to tag 2.16 (3960570, also remote HEAD) and Gentleman.Dots to
  main 6f44b79, both re-verified with git ls-remote on 2026-09-28; the tag
  is recorded in provenance and docs/sources.md since the schema allows no
  extra upstream keys.
- Document the ML4W 2.16 keybind delta and the rule that Dreamcoder hooks
  live in Dreamcoder-owned files (custom.lua loader, re-appliable runner
  hook, optional waypaper, regular colour files).
- Point the install checklist at custom.lua for the colour loader.
- Track the new pins in the verify-repo-sync test fixture.
Only CONTROL routes set PYTHONPATH; sync, preview and the other Python entrypoints failed with
ModuleNotFoundError unless the package was installed.
…anaged

The theme sync renders waybar/colors.css in place; verify required a symlink and failed on ML4W
2.16. Same rule as the Hyprland colour files.
@Dreamcoder08 Dreamcoder08 reopened this Sep 29, 2026
@Dreamcoder08
Dreamcoder08 merged commit 8e3b7af into main Sep 29, 2026
25 of 26 checks passed
@Dreamcoder08
Dreamcoder08 deleted the pr/01-ml4w-2.16-compat branch September 29, 2026 19:08
@Dreamcoder08
Dreamcoder08 restored the pr/01-ml4w-2.16-compat branch September 29, 2026 20:16
@Dreamcoder08
Dreamcoder08 deleted the pr/01-ml4w-2.16-compat branch September 29, 2026 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant