Per-skärm-inställningar med skärmväljare, kant-i-kant-marginaler
All checks were successful
check / check (push) Successful in 1m39s

- outputs{} är nu generiska JSON-överridar: vilket configfält som helst
  kan sättas per skärm och deep-mergas över den globala configen
  (Config::for_output). Docka, autohide, dodge, beteende, hotspots och
  CSS (scopat på window.o-<connector>) läser skärmens effektiva config.
- Settings har skärmväljare överst: klickbar förhandsgranskning av
  skärmarna + deras barer, 'Alla skärmar' (standard) eller enskild
  skärm. Bara ändrade fält sparas som override (json-diff);
  återställ-knapp tar bort skärmens överridar. * = har egna.
- Marginaler: skuggutrymmet läggs inte längre på förankrade sidor så
  0 = kant i kant; minusvärden tillåts (A ner till -64, B/C -256).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 00:25:05 +02:00
parent 04d999642c
commit 558c178ec4
8 changed files with 609 additions and 167 deletions

View File

@@ -35,6 +35,13 @@ Alla ändringar i filen slår igenom **live** — ingen omstart behövs.
Högerklick på tom yta → **Inställningar…** Ändringar skrivs direkt till
JSON-filen och appliceras live. GUI:t och handredigering kan blandas fritt.
Överst finns **skärmväljaren** med en klickbar förhandsgranskning av
skärmarna och deras barer. "Alla skärmar" (standard) redigerar den
globala configen; välj en skärm för att ge just den egna inställningar —
bara fälten du ändrar sparas som override (`outputs` i JSON:en), resten
följer globala. `*` i förhandsgranskningen = skärmen har egna
inställningar; "Återställ skärmen till globalt" tar bort dem.
## Configreferens (`config.json`)
```jsonc
@@ -42,9 +49,11 @@ JSON-filen och appliceras live. GUI:t och handredigering kan blandas fritt.
"position": "bottom", // bottom | top | left | right
"alignment": "center", // center | start | end — var längs kanten ön ligger
"expand": false, // true = täck hela kanten (panelen fyller bredden/höjden)
"margin": 8, // A: px från kanten baren ligger mot
"margin": 8, // A: px från kanten baren ligger mot (minus = utanför)
"margin_start": 0, // B: marginal i början av kanten (vänster/topp)
"margin_end": 0, // C: marginal i slutet av kanten (höger/botten)
// skuggutrymme läggs aldrig på förankrade sidor,
// så 0 = verkligen kant i kant
"layer": "top", // top | overlay | bottom (always-on-top = overlay)
"avoid_windows": false, // true = reservera plats (exclusive zone)
@@ -81,11 +90,16 @@ JSON-filen och appliceras live. GUI:t och handredigering kan blandas fritt.
"pins": ["firefox", "org.kde.konsole", "org.kde.dolphin"],
"special_buttons": { "show_desktop": true, "overview": true },
"outputs": { // per-skärm-överstyrning (nyckel = connector)
"outputs": { // per-skärm-överridar (nyckel = connector).
// VILKET configfält som helst kan läggas här och gäller då bara den
// skärmen (deep-merge över globala). Extranycklar: "enabled" och
// "only_this_output" (visa bara fönster på den här skärmen).
"DP-1": {
"enabled": true,
"only_this_output": true, // visa bara fönster på den här skärmen
"pins": ["steam", "discord"] // null/utelämnad = ärver globala pins
"only_this_output": true,
"position": "left",
"pins": ["steam", "discord"],
"appearance": { "accent": "#5fb878" }
}
},