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>
84 lines
3.8 KiB
Markdown
84 lines
3.8 KiB
Markdown
# 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-amd64` på brasse-linux01):**
|
|
`cargo check` + `clippy` + `test` vid push till master. Bara x86_64 —
|
|
ingen arm-build (Pi5-runnern rör aldrig det här repot).
|
|
- **Släpp:** `./release.sh vX.Y.Z` taggar och pushar; release-workflowet
|
|
på byggnoden bygger x64-binären och laddar upp till Gitea-släppsidan
|
|
+ uppdaterar rullande `latest`. `install.sh` ger en-rads-install.
|
|
|
|
## 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
|
|
|
|
1. **M0 Scaffold** — repo, docs, CI, VS Code-tasks, release-flöde *(klar)*
|
|
2. **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
|
|
3. **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
|
|
4. **M3 Pins & per skärm** — pinnade appar (start via gio); unika pins
|
|
per output; `only_this_output`-filter; visa skrivbord-knapp;
|
|
översikt-knapp (scale)
|
|
5. **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)
|
|
6. **M5 Settings-GUI** — GTK4-fönster som redigerar hela JSON-configen
|
|
live (färger, transparens, skuggor, accent, storlek, beteende, pins,
|
|
menyval, hotspots)
|
|
7. **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
|
|
8. **M7 Polish & släpp** — profilering (mål: 0 % CPU i vila, < 70 MB RAM),
|
|
release v0.1.0, wiki-docs
|
|
9. **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.
|