`[[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
3.5 KiB
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. |
|
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 fullon 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)injournalctl --user -u niri; bubbles arrive after the portal round-trip ("bunch of errors after a delay").flameshot screenis NOT exempt: live test docked, 2026-10-14 —flameshot fullandflameshot screenboth 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_DIRoverrides 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 todesk.shtoo — 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
- displays.md — desk profiles: 1 output portable vs 2 docked
- keybindings.md — generated cheat sheet (source of the binds)
- noctalia-shell — shell settings on Mod+Shift+O