Screenshots
Keystone Desktop includes a screenshot workflow built on grim, slurp, and
satty.
By default, screenshots are written to KEYSTONE_SCREENSHOT_DIR, then
XDG_PICTURES_DIR, then ~/Pictures.
Capture
The default screenshot command is keystone-screenshot.
Common ways to use it:
Printstarts a screenshot capture flow.Shift+Printcaptures a smart screenshot to the clipboard.keystone-screenshotruns the default smart mode.keystone-screenshot regioncaptures a selected region.keystone-screenshot windowscaptures a window rectangle.keystone-screenshot fullscreencaptures the focused monitor.
In the save flow, Keystone writes PNG files with names like:
screenshot-2026-04-03_06-23-00.pngLocal storage
Keystone resolves the screenshot output directory in this order:
KEYSTONE_SCREENSHOT_DIRXDG_PICTURES_DIR~/Pictures
To inspect the current effective location:
[[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs
printf '%s\n' "${KEYSTONE_SCREENSHOT_DIR:-${XDG_PICTURES_DIR:-$HOME/Pictures}}"Immich sync
Keystone now syncs screenshots through the Rust ks CLI:
ks screenshots syncThis command:
- reads screenshots from
KEYSTONE_SCREENSHOT_DIR,XDG_PICTURES_DIR, or~/Pictures - uploads PNG screenshots to Immich
- adds them to a Screenshots album for the current account
- tags each uploaded screenshot with source, host, and account metadata
Common usage:
ks screenshots sync
ks screenshots sync --directory ~/Pictures
ks screenshots sync --album-name "Screenshots - alice"Immich OCR search
After screenshots are uploaded to Immich, they are searchable through the same photo index as the rest of the library.
Current manual flow:
- Run
ks screenshots sync. - Wait for Immich to finish indexing OCR and metadata.
- Search locally with
ks photos search.
Example:
export IMMICH_URL="https://photos.ncrmro.com"
export IMMICH_API_KEY="..."
ks photos search --text "known text from screenshot" --type screenshotCurrent caveats
- Screenshot OCR search depends on Immich library attachment and indexing, not only on the upload step.