From 9119d99ba90b5f0380624ef611e80c2a1d439a68 Mon Sep 17 00:00:00 2001 From: Breadway Date: Fri, 3 Jul 2026 22:35:50 +0800 Subject: [PATCH 1/2] Fix pywal-brown theme regression: stop clobbering the curated black palette MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round-3's autostart fix (breadpaper set instead of raw awww img) had a side effect I missed: breadpaper set always runs real pywal against the wallpaper image, which overwrote the curated colors.json baked into skel (#0c0c0c black background, bread-toned browns reserved for accent slots only) with colors genuinely extracted from bread-background.png — an all-beige photo, so every bread-theme app (breadbar included) turned brown on first boot. Revert autostart to plain `awww img`. Bake .cache/wal/wal (pywal's own "last image" marker — the only thing breadpaper get/the bos-settings panel actually read) alongside the existing colors.json instead, so the panel still shows the real default without ever running pywal for real. pywal only generates a genuine palette once the user picks their own wallpaper. --- iso/airootfs/etc/skel/.cache/wal/wal | 1 + .../etc/skel/.config/hypr/hyprland.lua | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 iso/airootfs/etc/skel/.cache/wal/wal diff --git a/iso/airootfs/etc/skel/.cache/wal/wal b/iso/airootfs/etc/skel/.cache/wal/wal new file mode 100644 index 0000000..69adeb9 --- /dev/null +++ b/iso/airootfs/etc/skel/.cache/wal/wal @@ -0,0 +1 @@ +/usr/share/backgrounds/bos/bread-background.png \ No newline at end of file diff --git a/iso/airootfs/etc/skel/.config/hypr/hyprland.lua b/iso/airootfs/etc/skel/.config/hypr/hyprland.lua index 9928148..3b9c69c 100644 --- a/iso/airootfs/etc/skel/.config/hypr/hyprland.lua +++ b/iso/airootfs/etc/skel/.config/hypr/hyprland.lua @@ -212,12 +212,18 @@ hl.on("hyprland.start", function() -- rather than an exec-once here. "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1", "awww-daemon", - -- Set the default wallpaper once the daemon is up (retry until - -- ready) via `breadpaper set`, not raw `awww img` — breadpaper also - -- generates the pywal palette and reloads bread-theme, and records - -- the path so `breadpaper get` (and its bos-settings panel) show - -- the real default instead of "No wallpaper set" on a fresh install. - [[bash -c 'until breadpaper set /usr/share/backgrounds/bos/bread-background.png 2>/dev/null; do sleep 0.3; done']], + -- Set the default wallpaper once the daemon is up (retry until ready). + -- Raw `awww img`, NOT `breadpaper set` — breadpaper set also runs real + -- pywal against the image, which would clobber the curated black-base + -- colors.json baked into skel (.cache/wal/colors.json: #0c0c0c bg, + -- bread-toned browns reserved for accent slots only) with colors + -- actually extracted from bread-background.png — which is an all-beige + -- photo, so every bread-theme app (breadbar included) turns brown. + -- `breadpaper get` still works on a fresh install without ever running + -- pywal: .cache/wal/wal (pywal's own "last image" marker, which is all + -- breadpaper reads) is baked into skel too, right beside colors.json. + -- pywal only runs for real once the user picks a wallpaper themselves. + [[bash -c 'until awww img /usr/share/backgrounds/bos/bread-background.png 2>/dev/null; do sleep 0.3; done']], -- breadd runs as a systemd user service (~/.config/systemd/user/breadd.service, -- enabled in skel). It autostarts at login but before Hyprland exists, so -- push the compositor's Wayland env into the user manager and restart breadd From 41e7aaf9fcf08d62d4932faf02b0ae2d4d84a5c7 Mon Sep 17 00:00:00 2001 From: Breadway Date: Fri, 3 Jul 2026 22:38:59 +0800 Subject: [PATCH 2/2] bos-settings: expose npu/rocm/cuda in breadsearch compute backend dropdown breadsearch v0.2.1+ ships breadmill built with --features full (npu + rocm + cuda in one binary via ort's load-dynamic/dlopen mode), so the earlier CPU-only restriction here no longer applies. Hint explains what each backend needs and how to confirm it actually took effect, since a failed GPU EP registration falls back to CPU silently at the ONNX Runtime level. --- bos-settings/src/ui/views/breadsearch.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/bos-settings/src/ui/views/breadsearch.rs b/bos-settings/src/ui/views/breadsearch.rs index 4c292c4..de3cea7 100644 --- a/bos-settings/src/ui/views/breadsearch.rs +++ b/bos-settings/src/ui/views/breadsearch.rs @@ -34,22 +34,27 @@ pub fn build() -> GBox { )); c.append(&w::section("Model")); - // breadmill supports npu/rocm backends in its own codebase, but the - // prebuilt binary bakery actually ships is CPU-only (no --features - // npu/rocm in its release build) — offering them here would just be a - // dropdown option that silently falls back to cpu. Re-add once a build - // with those features is published. + // breadsearch v0.2.1+ publishes breadmill built with --features full + // (npu + rocm + cuda all in one binary, ort load-dynamic/dlopen — no + // separate build needed per backend). Selecting a GPU/NPU backend here + // only takes effect if the matching ONNX Runtime is actually present on + // this machine; breadmill logs which EP really registered at startup. c.append(&w::dropdown_row( "Compute backend", &doc, &["model", "backend"], - &["cpu"], + &["cpu", "npu", "rocm", "cuda"], "cpu", )); c.append(&w::hint( - "The bakery-published breadmill is CPU-only for now. NPU (AMD Ryzen \ - AI) and ROCm backends exist in breadmill's own code but need a \ - separately-built binary with those features enabled.", + "npu = AMD Ryzen AI (XDNA), rocm = AMD GPU (via MIGraphX), cuda = \ + NVIDIA GPU. Each needs the matching ONNX Runtime installed and \ + visible to breadmill (system package, or ORT_DYLIB_PATH) — check \ + `journalctl --user -u breadmill` after restarting for a \ + \"Successfully registered\" line confirming it actually took. \ + ROCm additionally needs ORT_MIGRAPHX_MODEL_CACHE_PATH set (bakery's \ + breadmill.service sets this by default) or the first query after \ + each backend/model change costs a one-time ~1-2 minute GPU compile.", )); c.append(&w::section("Index"));