screen-mark
Screenshot capture and annotation in pure Rust, for Windows and for Linux under X11.
Ctrl+PrtSc saves and copies the monitor under your mouse. Ctrl+Shift+S opens an overlay like the one on this page: drag a region, draw on it, press Enter to copy.
Three hotkeys
CtrlPrtSc
Save and copy, in one press
Saves a PNG of the monitor under the mouse to Pictures\screen-mark and puts the same image on the clipboard. Presses made while one is still saving are queued, and file names never overwrite each other. Settings › Capture can switch it to all monitors.
CtrlShiftS
Open the overlay
Drag for a region, click for a window, Esc cancels. Enter or Ctrl+C copies the selection with everything drawn on it; Ctrl+S saves it as PNG, JPEG or WebP.
screen-mark lives in the tray, with optional autostart. The tray menu has the same captures, plus a delayed one with a 3, 5 or 10 second countdown.
ShiftPrtSc
The last region, again
Captures the same area as your last region, with no overlay, then saves and copies it like Ctrl+PrtSc. A window or a chart you capture every day becomes one key.
screen-mark remembers the area across restarts. If it is on no screen any more, because a monitor was unplugged, a popup says so.
All three are rebindable in Settings › Keys. If another app already holds one (Greenshot, ShareX and some keyboard utilities register Ctrl+PrtSc or Shift+PrtSc), a popup names the key; click it to pick another.
Fourteen tools, one key each
In the overlay every tool has a single key. Press one on your keyboard: it lights up below and switches the tool in the overlay at the top of this page.
- V
- Select, move
- A
- Arrow
- R
- Rectangle
- C
- Circle
- O
- Rounded rect
- L
- Line
- P
- Pencil
- H
- Highlight
- F
- Spotlight
- T
- Text
- B
- Pixelate
- N
- Step marker
- I
- Eyedropper
- M
- Measurement
Ctrl+Z and Ctrl+Shift+Z undo and redo, so nothing you draw is final until you copy. The scroll wheel changes the tool size. Highlight multiplies like a real highlighter, so dark text stays readable. Step markers number themselves.
Every key is rebindable in Settings › Keys: click a binding and press the new combination. Settings refuses a combination another binding already uses, one Windows keeps for itself (Alt+Tab, Win+L), or a global hotkey another app has registered, and says which.
Dark and light modes, Nightshift and Dayshift from the RFS palettes. Five annotation colours, or any #rrggbb.
After the capture
- Copy
- Enter or Ctrl+C. The selection and everything drawn on it, ready to paste.
- Save
- Ctrl+S. A PNG, JPEG or WebP save dialog, or straight into your captures folder if you turn the dialog off.
- Pin
- Keeps the capture on screen as an always-on-top window, for reference while you work.
- OCR
- Runs the Windows OCR API on the capture and copies the text. Windows only, and the OCR language pack for your display language has to be installed.
- Upload
- Anonymous upload to Imgur. It ships with no client ID: register one at api.imgur.com and set it in Settings or
SCREEN_MARK_IMGUR_CLIENT_ID. - History
- The last 20 captures, in their own window.
Two switches in Settings › Capture change the region flow. Save a file every time I copy writes a PNG alongside each copy. Copy as soon as a region is drawn skips the toolbar, so drag and release is the whole job.
Why it exists
I wanted a screenshot tool that starts in under a second, draws an arrow without a round trip through a web view, and leaves no background service I didn't ask for.
This is that: winit for windows, tiny-skia for drawing, a tray icon, two global hotkeys and a TOML file. The release is one exe with no browser engine inside.
Install
- Windows screen-mark-v2.2.0-windows-x64.msi Installer. A 1.x MSI is upgraded in place.
- Windows screen-mark-v2.2.0-windows-x64.zip Portable. The exe asks before it installs itself to AppData.
-
Linux
screen-mark-v2.2.0-linux-x64.tar.gz
X11 only, experimental. Extract,
chmod +x screen-mark, run it.
Every file is on the latest release, with its notes.
Or build it with Rust 1.80 or later:
cargo install --git https://github.com/Real-Fruit-Snacks/screen-mark --locked
From the command line
screen-mark- Starts in the tray.
screen-mark capture --clipboard- Captures the full screen to the clipboard, no UI.
screen-mark capture --save out.png- Captures the full screen to a file, no UI.
screen-mark capture --delay 5- Waits five seconds, then opens the overlay.
screen-mark install- Copies the exe to AppData with a Start Menu entry and PATH.
uninstallremoves it.
Settings are written on first run to %APPDATA%\screen-mark\config.toml on Windows or ~/.config/screen-mark/config.toml on Linux. Every key is optional; the README lists them.
Tested on
- Windows 11, Rust stable. My daily machine; every release is used in anger before it's tagged.
- Windows Server 2025, Rust stable. CI builds, tests and runs clippy on every push.
- Ubuntu 24.04 on X11, Rust stable. CI builds and tests, then drives the real binary on a virtual display with two monitors.
- Not tested: Wayland, where the backend is a stub and capture does nothing, and macOS, where it doesn't build.
Known issues
- Linux capture is X11 only and experimental. Multi-monitor and HiDPI aren't verified there.
- OCR is Windows only and needs the OCR language pack for your display language.
- Imgur upload needs your own client ID.
- Window capture skips cloaked UWP windows on purpose, so some Store apps can't be picked by click.
- Ctrl+PrtSc is taken on some machines. screen-mark says so and lets you pick another key.
--delayon the command line waits silently. The countdown only shows for delays from the tray menu.- Linux:
capture --clipboardloses the image when the command exits, because X11 clipboards live in the owning process. The tray app's clipboard is fine. - Upgrading from HydroShot 1.x moves your config, history and autostart across. Run
hydroshot uninstallonce to remove an old self-installed copy.