Files
waydock/doc/plan.md
2026-08-30 12:49:45 +02:00

86 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)*
(M1M7 klara 2026-08-30 — v0.1.0 släppt: binär 1,6 MB, en-raders-install
verifierad, repot publikt. M8 klar — waydock är Wayfire-DE:s dock.)
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** *(klar 2026-08-30)* `autostart/11-dock.sh`
kör waydock, sfwbar-configen pensionerad
## 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 Wayfire IPC:ns view-geometri i 0.11-git
verifieras i M6.