Commit graph

7 commits

Author SHA1 Message Date
Breadway
d98b5b4fad Share ~/.config/hypr/monitors.json with the BOS Display panel
Some checks failed
dev release / build (push) Failing after 0s
Read the file as the initial layout on start. After a successful
hyprctl apply (including applying a named profile), write pretty
JSON so Hyprland and bos-settings stay in sync. Profiles remain
named snapshots under ~/.config/breadmon/profiles/.

Pin bread-utils to bread-ecosystem v0.7.2.
2026-08-15 22:53:28 +08:00
Breadway
aec2fa5290 Wire breadmon into the bread event fabric (app id mon)
Some checks failed
check / check (push) Failing after 1s
dev release / build (push) Failing after 1s
After a successful hyprctl apply, publish bread.mon.applied
{ "profile": <string or null> }. BreadClient is fail-silent: if
breadd is down, apply behaves exactly as before.

Document the contract in EVENTS.md.
2026-08-15 22:16:36 +08:00
Breadway
d73eacf40f ci: build against bread-ecosystem's shared Arch CI image, add check.yml
All checks were successful
check / check (push) Successful in 26s
Same fix as breadpad: build inside the shared pinned Arch container
(bread-ecosystem/ci/, cloned at the sha in ci/bread-ecosystem.rev)
instead of building natively against whatever's on the runner host.
Adds check.yml (clippy + test on feature/**/fix/**) as a fast-fail gate
before anything reaches main.

Turning on clippy -D warnings for the first time surfaced 10 pre-existing
warnings (int_plus_one, ptr_arg on &mut Vec params, collapsible_if,
collapsible_match) across layout.rs, mirror.rs, profile.rs, and the
config/mirror TUI views — all fixed exactly per clippy's suggested diffs,
verified behavior-preserving (the mirror_view.rs collapse in particular:
confirmed the "do nothing" fallthrough when mirror.result is None is
unchanged, since that was already the fallthrough behavior of the
original nested if with no matching else on the outer condition).

Verified locally: build, clippy, and test all pass through the new
container path.
2026-08-05 14:02:47 +08:00
Breadway
f8f9c72709 Fix literal-tilde XDG fallback bug in profiles_dir
profiles_dir() had the same bug as breadclip-core::data_dir and
breadpad-shared's model_dir/config_path/style_css_path (found during
tonight's ecosystem-utils pass): `dirs::config_dir().unwrap_or_else(||
PathBuf::from("~/.config"))` — PathBuf/std::fs never expand `~`, so on a
box where `dirs` can't resolve a home directory this would silently
resolve to a directory literally named `~` under the current working
directory. Switched to bread_utils::xdg::config_dir.
2026-07-17 10:09:49 +08:00
Breadway
13863836bc Migrate socket2 path resolution to bread-utils::hypr
hyprland_socket2_path() duplicated the same HYPRLAND_INSTANCE_SIGNATURE +
XDG_RUNTIME_DIR resolution breadbox and breadclip had for socket1 — now
shared via bread_utils::hypr::socket_path (path dependency for now, see
the TODO in Cargo.toml).

Builds and all 16 existing tests pass.
2026-07-17 09:26:00 +08:00
Breadway
ddbc9e63d3 breadmon: clear error for missing BOS hyprctl eval extension, doc, version fix
- apply_monitors() shells out to `hyprctl eval` with a `hl.monitor()`
  Lua call, a BOS-only Hyprland extension. On vanilla Hyprland the
  eval request itself isn't recognized and failed with a confusing
  raw hyprctl response. Detect that case and fail with an explicit
  'this feature requires BOS' message instead, with tests.
- README: documented the BOS dependency for the apply step under
  Requirements; noted everything else in the TUI works without it.
- Cargo.toml: 0.1.0 -> 0.1.1, matching the latest tag (v0.1.1).
2026-07-17 03:22:52 +08:00
Breadway
c5136331b4 Initial commit 2026-07-02 20:59:16 +08:00