Files
command-center/omp-docs/tools/niri/screenshots.md
T
Frank 651924a4bc docs(skills): collapse three overlapping skills trees into one verified tree
Three parallel trees documented the same ecosystem: omp-docs/skills/
(two overview pages), tools/npx-skills/ (10 pi-era npm pages), and
tools/vercel-labs-skills/ (11 CLI pages), plus a fourth leaderboard page
at engineering/skills-ecosystem.md. Verbatim overlap (identical SKILL.md
field tables in skills-spec.md vs skill-format.md; 13-agent vs 68-agent
copies of the same upstream table). Consolidated to four concept pages:

- skills/agent-skills.md: standard, format, loading, authoring (merges
  skills-spec, skill-format, skill-file-structure, skill-loading,
  best-practices, skills-vs-extensions)
- skills/skills-cli.md: CLI reference (merges commands, source-formats,
  installation-scope, skill-discovery, lock-file, env-variables,
  agent-support, related-links)
- skills/store-wiring.md: moved, fleet ops, links retargeted
- skills/ecosystem.md: replaces skills-ecosystem.md; stale 2026-08-12
  top-50 table dropped, replaced with a live top-10 re-queried from the
  skills.sh API tonight and the API contract re-verified (zero-based,
  200/page, {skills,total,hasMore,page}, total 9909)

All facts re-verified 2026-10-19 against primary sources:
agentskills.io, vercel-labs/skills README + src/cli.ts (command set,
--full-depth) + src/skill-lock.ts (v3 lock, XDG path, wipe-on-old),
live skills.sh API. Deleted superseded core/index-doc.md (old pi-era
docs index). Retargeted all inbound links (tools/index, engineering x3,
packages x3, pi/skills, core/index). Pi-era npm skill packaging is
listed as archived under /pi/.

Refs #29
2026-10-19 02:58:52 -07:00

81 lines
3.5 KiB
Markdown

---
type: reference
title: Screenshot Matrix
description: "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."
tags:
- niri
- flameshot
- screenshots
- multi-monitor
- portal
verified: 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](https://github.com/niri-wm/niri/issues/4313)
(closed duplicate, unfixed in 26.04/8ed0da4),
[flameshot#4449](https://github.com/flameshot-org/flameshot/issues/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
```bash
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|displays.md]] — desk profiles: 1 output portable vs 2 docked
- [[keybindings|keybindings.md]] — generated cheat sheet (source of the binds)
- [[noctalia-shell|noctalia-shell]] — shell settings on Mod+Shift+O