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:
Frank committed 2026-09-28 16:15:57 -07:00
1 parent 4e3d4d20e9
commit f1e0b6583d
8 files changed
+231 -378

No files matched your search

+126
View File
@@ -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`
+2 -1
View File
@@ -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