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 ### A desk with no matching profile is silently misconfigured
`desk-2-portable.kdl` stopped being a skeleton: the two PM1601 16" panels are `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 identity-keyed (`PNP(XYM) PM1601 0000000000000`, `… demoset-1`), laid out
centred against their 1920-tall band, and `display.kdl` points at it. Law: a rig 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* 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 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 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) ## The desk-2 rig (portable)
Laptop plus two 16" PM1601 panels in portrait, side by side as one 2400x1920 Laptop flanked by the two 16" PM1601 panels, all three landscape. Profile:
band. Profile: `cfg/desk-2-portable.kdl` (`display.kdl` symlinks to it). `cfg/desk-2-portable.kdl` (`display.kdl` symlinks to it).
``` ```
┌──────────────┬──────────┬──────────┐ ┌──────────┬──────────────┬──────────┐
│ │ PM1601 │ PM1601 │ eDP-1 1920x1080 normal x=0,y=420 │ PM1601 │ │ PM1601 │ HDMI-A-1 1920x1200 normal x=0,y=0
│ │ rot 90 │ rot 90 │ DP-2 1200x1920 rot 90 x=1920,y=0 │ 1920x1200│ eDP-1 │ 1920x1200│ eDP-1 1920x1080 normal x=1920,y=60
│ eDP-1 │ 1200x1920│ 1200x1920│ HDMI-A-1 1200x1920 rot 90 x=3120,y=0 │(HDMI-A-1)│ 1920x1080 │ (DP-2) │ DP-2 1920x1200 normal x=3840,y=0
│ 1920x1080 │ (DP-2) │(HDMI-A-1)│ │ │ │ │
│ │ │ │ The laptop is pinned 420 px down so its └──────────┴──────────────┴──────────┘ The laptop is 60 px down so it is
└──────────────┴──────────┴──────────┘ centre (960) meets the band's centre: x=0,y=0 x=1920,y=60 x=3840,y=0 centred against the taller panels.
x=0,y=420 x=1920,0 x=3120,0 no dead corner when the cursor crosses.
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 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 `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 when the whole rig is present — unplug one 16" panel and the watcher leaves the