feat(devshell): add terminal UI capture tools (#69629)
This commit is contained in:
@@ -41,6 +41,11 @@
|
|||||||
# libglvnd provides libEGL.so.1 that cage needs on NixOS.
|
# libglvnd provides libEGL.so.1 that cage needs on NixOS.
|
||||||
cage
|
cage
|
||||||
libglvnd
|
libglvnd
|
||||||
|
# Graphical terminal + Wayland screenshot client for CLI/TUI UI
|
||||||
|
# evidence. `cage -- ghostty ...` keeps captures off the user's
|
||||||
|
# live compositor; grim runs inside that isolated client session.
|
||||||
|
ghostty
|
||||||
|
grim
|
||||||
]
|
]
|
||||||
++ self'.packages.default.passthru.devDeps;
|
++ self'.packages.default.passthru.devDeps;
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
|||||||
Executable
+18
@@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
out=${1:?usage: $0 OUTPUT.png [command...]}
|
||||||
|
shift
|
||||||
|
mkdir -p "$(dirname "$out")"
|
||||||
|
|
||||||
|
# This runs inside `cage --`, after Ghostty has already opened the isolated
|
||||||
|
# Wayland display. Capture before this script exits so Cage keeps the surface
|
||||||
|
# alive long enough for grim to see it.
|
||||||
|
if (($#)); then
|
||||||
|
"$@"
|
||||||
|
fi
|
||||||
|
if ! command -v grim >/dev/null 2>&1; then
|
||||||
|
echo "grim is required inside the Cage client session" >&2
|
||||||
|
exit 127
|
||||||
|
fi
|
||||||
|
grim "$out"
|
||||||
Reference in New Issue
Block a user