Some checks failed
check / check (push) Failing after 1m4s
- KRITISKT: notify-watchern reagerade på Access-events, så vår egen läsning av configen triggade ny omladdning i all oändlighet (var 155:e ms). Panelen revs och byggdes om konstant → blinkande hover, klick som aldrig landade. Nu filtreras eventen till riktiga skrivningar (Modify/Create/Remove/Close-Write). - Titeländringar (webbläsare/terminaler) bygger inte längre om UI:t; tooltips slås i stället upp färskt vid hover (query-tooltip), och klick/skroll/menyer agerar på färskt fönster-state vid eventtillfället. - hotspots::rebuild är idempotent (skippar om config+skärmar oförändrade). - Settings: markup-escape i rubriker (Kant & skugga-varningen). - CI: check + release körs på byggnoden brasse-linux01 (runs-on linux-amd64) — waydock byggs BARA för x86_64, aldrig på Pi5:ns arm-runner. Ny release.yaml: vX.Y.Z-tagg bygger x64-binären och laddar upp till Gitea-släppsidan + rullande latest. release.sh är nu bara tagga-och-pusha. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
waydock — plan
Goal
En modern, resurssnål och genomkonfigurerbar dock för Wayfire på
brasse-linux01 — transparent med hint av #222222, i stil med KDE
Plasma 6/Ubuntu-dockan. Ersätter på sikt sfwbar-dockan i Wayfire-DE.
Allt konfigureras via en JSON-fil som kan redigeras för hand eller via
inbyggt settings-GUI, med live-uppdatering åt båda hållen.
Stack
- Rust (stabil, rustup) — en singel-binär, LTO-optimerad release
- GTK4 + gtk4-layer-shell — rendering, CSS-theming, popovers/menyer
- wayland-client + wayland-protocols-wlr — egen Wayland-anslutning
mot
zwlr_foreign_toplevel_manager_v1(fönsterlista, aktivera, minimera, maximera, stäng, flytta-mellan-outputs-kontext) - gio (ingår i GTK-stacken) —
.desktop-uppslag, ikoner, applansering - Övriga crates:
serde/serde_json(config),notify(filewatcher),log+simplelog(loggning) - Wayfire IPC (egen liten klient över unix-socket) — scale/expo-toggle och fönstergeometri för intelligent dodge
- Mål-OS/arch: linux-x64 (denna dator). Ingen Pi5-deploy.
Deploy target
Pattern A (binär), med lokalt släppbygge:
- CI (Gitea Actions, x64-runnern
linux-amd64på brasse-linux01):cargo check+clippy+testvid push till master. Bara x86_64 — ingen arm-build (Pi5-runnern rör aldrig det här repot). - Släpp:
./release.sh vX.Y.Ztaggar och pushar; release-workflowet på byggnoden bygger x64-binären och laddar upp till Gitea-släppsidan- uppdaterar rullande
latest.install.shger en-rads-install.
- uppdaterar rullande
Config
~/.config/waydock/config.json (XDG). Genereras med defaults om den
saknas. Filewatcher → alla ändringar appliceras live. Settings-GUI:t
skriver samma fil. Schema dokumenteras i doc/usage.md.
Milestones
- M0 Scaffold — repo, docs, CI, VS Code-tasks, release-flöde (klar)
- M1 Panelskelett — layer-shell-fönster per skärm; position (top/bottom/left/right), centrering, marginal, layer, exclusive zone; CSS-pipeline från config (bakgrund/opacity/radie/skugga/kant); default-config-generering; loggning
- M2 Fönsterspårning — foreign-toplevel-klient; app_id → ikon/namn; körande appar med gruppering, indikatorprickar, urgency-puls, tooltips; klick = fokus/minimera, skroll = växla fönster, mittklick konfigurerbart
- M3 Pins & per skärm — pinnade appar (start via gio); unika pins
per output;
only_this_output-filter; visa skrivbord-knapp; översikt-knapp (scale) - M4 Menyer — konfigurerbar högerklicksmeny per app (minimera, maximera, flytta till skärm-submeny, pin/unpin, stäng); tomyta-meny (inställningar, ladda om, avsluta)
- M5 Settings-GUI — GTK4-fönster som redigerar hela JSON-configen live (färger, transparens, skuggor, accent, storlek, beteende, pins, menyval, hotspots)
- M6 Autohide & hotspots — autohide med animation + hot edge-väckning; intelligent dodge via Wayfire IPC-geometri (fallback: alltid-dölj); hot corners/edges med exec- eller IPC-actions
- M7 Polish & släpp — profilering (mål: 0 % CPU i vila, < 70 MB RAM), release v0.1.0, wiki-docs
- M8 Wayfire-DE-integration — ersätt
autostart/11-dock.sh(sfwbar) med waydock, pensionera sfwbar-configen
Roadmap / expansions (överenskomna)
- Autohide + dodge-animering (M6)
- Fönsterindikatorer + urgency-puls (M2)
- Scroll- och mittklicksåtgärder (M2)
- Wayfire IPC-integration för hotspots/översikt/dodge (M3/M6)
Open questions
- Äkta fönsterminiatyrer i grupp-popup är inte möjliga — Wayfire
exponerar inte
ext_foreign_toplevel_image_capture_source_v1. Om protokollet dyker upp i senare Wayfire kan miniatyrer läggas till. - Dodge-precision beror på Wayfire IPC:ns view-geometri i 0.11-git — verifieras i M6.