- Menubar-only app (no Dock icon) on macOS.
- Global hotkey:
Alt+X(macOS: Option+X). - Transparent capture-session overlay that blocks desktop interaction.
- HUD near the cursor showing global
x,yandrgb(r,g,b). - Left click freezes the active monitor as a fullscreen screenshot.
- Space copies the frozen screenshot PNG to the clipboard and exits.
- Cmd+S (macOS) / Ctrl+S saves the frozen screenshot PNG to disk and exits.
- Esc cancels and exits.
- Glass HUD with configurable blur, tint, and hue controls.
- Alt-triggered loupe sample and frozen-mode toolbar for quick action access.
Prototype / in active development.
- Live sampling path: macOS 12.3+ via ScreenCaptureKit (
SCStream) stream samples. - Live mode is stream-first and does not capture full display on cursor movement.
- Freeze/export still uses
xcapcapture. - Menubar and Dock are not included in live window-outline targeting.
- Windows support is planned (minimum Windows 10), but not implemented yet.
git clone https://github.com/hack-ink/rsnap
cd rsnap
cargo build --workspace
cargo run -p rsnaprsnap currently relies on Screen Recording permission to capture other apps/windows.
-
ScreenCaptureKit live sampling on macOS requires macOS 12.3+ and Screen Recording permission.
-
Default cursor tracking and Option key detection on macOS do not require Accessibility or Input Monitoring permissions.
-
Go to
System Settings->Privacy & Security->Screen Recording. -
Enable
rsnap(the built.app), then relaunch the app.
- HUD controls are in Settings → Overlay:
- Opacity (
0..100, default75) - Blur (
0..100, default25) - Tint (
0..100, default0) - Hue (
0..360, system-blue default) - Toolbar placement (
bottom/top, defaultbottom)
- Opacity (
- Tint is applied as hue-shift intensity (0 = no tint, 100 = full tint), while Hue sets target color.
- Numeric entry accepts plain integers for percent/degree fields and updates immediately.
- Same HUD style settings are used by main HUD, loupe, and frozen toolbar.
- In Frozen mode, use Cmd+S (macOS) / Ctrl+S to save a PNG to disk and exit.
- Output is configured in
settings.toml:output_dir(default: Desktop)output_filename_prefix(default:rsnap, sanitized to[A-Za-z0-9_-])output_naming(timestamp(unix ms) orsequence(0001))
cargo make fmt
cargo make lint
cargo make testThe v0 contract lives at docs/spec/v0.md.
If you find this project helpful and would like to support its development, you can buy me a coffee!
Your support is greatly appreciated and motivates me to keep improving this project.
- Fiat
- Crypto
- Bitcoin
bc1pedlrf67ss52md29qqkzr2avma6ghyrt4jx9ecp9457qsl75x247sqcp43c
- Ethereum
0x3e25247CfF03F99a7D83b28F207112234feE73a6
- Polkadot
156HGo9setPcU2qhFMVWLkcmtCEGySLwNqa3DaEiYSWtte4Y
- Bitcoin
Thank you for your support!
We would like to extend our heartfelt gratitude to the following projects and contributors:
- The Rust community for their continuous support and development of the Rust ecosystem.
- TODO
Licensed under GPL-3.0.