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.
no Electron, no webview
while drawing at 120 FPS
(144/240+ configurable)
one TOML file
Local measurements, honestly labelled — details in performance.
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.serviceDraw over anything
Hit your key and the overlay appears — pen, shapes, text, boards, zoom. F1 opens searchable, clickable Help; Esc hides it again.
A full annotation studio, one keybind away
Everything below ships in the box — no plugins, no accounts, no Electron.

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.

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.

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 1–5, 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 ↓
See it in action
Short clips, with larger videos loaded only when you press play.
Show keystrokes and clicks while you present. Toggle the Input HUD with Ctrl+Shift+K; choose overlay-only or opt-in system-wide capture.
Flip through pages on a board, and swap tool + color + size in one keystroke with presets 1–5.
The right-click context menu, the selection tool, and switching between boards.
Paste an image from the clipboard, then click through the overlay in light passthrough mode while the notes stay visible.
Pan around solid boards with Space+drag — the canvas is bigger than the screen.
Multiline text: place it, edit it, move it, restyle it.
Sticky notes with editable text — press N, click, type.
ZoomIt-style magnification: Ctrl+Alt+scroll to zoom, lock it, pan around.
The complete walkthrough — tools, boards, zoom and capture in one take.
A closer look
Click any image to enlarge.
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 effectsbuffer_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.
Works with your compositor
Any compositor speaking wlr-layer-shell gets the complete experience, light passthrough included.
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.
wayscriber is Wayland-native by design.
Tested on Ubuntu 25.10, Fedora 43 (KDE & GNOME), Debian 13.2, CachyOS, and Arch with Hyprland/Niri.
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 wayscriberWayscriber 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.debOptional GUI configurator
sudo apt install wayscriber-configuratorcat <<'EOF' | sudo tee /etc/yum.repos.d/wayscriber.repo
[wayscriber]
name=Wayscriber Repo
baseurl=https://wayscriber.com/rpm
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://wayscriber.com/rpm/RPM-GPG-KEY-wayscriber.asc
EOF
sudo dnf clean all
sudo dnf install wayscriberFedora, RHEL, Rocky, Alma, Nobara and friends.
More options: one-off .rpm, configurator
One-off .rpm (no auto-updates)
wget -O wayscriber-x86_64.rpm https://github.com/devmobasa/wayscriber/releases/latest/download/wayscriber-x86_64.rpm
sudo dnf install ./wayscriber-x86_64.rpmOptional GUI configurator
sudo dnf install wayscriber-configuratoryay -S wayscriber-bin # prebuilt; or: paru -S wayscriber-binAUR packages: wayscriber-bin (prebuilt), wayscriber (builds from source), wayscriber-configurator.
More options: direct installer, source build, configurator
Direct release installer (no AUR)
curl -fsSL https://wayscriber.com/arch-install.sh -o arch-install.sh
sh arch-install.sh --dry-run
sh arch-install.shInstalls the latest stable x86_64 release under /usr/local after checksum, manifest, dependency, and package-conflict checks. It does not start or restart the service. Before switching to the AUR, use the script's safe uninstall path so the direct copy does not keep taking priority; see the updating guide.
Build from source via AUR
yay -S wayscriber # or: paru -S wayscriberOptional GUI configurator
yay -S wayscriber-configurator # or: paru -S wayscriber-configuratorenvironment.systemPackages = with pkgs; [ wayscriber grim slurp wl-clipboard ];nix run nixpkgs#wayscriber -- --active # or just try it, no installThen sudo nixos-rebuild switch. nixpkgs-unstable follows releases; stable channels keep the version they were cut with. The nixpkgs build installs the binary only — for the systemd user service and the configurator, use the project flake below.
More options: latest release, configurator, daemon service, non-NixOS Nix
Latest release, configurator and daemon service (project flake)
1 · Add the input to your flake.nix:
inputs.wayscriber.url = "github:devmobasa/wayscriber?ref=RELEASE_TAG";2 · Make it available in outputs:
outputs = { nixpkgs, wayscriber, ... }: {
# Your existing outputs...
};3 · Add this module to the modules list of your nixosSystem:
({ pkgs, ... }:
let
wayscriberPackages =
wayscriber.packages.${pkgs.stdenv.hostPlatform.system};
in
{
environment.systemPackages = [
wayscriberPackages.wayscriber
wayscriberPackages.wayscriber-configurator
];
# Required before `systemctl --user enable --now wayscriber.service` works.
systemd.packages = [ wayscriberPackages.wayscriber ];
}
)Replace RELEASE_TAG with a published tag from the latest release. To move to a newer release, change the tag and run nix flake update wayscriber.
Home Manager
home.packages = [ pkgs.wayscriber ];Nix on another distro (profile install)
nix profile install nixpkgs#wayscriber # upgrade with: nix profile upgrade wayscriberThen: 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.
systemctl --user enable --now wayscriber.serviceo.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-toggleGNOME
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 frozenBuild 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.
Muscle memory in a dozen shortcuts
Everything is rebindable — these are the defaults.
More defaults: boards, pages, selection
| Boards | Whiteboard Ctrl+W · Blackboard Ctrl+B · back to transparent Ctrl+Shift+T · picker Ctrl+Shift+B · slots Ctrl+Shift+1..9 |
|---|---|
| Pages | Prev/next Ctrl+Alt+←/→ · new Ctrl+Alt+N · duplicate Ctrl+Alt+D |
| Selection | Duplicate Ctrl+D · copy/paste Ctrl+Alt+C/Ctrl+Alt+V · restack ]/[ · properties Ctrl+Alt+P |
| Presenting | Click highlight Ctrl+Shift+H · input HUD Ctrl+Shift+K · freeze Ctrl+Shift+F · light passthrough F6 · hold and flick radial menu Middle-click |
| Shapes | Ellipse 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.
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