Complete Setup Guide
August 19, 2026 · View on GitHub
Installation
Package and direct release installs
If you installed wayscriber via a package (deb/rpm/aur) or the direct Arch release installer, enable the user service:
systemctl --user enable --now wayscriber.service
The service keeps the daemon running in the background; you only need a keybind to toggle the overlay.
Configurator setup (no CLI)
If you installed wayscriber-configurator, you can set this up entirely in GUI:
- Open
wayscriber-configurator. - Go to the
Daemontab. - Click
Install/Update Service. - Click
Enable + Start. - Set your shortcut and click
Apply Shortcut.
Desktop-specific shortcut handling:
- GNOME: creates/updates a GNOME custom shortcut that runs
wayscriber --daemon-toggle. - GNOME migrations:
Install/Update ServiceandApply Shortcutremove stale~/.config/systemd/user/wayscriber.service.d/shortcut.conffiles so old portal settings do not override GNOME behavior. - KDE/Plasma: writes a systemd user drop-in with
WAYSCRIBER_ENABLE_PORTAL_SHORTCUTS=1andWAYSCRIBER_PORTAL_SHORTCUTfor portal global shortcut handling. - Hyprland: light passthrough controls use native Hyprland bindings, not the portal shortcut path.
Quick Install
Run the install script:
./tools/install.sh
This will:
- Build the release binary
- Copy it to
/usr/bin/wayscriber(or$WAYSCRIBER_INSTALL_DIR) - Refuse a second copy under
/usr/local/binor~/.local/binunless you pass--replace-otheror confirm - Optionally set up the systemd user service or a Hyprland keybind
If /usr/local/bin/wayscriber already exists from the direct Arch installer, keep only one
prefix. Overlay spawn follows the running daemon file, not whichever path you passed to
--version or --about.
Manual Install
If you prefer manual installation:
# Build
cargo build --release
# Copy to user bin
mkdir -p ~/.local/bin
cp target/release/wayscriber ~/.local/bin/
chmod +x ~/.local/bin/wayscriber
# Make sure ~/.local/bin is in your PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Hyprland Keybind Setup
Method 1: Systemd user service + toggle (preferred when available)
systemctl --user enable --now wayscriber.service
For Hyprland Lua, add the toggle to ~/.config/hypr/bindings.lua:
o.bind("SUPER + D", "Toggle Wayscriber", "wayscriber --daemon-toggle")
For a traditional Hyprland config, add it to ~/.config/hypr/hyprland.conf:
# wayscriber - Screen annotation daemon (Super+D to toggle)
bind = SUPER, D, exec, wayscriber --daemon-toggle
Use only one toggle binding. Duplicate SUPER+D entries can fire twice and immediately undo the toggle.
If your shortcut environment does not resolve wayscriber from PATH, use the absolute path from command -v wayscriber.
Method 2: Daemon autostart via compositor (no systemd)
For Hyprland Lua, add these to the matching files:
-- ~/.config/hypr/autostart.lua
o.launch_on_start("wayscriber --daemon")
-- ~/.config/hypr/bindings.lua
o.bind("SUPER + D", "Toggle Wayscriber", "wayscriber --daemon-toggle")
For a traditional Hyprland config, add this to ~/.config/hypr/hyprland.conf:
# wayscriber - Screen annotation daemon (Super+D to toggle)
exec-once = wayscriber --daemon
bind = SUPER, D, exec, wayscriber --daemon-toggle
Then reload:
hyprctl reload
Now press Super+D to toggle the overlay on/off!
Light passthrough controls on Hyprland
Light passthrough needs compositor/global shortcuts because Wayscriber deliberately passes keyboard and pointer input to the app below while passthrough is active. The default F6 binding is a Wayscriber in-overlay shortcut, not an OS-level shortcut; do not rely on it to exit after passthrough starts. Use the bindings below for reliable control.
For Hyprland Lua, add the manual bindings to ~/.config/hypr/bindings.lua:
local wayscriber = "wayscriber"
o.bind("F6", "Toggle Wayscriber light passthrough", wayscriber .. " --light-toggle")
o.bind("XF86Tools", "Toggle Wayscriber light passthrough", wayscriber .. " --light-toggle")
o.bind("SUPER + ALT + D", "Toggle Wayscriber light drawing", wayscriber .. " --light-draw-toggle")
The configurator can install a native include file for traditional Hyprland configs. Its manual equivalent is:
# wayscriber - light passthrough controls
$wayscriber = wayscriber
unbind = SUPER ALT, L
bind = SUPER ALT, L, exec, $wayscriber --light-toggle
unbind = SUPER ALT, D
bind = SUPER ALT, D, exec, $wayscriber --light-draw-toggle
unbind = SUPER ALT, F
bind = SUPER ALT, F, exec, $wayscriber --light-draw-on
bindr = SUPER ALT, F, exec, $wayscriber --light-draw-off
# Optional: lower side mouse button (commonly mouse:275; verify on your mouse)
bind = , mouse:275, exec, $wayscriber --light-toggle
Use --light-draw-on on key/button press and --light-draw-off on release for draw-while-held.
In the traditional config example, the unbind lines prevent duplicate manual bindings for these same keys from firing twice.
If your shortcut environment does not resolve wayscriber, replace it with the absolute path from command -v wayscriber.
Light passthrough on KDE Plasma / Fedora KDE
Enable the daemon first:
systemctl --user enable --now wayscriber.service
The configurator can set up the main overlay toggle through the desktop portal. Light passthrough controls are manual for now: add global shortcuts in KDE System Settings that run these commands:
wayscriber --light-toggle
wayscriber --light-draw-toggle
wayscriber --light-draw-on
wayscriber --light-draw-off
Use --light-toggle for passthrough on/off and --light-draw-toggle for sticky drawing. Draw-while-held needs a shortcut system that can run one command on press and another on release; if your KDE shortcut UI only supports activation commands, use the sticky draw toggle instead.
Light passthrough requires compositor overlay support through layer-shell. If Wayscriber reports that passthrough is unavailable, your session is using a fallback path where regular app windows cannot provide a reliable click-through overlay.
GNOME: Fedora Workstation and Ubuntu GNOME
GNOME setup works for the normal overlay toggle:
systemctl --user enable --now wayscriber.service
Then use the configurator's Daemon tab, or create a GNOME custom shortcut that runs:
wayscriber --daemon-toggle
Freeze prefers compositor-native wlr-screencopy or ext-image-copy-capture when either protocol is available, then falls back to the screenshot portal. On GNOME, Freeze works when that portal is available and responsive; the first use may show a desktop permission prompt. Portal capture can be slower than direct compositor capture. On mixed-DPI or multi-monitor layouts, Wayscriber accepts a portal image only when it can validate the active output's crop; otherwise Freeze fails instead of guessing at an origin or scale. Freeze and Zoom also require the active output to advertise a current mode. Connecting or disconnecting a monitor cancels any in-flight Freeze or Zoom capture, including on screens that did not change.
Light passthrough mode is not available in the regular app on stock GNOME Wayland. GNOME's xdg-shell fallback does not expose the shell-level overlay behavior needed to keep annotations visible while input goes to apps underneath, so --light-toggle is intentionally disabled instead of pretending to pass input through. A GNOME Shell extension companion would be the real path for that workflow.
Method 3: One-Shot Mode (Alternative)
For quick one-time annotations without daemon:
# Run directly (not recommended - daemon mode is better)
wayscriber --active
This starts a fresh overlay each time. Exit with Escape.
Note: We recommend using daemon mode with Super+D instead as it preserves your drawings.
Usage Flow
Daemon Mode Workflow (Recommended)
- Daemon starts automatically → Runs in background with system tray icon (systemd user service or compositor autostart)
- Press Super+D → Drawing overlay appears
- Draw your annotations → All tools available
- Press Escape or Ctrl+Q → Overlay hides (daemon keeps running)
- Press Super+D again → Overlay reappears with previous drawings intact
No system tray/StatusNotifier watcher? Start the daemon with wayscriber --daemon --no-tray (or set WAYSCRIBER_NO_TRAY=1) to skip the tray icon; the Super+D toggle still works.
One-Shot Mode Workflow (Alternative)
- Run command → Fresh drawing overlay appears
- Draw your annotations → All tools available
- Press Escape → Drawing overlay closes completely
- Run command again → New fresh overlay (previous drawings lost)
Note: Daemon mode with Super+D is recommended as it preserves your drawings when you toggle the overlay.
Verification
Test the setup:
# Test binary is accessible
which wayscriber
# Test daemon mode
systemctl --user status wayscriber.service || wayscriber --daemon &
# Test keybind
Press <kbd>Super+D</kbd> (should show overlay)
Press <kbd>Escape</kbd> (should hide overlay)
Autostart
- If you enabled
wayscriber.service, systemd handles autostart. - If you used compositor autostart, the
exec-onceline starts wayscriber on login.
Troubleshooting
Keybind not working?
- Check
hyprctl reloadwas run - Check for conflicts:
hyprctl binds | grep "SUPER, D" - Make sure you only defined the toggle once
- Try a different key combo
- If
wayscriberis not found from the compositor, use the absolute path fromcommand -v wayscriber
Binary not found?
- Check
type -a wayscriberand the path you installed to (/usr/bin,/usr/local/bin, or~/.local/bin) - If you used
./tools/install.sh, the default dest is/usr/bin/wayscriber(or$WAYSCRIBER_INSTALL_DIR) - If you copied the binary by hand, add
~/.local/binto PATH (see Manual Install) and restart the terminal
Settings or --about do not match the binary you just built?
- Two copies can exist: the direct installer uses
/usr/local, sourcetools/install.shuses/usr/bin, and a manual copy may live in~/.local/bin. - Check
type -a wayscriber,systemctl --user show wayscriber.service -p ExecStart,MainPID,FragmentPath, andreadlink -f /proc/$(systemctl --user show -p MainPID --value wayscriber.service)/exe. --versionis the crate version and can be identical on both copies.--aboutopens a window; use it on the path you intend to run, not as a substitute for the running daemon path.- Keep one prefix.
./tools/install.sh --replace-otherremoves the other known copies when installing to/usr/bin.
Want different key?
- Edit
bindings.luaorhyprland.conf, depending on your Hyprland config format - Examples:
SUPER, D→ Super+DALT, D→ Alt+DCTRL SHIFT, 2→ Ctrl+Shift+2
Uninstall
If you used ./tools/install.sh (default /usr/bin):
sudo rm -f /usr/bin/wayscriber
systemctl --user disable --now wayscriber.service
# Remove the keybind from bindings.lua or hyprland.conf
If you copied the binary by hand to ~/.local/bin:
rm ~/.local/bin/wayscriber
# Remove the keybind from bindings.lua or hyprland.conf
Recommended Setup
Best setup (daemon mode):
- Install:
./tools/install.sh - Add the daemon autostart and toggle binding using Method 2 above.
- Reload:
hyprctl reload - Use: Press Super+D to toggle overlay
Done! Drawings persist, tray icon available. ✨