Draw on your screen. Any app. Live.

wayscriber is a ZoomIt-style screen annotation tool for Wayland, written in Rust. One keybind summons a drawing layer over whatever you're doing — annotate, present, zoom, capture, then toggle it away.

Free & open source · MIT · Hyprland, Sway, River, Wayfire, Niri, COSMIC, KDE Plasma — and GNOME with caveats

wayscriber overlay drawing numbered arrows, an ellipse, a rectangle and a sticky note over a code editor
1native Rust binary
no Electron, no webview
8–9 ms p95/p99 input-to-commit
while drawing at 120 FPS
120 FPSdefault cap, vsync off
(144/240+ configurable)
~130rebindable actions
one TOML file

Local measurements, honestly labelled — details in performance.

How it works

From install to drawing in three steps

Install the package

Native repos for Debian/Ubuntu and Fedora, AUR for Arch, a Nix flake, or one-off .deb/.rpm downloads. Pick your distro ↓

Bind one key

Run the daemon and bind wayscriber --daemon-toggle to a global shortcut — or let the configurator set up both for you.

systemctl --user enable --now wayscriber.service

Draw over anything

Hit your key and the overlay appears — pen, shapes, text, boards, zoom. F1 opens searchable, clickable Help; Esc hides it again.

Features

A full annotation studio, one keybind away

Everything below ships in the box — no plugins, no accounts, no Electron.

Whiteboard mode with text, sticky note, lines and arrows, with the optional legacy side panel enabled

The full drawing toolkit

Pen, highlighter and eraser; lines, rectangles, ellipses and fillable polygons; arrows with auto-numbered labels; step markers; blur; multiline text and sticky notes; plus a screen eyedropper with a magnified pixel loupe — all with full undo/redo.

Command palette

Fuzzy-search actions with icons and category headers, reopen persisted recents, save preset slots, or edit a shortcut in place. Press Ctrl+K or Ctrl+Shift+P.

Radial menu at the cursor

A fixed eight-way compass with tool glyphs, recent colors and an outer size ring. Hold Middle-click, flick toward a tool, and release to commit.

Board picker listing overlay, whiteboard, blackboard, blueprint and corkboard boards with page thumbnails

Boards & pages

Transparent overlay, whiteboard, blackboard, blueprint or corkboard backgrounds. Every board keeps isolated pages with auto-contrast pens. Jump slots Ctrl+Shift+1..9, pan solid boards with Space+drag.

GTK4 toolbar with the optional legacy panel layout enabled

Adaptive floating controls

Tools, presets and history sit in detached islands; color, size and tool options morph in a contextual style pill. The overflow opens focused Canvas, Session and Settings popovers. F2 cycles full/micro/hidden and F9 toggles visibility.

Pins, minimized state, item visibility/order and board pins survive restarts as separate runtime UI state, leaving your authored config.toml defaults intact.

Sessions that survive

Boards, undo history and tool state persist across restarts by default — per monitor. Named .wayscriber-session files let you keep separate workspaces per project or talk.

Crash-safe: sessions are compressed, backed up, and recovered automatically.

Zoom & presenter mode

ZoomIt-style zoom with Ctrl+Alt+scroll, zoom lock and pan — or use the persistent bottom-right chip for live %, zoom-out, zoom-in, Fit and Lock. Advanced controls also live under overflow → Canvas.

Light passthrough

Click through the overlay while your drawings stay visible — keep working under your notes (layer-shell compositors).

Input HUD

Show your keystrokes and clicks on screen for demos and screencasts — Ctrl+Shift+K. Held keys collapse into a ×N counter. Optional system-wide capture reports input going to the app underneath too.

Capture & PDF export

Grab the full screen, a window or a region — to clipboard or PNG. Export boards as multi-page PDFs, optionally with the live desktop behind transparent pages.

Select, move, paste

A real selection tool: move, duplicate, restack, edit properties — and paste PNG/JPEG images straight from the clipboard onto the canvas.

Tablet, pen & touch

Native tablet support (zwp_tablet_v2) with pressure, enabled out of the box — alongside mouse and touchscreen.

Multi-monitor

Move the overlay between outputs with a shortcut; toolbars follow the active display, and sessions can be scoped per output.

Make it yours

~130 rebindable actions, dark/light chrome, reduced motion, quick colors, presets 15, and one well-documented, hand-edited TOML config — or use the GUI configurator.

Fast by default

Vsync off with a 120 FPS cap for low-latency ink; raise it to 144/240+ if your display keeps up. The numbers ↓

Demos

See it in action

Short clips, with larger videos loaded only when you press play.

Wayscriber displaying live modifier, click and typing chips in the Input HUD

Show keystrokes and clicks while you present. Toggle the Input HUD with Ctrl+Shift+K; choose overlay-only or opt-in system-wide capture.

Screenshots

A closer look

Click any image to enlarge.

Performance

Ink that keeps up with your hand

Native Wayland, native code. A Rust binary drawing straight to layer-shell surfaces — no Electron, no webview, no compositor tricks.

Low latency by default. Vsync is off with a 120 FPS cap; in local input-to-commit measurements that held p95/p99 around 8–9 ms during continuous drawing.

Always warm. Runs as a daemon, so toggling the overlay is instant — no cold start, no splash screen.

Tunable. Prefer tear-free rendering or quieter fans? Flip vsync back on. Chasing a 240 Hz display? Raise the cap.

Honest numbers: latency is input-sample receipt to Wayland surface commit, not end-to-end display latency. Measure yourself with WAYSCRIBER_PERF_LOG=1.

# config.toml
[performance]
buffer_count = 3          # balanced buffering
enable_vsync = false      # lower drawing latency
max_fps_no_vsync = 240    # for a fast display + GPU
ui_animation_fps = 60     # smoother UI effects

buffer_count = 3 is the balanced default; more buffers use more memory and do not raise the FPS cap. This 240/60 example targets high-refresh systems—the defaults are 120 FPS for drawing and 30 FPS for UI effects.

Compatibility

Works with your compositor

✓ Full support
HyprlandSwayRiver WayfireNiriCOSMIC KDE Plasma / KWin

Any compositor speaking wlr-layer-shell gets the complete experience, light passthrough included.

◐ Partial
GNOME

Runs via an xdg-fullscreen fallback: normal overlay works, screen freeze works via the portal — but light passthrough isn't possible on stock GNOME Wayland.

✕ Not supported
X11

wayscriber is Wayland-native by design.

Tested on Ubuntu 25.10, Fedora 43 (KDE & GNOME), Debian 13.2, CachyOS, and Arch with Hyprland/Niri.

Install

Up and running in a minute

Native repos with auto-updates where possible. Full details live in the docs.

sudo install -d /usr/share/keyrings
curl -fsSL https://wayscriber.com/apt/WAYSCRIBER-GPG-KEY.asc | sudo gpg --dearmor -o /usr/share/keyrings/wayscriber.gpg
echo "deb [signed-by=/usr/share/keyrings/wayscriber.gpg] https://wayscriber.com/apt stable main" | sudo tee /etc/apt/sources.list.d/wayscriber.list
sudo apt update
sudo apt install wayscriber

Wayscriber v0.9.23+ supports Ubuntu 24.04+, Linux Mint 22+, Pop!_OS 24.04+, and Debian 13 (trixie)+. The release package embeds its GTK4 layer-shell integration, so no separate libgtk4-layer-shell0 package is needed. Pop!_OS 22.04 requires the GTK-less source build.

More options: one-off .deb, configurator

One-off .deb (no auto-updates)

wget -O wayscriber-amd64.deb https://github.com/devmobasa/wayscriber/releases/latest/download/wayscriber-amd64.deb
sudo apt install ./wayscriber-amd64.deb

Optional GUI configurator

sudo apt install wayscriber-configurator

Then: enable the daemon and bind a key

The deb, rpm and AUR packages bundle a systemd user service, the tray icon, and the capture helpers (grim, slurp, wl-clipboard). The direct Arch installer verifies those helpers and installs the service under /usr/local. On NixOS the helpers and the service are declared in your configuration — see the Nix tab above.

1 · Start the daemon
systemctl --user enable --now wayscriber.service
2 · Bind a global shortcut (Hyprland Lua)
o.bind("SUPER + D", "Toggle Wayscriber", "wayscriber --daemon-toggle")
Traditional Hyprland, GNOME / KDE shortcuts, one-shot mode, build from source

Traditional Hyprland config

bind = SUPER, D, exec, wayscriber --daemon-toggle

GNOME

Settings → Keyboard → Custom Shortcuts → add wayscriber --daemon-toggle. On Ubuntu GNOME, Super+G is a good choice (Super+D is often taken).

KDE Plasma

Settings → Keyboard → Shortcuts → add a Command or Script running wayscriber --daemon-toggle (e.g. Meta+Shift+D).

No-CLI path

Open wayscriber-configurator → Daemon tab → Install/Update Service, Enable + Start, then Apply Shortcut. It writes the GNOME custom shortcut or KDE portal global shortcut for you.

One-shot mode (no daemon)

wayscriber --active                    # overlay now
wayscriber --active --mode whiteboard  # straight to a board
wayscriber --freeze                    # start with screen frozen

Build from source

Rust 1.95 or newer and a C toolchain are required. On Debian 13+ and Ubuntu 25.04+ (including Ubuntu 26.04 LTS), the default build dependencies include pkg-config, libgtk-4-dev, and libgtk4-layer-shell-dev. See the source-build instructions for the complete per-distro commands and the GTK-less build for older distros like Pop!_OS 22.04.

Controls

Muscle memory in a dozen shortcuts

Everything is rebindable — these are the defaults.

Draw (pen)Drag
Straight lineShift+Drag
RectangleCtrl+Drag
ArrowCtrl+Shift+Drag
Text / sticky noteT / N
Select & moveV or Alt+Drag
ColorsRGBYOPWK
Screen eyedropperI
Undo / redoCtrl+Z / Ctrl+Y
Apply / save presets15 / Shift+1Shift+5
Command paletteCtrl+K
Toolbars / top-strip cycleF9 / F2
ZoomCtrl+Alt+Scroll
Help / hideF1 / Esc
More defaults: boards, pages, selection
BoardsWhiteboard Ctrl+W · Blackboard Ctrl+B · back to transparent Ctrl+Shift+T · picker Ctrl+Shift+B · slots Ctrl+Shift+1..9
PagesPrev/next Ctrl+Alt+←/→ · new Ctrl+Alt+N · duplicate Ctrl+Alt+D
SelectionDuplicate Ctrl+D · copy/paste Ctrl+Alt+C/Ctrl+Alt+V · restack ]/[ · properties Ctrl+Alt+P
PresentingClick highlight Ctrl+Shift+H · input HUD Ctrl+Shift+K · freeze Ctrl+Shift+F · light passthrough F6 · hold and flick radial menu Middle-click
ShapesEllipse Tab+drag · eraser D · clear all E · highlight brush Ctrl+Alt+H

F6 only works while the overlay is focused — once passthrough is active, wayscriber may no longer receive it. Bind a compositor/global shortcut to wayscriber --light-toggle to get back out reliably.

The screen eyedropper defaults to I and is also available from both color interfaces and Ctrl+K. Rebind keybindings.colors.pick_screen_color in your config or the configurator if you prefer another key.

Open the top-strip overflow and choose Canvas... for boards, pages, advanced history, zoom, and Step Undo/Redo controls. Search Save preset in the command palette to save slots without memorizing their shortcuts.

Press F1 in-app for the complete cheat sheet, or read the docs.

Configurator

A GUI for every option

  • Native GTK4/libadwaita GUI built with Relm4 that edits authored defaults in config.toml — with validation, defaults and automatic backups.
  • Runtime UI preferences stay separate and can be inspected, recovered or reset from the overlay Settings popover.
  • Chooses dark/light chrome, reduced motion, the contextual-pill or legacy-panel layout, top-strip display, item visibility, and the optional ink-preview cursor.
  • Installs and manages the daemon service, and applies global shortcuts on GNOME and KDE — Hyprland gets a ready-made include for the light-passthrough binds.
  • Manages sessions: rename, duplicate, move or clear saved boards and tool state.
  • Launch it any time with F11 from the overlay, or run wayscriber-configurator. Ships as its own optional package.

Ethos

wayscriber is shared as a gift exchange, not a contract.

Free, MIT-licensed, and actively developed — with no guaranteed timelines or support. Contributions are welcome, especially compositor testing, multi-monitor reports and new drawing tools. Read the full ethos · Contributing guide

Ready to draw on your screen?