From b651d61056c1ea40c2dec524b5ad5d00b9feb6f4 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 30 Oct 2026 15:56:39 -0700 Subject: [PATCH] docs(niri): portable desk runs landscape, HDMI left of the laptop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- omp-docs/log.md | 4 ++-- omp-docs/tools/niri/displays.md | 28 ++++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/omp-docs/log.md b/omp-docs/log.md index d3e1792..7b09a92 100644 --- a/omp-docs/log.md +++ b/omp-docs/log.md @@ -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 diff --git a/omp-docs/tools/niri/displays.md b/omp-docs/tools/niri/displays.md index ec64e60..d3afe65 100644 --- a/omp-docs/tools/niri/displays.md +++ b/omp-docs/tools/niri/displays.md @@ -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