docs: distill the retired workstation's KB pages into general pages
Frank's call: no per-host graveyard. The four /system/dankware/ pages carried two pieces of knowledge that outlive the box, and one that does not. Distilled: - omp-docs/system/network.md (new) — LAN topology plus the multi-link resolver law: a client with two +DefaultRoute links flaps its DNS, and the fix is a static per-connection resolver, not resolved.conf. Keeps the flush-caches-loop verification, because one successful dig proves nothing. - omp-docs/tools/niri/displays.md (new) — the multi-monitor rig: portrait transforms, absolute positions, auto-placed third panel, the iGPU render-node pin, and the three failure modes (duplicate output blocks, positions that do not reflow, a mode the panel cannot drive). Dropped: the machine's own spec sheet (CPU/GPU/PCI/NVMe inventory for a box Frank sold) and its quick-facts table. The OS and userspace facts it repeated already live in tools/cachyos.md. omp-docs/system/dankware/ moved to .AGENTTRASH/20260928-retired-workstation/ (not deleted; git history holds it too). system/index.md and the niri index repoint; niri's [[displays]] wikilink now resolves to the new page instead of the trashed one. kb-lint: 0 violations.
This commit is contained in:
1 parent
4e3d4d20e9
commit
f1e0b6583d
8 files changed
+231
-378
No files matched your search
@@ -0,0 +1,126 @@
|
||||
---
|
||||
type: reference
|
||||
title: Display Configuration
|
||||
description: Niri output configuration for a multi-monitor desk rig — portrait transforms, position pinning, scale, and iGPU display ownership.
|
||||
tags:
|
||||
- niri
|
||||
- display
|
||||
- monitors
|
||||
- rotation
|
||||
verified: 2026-08-28
|
||||
---
|
||||
|
||||
# Display Configuration
|
||||
|
||||
How a multi-monitor desk rig is configured in niri: portrait external panels
|
||||
flanking a laptop panel, positions pinned by hand, and the integrated GPU kept
|
||||
as the display owner.
|
||||
|
||||
**Config:** `~/.config/niri/cfg/display.kdl`
|
||||
**Probe:** `wlr-randr` (installed by CachyOS) reports what the compositor
|
||||
actually committed — connectors, preferred modes, transforms, scale, positions.
|
||||
|
||||
---
|
||||
|
||||
## The rig
|
||||
|
||||
Three outputs in a row: two external monitors rotated to portrait, one
|
||||
internal laptop panel in landscape at the right.
|
||||
|
||||
```
|
||||
┌──────────────┬──────────────┬──────────────┐
|
||||
│ │ │ │
|
||||
│ DP-1 │ DP-3 │ eDP-1 │
|
||||
│ external │ external │ internal │
|
||||
│ 1920x1200 │ 1920x1200 │ 2560x1600 │
|
||||
│ Portrait │ Portrait │ Landscape │
|
||||
│ 90° rotate │ 270° rotate │ 1.5x scale │
|
||||
│ │ │ │
|
||||
└──────────────┴──────────────┴──────────────┘
|
||||
x=0,0 x=1200,0 auto-placed
|
||||
```
|
||||
|
||||
| Output | Role | Transform | Position | Scale |
|
||||
|--------|------|-----------|----------|-------|
|
||||
| `DP-1` | External, left | `90` (portrait) | `x=0 y=0` | 1.0 |
|
||||
| `DP-3` | External, center | `270` (portrait) | `x=1200 y=0` | 1.0 |
|
||||
| `eDP-1` | Internal panel | none (landscape) | auto-placed | 1.5 |
|
||||
|
||||
The two portrait panels are 1200 px wide after rotation, which is why the
|
||||
second one starts at `x=1200`. The internal panel declares no position at
|
||||
all — niri auto-places it to the right of the explicitly positioned outputs.
|
||||
That is the only reliable way to keep a third panel from landing on top of
|
||||
the rig when a cable is re-seated.
|
||||
|
||||
---
|
||||
|
||||
## The config pattern
|
||||
|
||||
```kdl
|
||||
output "DP-1" {
|
||||
transform "90"
|
||||
position x=0 y=0
|
||||
}
|
||||
|
||||
output "DP-3" {
|
||||
transform "270"
|
||||
position x=1200 y=0
|
||||
}
|
||||
|
||||
output "eDP-1" {
|
||||
// no position — auto-placed to the right of the DP-* outputs
|
||||
scale 1.5
|
||||
}
|
||||
```
|
||||
|
||||
Three rules learned the hard way:
|
||||
|
||||
1. **One output, one block.** A second block keyed by the make/model string
|
||||
(`output "Samsung Electric Company …"`) that also sets `transform` fights
|
||||
the connector-keyed block. Use the make/model form only to pin a `mode`
|
||||
for an output whose connector name is unstable across boots, and never
|
||||
set a transform in both places.
|
||||
2. **Positions are absolute, not relational.** Niri does not reflow the rig
|
||||
when one panel is disconnected — a missing output leaves a hole at its
|
||||
coordinates. Verify with `wlr-randr` after any cable or dock change.
|
||||
3. **Re-assert rotation after a config reload, then confirm.** A transform
|
||||
silently reverting to landscape is the usual symptom of a duplicate
|
||||
output block, not of a failed reload.
|
||||
|
||||
Modes must match what the panel reports. Check `wlr-randr` for the preferred
|
||||
mode before writing a `mode` line; a `mode` the panel cannot drive leaves the
|
||||
output dark or drops it.
|
||||
|
||||
---
|
||||
|
||||
## GPU assignment
|
||||
|
||||
The integrated GPU drives all display output; the discrete GPU is available
|
||||
for compute but must not take the outputs. Pin the render node explicitly in
|
||||
`~/.config/niri/cfg/misc.kdl`:
|
||||
|
||||
```kdl
|
||||
environment {
|
||||
render-node "/dev/dri/renderD129"
|
||||
}
|
||||
```
|
||||
|
||||
Without the pin, the session's render node follows probe order and can land
|
||||
on the discrete GPU — which costs display-linked copies and, on hybrid
|
||||
graphics laptops, is a common trigger of the suspend/resume deadlock covered
|
||||
in the sleep-wake investigation report.
|
||||
|
||||
---
|
||||
|
||||
## Reload
|
||||
|
||||
`niri msg action load-config-file` reloads live. Never `SIGHUP` the process
|
||||
— see [[tips]].
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [Niri](/tools/niri/index.md) — compositor overview and config layout
|
||||
- [[tips|tips]] — reload path and other gotchas
|
||||
- [[cachyos|cachyos]] — operating system, including `wlr-randr`
|
||||
@@ -85,11 +85,12 @@ Column-based scrollable tiling. Columns are cycled with Mod+Left/Right (or Mod+H
|
||||
| [[default-bindings|default-bindings.md]] | reference | Default key bindings organized by category |
|
||||
| [[key-bindings-syntax|key-bindings-syntax.md]] | reference | KDL configuration syntax for key bindings |
|
||||
| [[tips|tips.md]] | howto | Practical tips for working with niri |
|
||||
| [[displays|displays.md]] | reference | Multi-monitor display rig: portrait transforms, positions, scale, iGPU display ownership |
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [[noctalia-shell|noctalia-shell]] — Desktop shell integration
|
||||
- [[displays|displays]] — Three-monitor setup
|
||||
- [[displays|displays]] — Multi-monitor desk rig configuration
|
||||
- [[cachyos|cachyos]] — Operating system
|
||||
Reference in new issue
Block a user