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

3.9 KiB
Raw Permalink Blame History

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 på Wayfire IPC:ns view-geometri i 0.11-git — verifieras i M6.