Repository navigation
Screenshot Editor
Taking a screenshot in ii-p3drovfx doesn't mean bouncing between three different apps. The Region Selector captures, crops, annotates, extracts text from and exports an image without ever leaving the shell — with OCR, reverse image search, AI image input, Wayland clipboard integration and a Pixel-style preview overlay along for the ride.
The workflow has three parts, usable together or independently:
- Region Selector — picks what to capture
- Inline Screenshot Editor — annotates and edits the selection
- Screenshot Preview Overlay — quick actions after the capture
- Press Super + Shift + S — the screen freezes and the Region Selector opens.
- Drag a rectangle, or just click one of the suggested targets (a window, a panel, or a detected image region) as you move the cursor.
- Then either:
- press Ctrl + C (or click Copy) to send it straight to the clipboard,
- click Save / Save As… to write a file,
- or right-click the selection to open the inline editor and annotate first.
- In the editor, pick a tool from the toolbar, draw, and use Ctrl + Z / Ctrl + Shift + Z freely — nothing is baked in until you export.
Shortcuts that skip the selector entirely:
| Keys | Action |
|---|---|
| Full screen → clipboard | |
| Ctrl + Print | Full screen → clipboard + file |
| Super + Shift + X | OCR a region → text in clipboard |
| Super + Shift + A | Google Lens region search |
The editor's right-click entry needs Settings → Screenshots & Recording → Enable built-in right-click screenshot editor — it's the same toggle described below.
Here's the first neat trick: when the selector opens, the screen has already been captured. You're selecting on top of a frozen frame — so the dimming layer, cursor guides and the selector itself can never leak into your screenshot. The selector can run on the focused monitor only or follow the shell's configured monitor behavior.
Drag to select a rectangle, with live dimensions and a cursor guide as you go. Or don't drag at all — just click one of the smart target regions the selector suggests as your cursor moves:
- Windows — visible Hyprland windows on the active workspace, so you can grab a window without pixel-hunting its borders
- Layers — Wayland layer surfaces (the shell politely excludes its own bar and dock from targeting)
- Content regions — actual image-region detection running against the frozen screenshot, so a picture inside a window can become a one-click target
Each hint type toggles independently in Settings → Screenshots & Recording.
For the image-search workflow there's a circular gesture mode, Google-Lens style: draw a loose circle around what you're curious about and the bounding region feeds the image search action. Stroke width, padding and aim lines are configurable.
With the built-in editor enabled (Settings → Screenshots & Recording → Enable built-in right-click screenshot editor), right-clicking after selecting a region opens the editor right there on the frozen screenshot — no external annotation app, no round-trip through disk.
A full annotation kit, inspired by Spectacle but dressed in Material 3:
| Tool | What it does |
|---|---|
| Selection | Select, move and restyle existing annotations |
| Re-crop | Draw a brand-new capture region without restarting |
| Pencil | Freehand drawing |
| Highlighter | Translucent freehand highlights |
| Line / Arrow | Straight lines and directional arrows |
| Rectangle / Circle / Star | Shape annotations — optionally filled with the current color instead of outlined |
| Text | Editable text placed on the image |
| Number badge | Auto-numbered markers — perfect for tutorials and bug reports |
| Blur / Pixelate | Privacy tools (see below) |
A preset color palette and thickness presets (2 / 4 / 8 px) sit right in the toolbar. Changing color or thickness while an annotation is selected restyles it in place.
Two separate tools for hiding sensitive content: Blur applies a soft smoothed effect, Pixelate replaces detail with blocks. Both offer three strength levels — deliberately independent from the line-thickness setting, so the painted area and the processing intensity are separate decisions.
Nothing is baked in while you work. Annotations live as structured objects: select one and you can move, delete, recolor, restyle or resize it, with a visible selection outline and delete control. The editor keeps its own history — Ctrl+Z to undo, Ctrl+Shift+Z or Ctrl+Y to redo, plus toolbar buttons — covering drawing, deleting, moving and restyling alike.
Even mid-annotation, the region can be resized with four corner handles, four edge handles and full-length draggable edges, or moved entirely. Got it badly wrong? Re-crop draws a fresh region without throwing away your session.
The editor keeps logical screen coordinates and physical pixel resolution separate. On export it derives the real capture scale from the frozen screenshot's dimensions and renders through grabToImage() at physical resolution — so a region selected on a 1.5× monitor exports at native pixels, not a fuzzy logical-size image.
A Material action bar appears next to the region, showing the final screenshot's physical dimensions:
-
Copy (
Ctrl+C) — renders the annotated image straight to the Wayland clipboard -
Save — timestamped file (e.g.
screenshot-2026-08-11_02.15.30.png) in the screenshot directory - Save As… — pick the destination yourself
- Extract Text — OCR (see below)
- Export — more actions: open in the default image app, save-and-copy the file path (great for terminals, bug reports and markdown), reverse image search
- Cancel — no harm done
Extract Text renders the current crop and runs it through Tesseract, automatically using whichever language packs you have installed, then copies the recognized text to the clipboard. Brilliant for text in images, videos, un-selectable UI, scans and remote desktop sessions. The temporary OCR image is cleaned up afterward.
From the Export menu, the edited region is rendered, uploaded, turned into a public URL and handed to the configured image-search engine in your browser.
Privacy note: reverse image search necessarily uploads the selected image to an external hosting endpoint first. Don't use it on anything you wouldn't want leaving your machine.
One of the selector's actions is Ask AI: the selected image is dropped straight into the shell's AI attachment workflow and the AI panel opens with it as context — no manual save-and-attach. See AI Integration.
The built-in editor is optional. The classic Edit action pipes the region (cropped via ImageMagick) to Swappy, or Satty when configured.
After a capture, a compact preview — very Pixel-like — slides in near the bottom-left of the monitor, shaped to the aspect ratio of what you captured, with three actions:
- Save — writes to the screenshot directory (cropping via ImageMagick first when the preview still references the full frozen frame + crop coordinates; editor-rendered images are saved as-is)
- Edit — opens the shot in Swappy (again cropping first if needed) — a second chance at editing even when you skipped the inline editor
- Delete — removes the screenshot from the Wayland clipboard, and from the Cliphist history when available
It dismisses itself after 6 seconds — but the timer pauses while you hover, and a new screenshot resets it.
- The whole system speaks Wayland clipboard via
wl-copy— image data, OCR text or a saved file path depending on the action, with optional copy-confirmation notifications (rendered by the shell's own notification system). - Screenshots trigger the shell's shutter sound event through the shared sound service; recordings deliberately don't.
- Default storage is
~/Pictures/Screenshots, configurable in Settings → Screenshots & Recording.
The same Region Selector also powers screen recording: its actions include Screenshot Copy, Screenshot Edit, Image Search, Character Recognition, Ask AI, Record Region and Record Region with Sound. If a recording is already running, invoking it triggers the stop workflow instead. Recording itself is covered in Screen Capture & Recording.
| Tool | Used for |
|---|---|
ImageMagick (magick) |
Cropping and image processing |
wl-copy |
Wayland clipboard |
| Tesseract | OCR / Extract Text |
| Swappy / Satty | External editing |
curl + jq
|
Reverse-image-search upload |
xdg-open |
Opening exports and search results |
| Cliphist | Clipboard-history cleanup |
Features degrade gracefully — anything that needs a missing tool simply requires installing it, without breaking the rest of the workflow.
The implementation lives in modules/ii/regionSelector/:
| File | Role |
|---|---|
RegionSelector.qml |
Instance coordination and monitor behavior |
RegionSelection.qml |
The main workflow: frozen frame, selection, window/layer/content targeting, circle mode, editor state, history, HiDPI export, OCR, export actions, AI handoff |
annotations/EditorToolbar.qml |
The annotation toolbar |
annotations/*AnnotationComponent.qml |
One component per annotation type (rect, circle, star, line, arrow, pencil, text, number badge) plus the shared AnnotationModel
|
modules/common/utils/ScreenshotAction.qml |
Builds the commands for copy, external edit, search, OCR, Ask AI and region recording |
modules/ii/screenshotOverlay/ |
The preview overlay window, its timeout and Save/Edit/Delete actions |