Files
command-center/omp-docs/tools/niri/screenshots.md
T
Frank 62a70caebb docs(okf): 53 Obsidian wikilinks become OKF links
`[[page|Label]]` is Obsidian syntax, not OKF. `kb-lint` resolves it Obsidian-style — by
filename, anywhere in the bundle — so it has never tripped the link gate, while every other
consumer of the bundle (an OKF renderer, a Gitea wiki export, `grep` for reachability) sees
bracketed text where a link should be. That is how two generated pages ended up with no
inbound link at all and nobody noticed: the my-first link census of the bundle reported them
as orphans because their only inbound edges were wikilinks.

Mechanical conversion, 52 links across 17 pages, each resolved against the same page set
`kb-lint` uses: an explicit `|Label` is kept verbatim, an unlabelled link takes the target's
frontmatter `title`. Targets are emitted bundle-absolute (`/tools/niri/tips.md`), the form
the spec recommends and the form 99 existing links in this bundle already use.

Two links were `[[index]]`, which resolves by filename to 21 pages — the ambiguity that
filename-resolution invites. Both meant their own directory's index, so both are now written
out in full: `/tools/gitea/index.md`, `/tools/niri/index.md`.

The linter still tolerates wikilinks; whether it should reject them outright is an open
question on #64, because that would replace the two tests pinning today's tolerance.

Refs #64
2026-10-21 02:11:56 -07:00

3.5 KiB

type, title, description, tags, verified
type title description tags verified
reference Screenshot Matrix Screenshot setup on blankpad — flameshot retired (all modes hang via portal on 2+ outputs, niri#4313); niri-native binds: all-monitors script, focused-screen capture, interactive UI. Includes the niri spawn-sh PATH trap.
niri
flameshot
screenshots
multi-monitor
portal
2026-10-14

Screenshot Matrix

Flameshot is retired on this box (2026-10-14). Every flameshot mode on Wayland captures through xdg-desktop-portal → xdg-desktop-portal-gnome → niri's GNOME-Screenshot compatibility API, which is hard-limited to one output. All binds are niri-native now.

Live binds

Bind Action Output
Print / Ctrl+Shift+1 / Mod+Shift+S screenshot-desk.sh — one PNG per monitor ~/Pictures/Screenshots/Screenshot from … <connector>.png
Alt+Print / Ctrl+Shift+2 screenshot-screen — focused monitor same dir (niri screenshot-path) + clipboard
Ctrl+Print / Ctrl+Shift+3 screenshot UI — interactive region/window/screen, Space saves, Esc cancels same dir + clipboard; single-output selection by design

Noctalia settings lives on Mod+Shift+O (moved off Mod+Shift+S).

Why flameshot died (and not just full)

  • Portal chain: flameshot 14 → xdg-desktop-portal-gnome → niri D-Bus API → screenshot_all_outputs → ensure!(outputs.len() == 1) (FIXME upstream).
  • flameshot full on 2 outputs: each press emits 3 refusals (composited screen + per-output) — WARN niri::niri: error taking a screenshot: Condition failed: outputs.len() == 1 (2 vs 1) in journalctl --user -u niri; bubbles arrive after the portal round-trip ("bunch of errors after a delay").
  • flameshot screen is NOT exempt: live test docked, 2026-10-14 — flameshot full and flameshot screen both hang ~15 s, exit 124 under timeout, no file written.
  • Upstream: niri#4313 (closed duplicate, unfixed in 26.04/8ed0da4), flameshot#4449.
  • Portable desk (1 output): flameshot would work again — that is the portal's only supported shape.

The all-monitor path: scripts/screenshot-desk.sh

  • Per active output (niri msg --json outputs): focus-monitor → screenshot-screen --path (absolute) → restore prior focus.
  • All niri-native; no grim, no portal. SCREENSHOT_DIR overrides the output dir.

The spawn-sh PATH trap (why "it works in the shell" lies)

niri's environment PATH is the system path — ~/.local/bin is absent (tr '\0' '\n' < /proc/$(pidof niri | awk '{print $1}')/environ). spawn-sh "some-user-script" fails silently. Rules:

  • Keybinds use absolute script paths (/home/blank/.omp/scripts/…). Applies to desk.sh too — its bare bind was dead for the same reason.
  • A bare script name in a keybind is a bug on this box.

Census commands

niri msg outputs                                     # how many outputs live
journalctl --user -u niri --since today | grep -i screenshot   # WARN vs DEBUG saves
tr '\0' '\n' < /proc/$(pgrep -x niri | head -1)/environ | grep ^PATH   # spawn-sh environment

See Also