docs(niri): portable desk runs landscape, HDMI left of the laptop

record the normalized layout that landed on main as 9b88208 and the law
that surprised it: positions are absolute, so rotating a panel widens
its logical box and every x to the right of it moves — recompute the
row, never just the rotated block.
This commit is contained in:
Frank committed 2026-10-30 15:56:39 -07:00
1 parent e197c80dcb
commit b651d61056
2 files changed
+20 -12

No files matched your search

+2 -2
View File
@@ -27,8 +27,8 @@ long form.
### A desk with no matching profile is silently misconfigured
`desk-2-portable.kdl` stopped being a skeleton: the two PM1601 16" panels are
identity-keyed (`PNP(XYM) PM1601 0000000000000`, `… demoset-1`), the laptop sits
centred against their 1920-tall band, and `display.kdl` points at it. Law: a rig
identity-keyed (`PNP(XYM) PM1601 0000000000000`, `… demoset-1`), laid out
landscape either side of the laptop, and `display.kdl` points at it. Law: a rig
with no eligible profile does not run "unchanged" — it runs whatever the *last*
profile said. Here that was the home profile, whose Sceptre identity block never
matched and whose connectors still carried `3440x1440@180.000`, so niri fell back
+18 -10
View File
@@ -60,20 +60,28 @@ the ultrawide wins when present and the laptop panel is the fallback.
## The desk-2 rig (portable)
Laptop plus two 16" PM1601 panels in portrait, side by side as one 2400x1920
band. Profile: `cfg/desk-2-portable.kdl` (`display.kdl` symlinks to it).
Laptop flanked by the two 16" PM1601 panels, all three landscape. Profile:
`cfg/desk-2-portable.kdl` (`display.kdl` symlinks to it).
```
┌──────────────┬──────────┬──────────┐
│ │ PM1601 │ PM1601 │ eDP-1 1920x1080 normal x=0,y=420
│ │ rot 90 │ rot 90 │ DP-2 1200x1920 rot 90 x=1920,y=0
│ eDP-1 │ 1200x1920│ 1200x1920│ HDMI-A-1 1200x1920 rot 90 x=3120,y=0
│ 1920x1080 │ (DP-2) │(HDMI-A-1)│
│ │ │ │ The laptop is pinned 420 px down so its
└──────────────┴──────────┴──────────┘ centre (960) meets the band's centre:
x=0,y=420 x=1920,0 x=3120,0 no dead corner when the cursor crosses.
┌──────────┬──────────────┬──────────┐
│ PM1601 │ │ PM1601 │ HDMI-A-1 1920x1200 normal x=0,y=0
│ 1920x1200│ eDP-1 │ 1920x1200│ eDP-1 1920x1080 normal x=1920,y=60
│(HDMI-A-1)│ 1920x1080 │ (DP-2) │ DP-2 1920x1200 normal x=3840,y=0
│ │ │ │
└──────────┴──────────────┴──────────┘ The laptop is 60 px down so it is
x=0,y=0 x=1920,y=60 x=3840,y=0 centred against the taller panels.
HDMI-A-1 sits to the LEFT of the laptop by request (2026-10-30); DP-2 keeps the
right. Earlier the same rig ran both panels in portrait (rot 90, 1200x1920) with
the laptop and both panels to its right — the rotation is `normal` now, so the
panels are 1920 wide and every x moved.
```
Positions are absolute in logical space, so rotating a panel changes its logical
width (1200 → 1920) and every x to its right; recompute the whole row, never just
the rotated block.
All three blocks are identity-keyed and pin their mode string verbatim. The
`requires:` list names all three panels, so the matcher only claims this profile
when the whole rig is present — unplug one 16" panel and the watcher leaves the