# waydock Modern, resurssnål och genomkonfigurerbar dock för [Wayfire](https://wayfire.org/) — transparent Plasma 6-känsla, byggd i Rust/GTK4 som **en enda binär**. Pinnade appar, körande fönster med gruppering, per-skärm-kontext, konfigurerbara menyer, settings-GUI och live-omladdning av JSON-configen. ## Skärmbilder ![waydock](assets/screenshots/dock-hero.png) | Dockan (pins, grupper, indikatorer) | Inställningar (per skärm, live) | |---|---| | ![dock](assets/screenshots/dock-closeup.png) | ![settings](assets/screenshots/settings.png) | Samma dock, sex olika configar — bara JSON-filen ändrades mellan bilderna: ![galleri](assets/screenshots/gallery.png) ## Vad kan konfigureras? - **Placering**: nere/uppe/vänster/höger; centrerad/vänster-/högerjusterad ö eller expanderad över hela kanten; tre marginaler (från kanten + start/slut, minusvärden ok) — med ritad illustration i settings som visar måtten - **Utseende**: panelfärg + transparens, accentfärg, hörnradie, kant, skugga, ikonstorlek/-avstånd, hover-zoom, animationer, indikatorstil - **Beteende**: klick (fokus/minimera/växla), mittklick, skroll (växla fönster eller starta stoppad app), gruppering, fönsterlista vid klick eller hover, peek/fokus vid hover i listan, tooltips, urgency-puls - **Menyer**: välj exakt vilka val högerklicksmenyn ska ha (minimera/maximera/flytta till skärm/pinna/stäng) - **Per skärm**: vilken inställning som helst kan överridas per skärm — egna pins, position, färger, filter för bara-den-skärmens-fönster - **Autohide**: dodge (göm vid fönsteröverlapp) eller göm alltid, med sensor vid kanten och animation - **Hotspots**: hot corners/edges som kör kommandon eller Wayfire-IPC (t.ex. scale-översikten) Allt via `~/.config/waydock/config.json` (live-omladdning) **eller** settings-GUI:t — högerklicka på tom dockyta → Inställningar… - Config: `~/.config/waydock/config.json` (skapas automatiskt första starten) - Djupare docs: [`doc/plan.md`](doc/plan.md), [`doc/architecture.md`](doc/architecture.md), [`doc/usage.md`](doc/usage.md) — samt [wikin](https://gitea.brasse-pc.eu/brasse/waydock/wiki) ## Beroenden (Arch/Garuda) ```bash sudo pacman -S --needed gtk4 gtk4-layer-shell rustup default stable # Rust ≥ 1.85 ``` Kör kräver en wlroots-compositor med `zwlr_foreign_toplevel_manager_v1` (Wayfire, Sway, …). Wayfire IPC-funktionerna (översikt, dodge) kräver `ipc`-pluginen i wayfire.ini. ## Bygga & köra ```bash git clone https://gitea.brasse-pc.eu/brasse/waydock.git cd waydock cargo build --release # binär: target/release/waydock ./target/release/waydock # eller: cargo run ``` I VS Code: **Ctrl+Shift+B** kör build-tasken (lägger binären i `build/`). Loggning: `waydock --log debug` eller env `WAYDOCK_LOG=debug`, `--log-file ~/.cache/waydock.log` för fil. ## Installera (release-binär) ```bash curl -fsSL https://gitea.brasse-pc.eu/brasse/waydock/raw/branch/master/install.sh | sh ``` ## Hur det funkar (kort) En GTK4-process ritar ett layer-shell-fönster per skärm. En egen Wayland-anslutning lyssnar på `zwlr_foreign_toplevel_manager_v1` för fönsterlistan (aktivera/minimera/stäng går samma väg). `.desktop`-filer och ikoner slås upp via gio/ikontemat. All styling genereras som CSS från JSON-configen; en filewatcher gör att ändringar (för hand eller via settings-GUI:t) slår igenom direkt. Wayfire IPC används för scale/expo-toggle och fönstergeometri till intelligent autohide. ## Släpp ```bash ./release.sh v0.1.0 # taggar och pushar — CI bygger och publicerar ``` All CI kör på **byggnoden på brasse-linux01** (x64-runnern, label `linux-amd64`) — waydock byggs bara för x86_64, aldrig på Pi5:ns arm-runner. Push till master kör `cargo check`/`clippy`/`test`; en vX.Y.Z-tagg bygger release-binären och laddar upp den till [släppsidan](https://gitea.brasse-pc.eu/brasse/waydock/releases) (+ rullande `latest`).