- Zonen mäts på synliga panelen (inte fönstret med skuggutrymme) — maximerade fönster kommer ~20px närmare docken direkt - Ny inställning reserve_margin (även i settings → Layout): finjustera avståndet mellan panel och maximerade fönster; minus tillåtet - README + wiki: före/efter-bild som demonstrerar reservationen Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
107 lines
4.2 KiB
Markdown
107 lines
4.2 KiB
Markdown
# 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
|
|
|
|

|
|
|
|
| Dockan (pins, grupper, indikatorer) | Inställningar (per skärm, live) |
|
|
|---|---|
|
|
|  |  |
|
|
|
|
Samma dock, sex olika configar — bara JSON-filen ändrades mellan bilderna:
|
|
|
|

|
|
|
|
## 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
|
|
- **Reservera plats**: maximerade fönster stannar vid docklinjen i stället
|
|
för att täcka dockan — finjustera avståndet med `reserve_margin`
|
|
(0 = kant i kant, minus = ännu närmare). Fungerar ihop med autohide:
|
|
|
|

|
|
|
|
- **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`).
|