Config Reference
This is a compact map of the config file. For the full list of settings, see config.example.toml in the repo.
drawing
Defaults for pen color/thickness, eraser behavior, marker opacity, fill, font options, hit testing,
and undo limits.
Use drawing.drag_tools to customize drag mappings per left, right, or middle mouse button, including
optional colors for each modifier binding.
presets
Quick tool slots for saving full per-tool profile snapshots. Current presets can include
tool_settings and drag bindings; legacy presets with only tool/color/size still work.
arrow
Arrowhead length, angle, and head placement.
performance
Buffer count, vsync, max fps, and UI animation fps.
buffer_count = 3is the balanced default.2uses less render-buffer memory and4uses more; increasing it does not increase the FPS cap.enable_vsync = falseenables low-latency drawing by avoiding the compositor frame-callback/vsync cadence floor.max_fps_no_vsync = 120caps no-vsync rendering. Use144,165,240, or higher only when it matches the display and the machine handles it.max_fps_no_vsync = 0is uncapped and is mostly for profiling; avoid it as a normal default because it can spin CPU/GPU hard.ui_animation_fps = 30is the default for toolbar and UI effects. Raise it to60for smoother effects at the cost of more redraws; it does not change the drawing FPS cap.- Set
enable_vsync = truewhen tear-free presentation matters more than input latency.
With WAYSCRIBER_PERF_LOG=1, the
perf.input_to_paint_latency proxy=input_to_wayland_commit line reports an
input-to-Wayland-commit proxy metric. It is not end-to-end display latency;
compositor scheduling and display scanout can add more latency outside
Wayscriber.
history
Undo/redo playback delays and the optional Step toolbar section.
ui
Theme/motion preferences, status HUD toggles, badges, help overlay filtering, and GNOME output/fullscreen hints.
theme = "auto" | "dark" | "light"selects overlay and toolbar chrome.autocurrently resolves to dark.reduced_motion = "auto" | "on" | "off"controls UI animation.ondisables motion;autocurrently behaves likeoffuntil system-preference integration lands.status_bar_interactive = truelets the board, page, color, tool, and Help chips open their corresponding surfaces. Set it tofalsefor display-only, click-through HUD. Includes multi-monitor controls:ui.multi_monitor_enabled(output focus cycling)ui.active_output_badge(show active output in status bar)ui.preferred_output(pin GNOME fallback output)
ui.status_bar_style
Font size, padding, and colors for the chip HUD. The HUD degrades to fit 80% of the viewport, while frozen/zoom/pan/editing states stack as badge pills above it.
ui.click_highlight
Click highlight colors, radius, outline thickness, duration, pen-color sync, and the optional persistent ring while the highlight tool is active.
ui.input_hud
The on-screen keystroke/click HUD: enabled, the capture mode
(auto | overlay | system), the position anchor (a 3x3 grid from top-left to
bottom-right), show_mouse, show_bare_modifiers, combine_repeats, display_ms,
fade_ms, max_entries, and font_size. Chips use the status-bar style tokens, so they
match the rest of the overlay chrome.
overlay mode shows only what Wayscriber itself receives and needs no permissions.
system mode reads /dev/input through libinput to report everything on your seat —
including input going to the app underneath during light passthrough — and needs a build
with the input-monitor feature plus read access to the input devices, which normally
means input group membership:
sudo usermod -aG input "$USER" # then log out and back in
When that is unavailable, the HUD falls back to overlay mode; auto does so silently,
while an explicit system request explains what stopped it. System mode sees every
keystroke on the seat, including passwords typed into other applications, so it is off by
default and chip labels are never logged or saved.
presenter_mode.enable_input_hud forces the HUD on while presenting.
ui.context_menu
Enable/disable right-click menus.
ui.toolbar
Frontend selection, side-layout placement, layout complexity, full/micro display, section visibility, presets, marker opacity slider, delay sliders, ink preview, minimized state, legacy side-pane state, offsets, and force-inline behavior.
ui.toolbar.backend = "auto" | "gtk" | "builtin": select the toolbar frontend.ui.toolbar.side_layout = "pill" | "panel":pillis the default and removes the standalone side palette.panelrestores the deprecated four-pane palette.ui.toolbar.layout_mode = "simple" | "regular" | "advanced": choose the baseline section complexity independently ofside_layout(fullremains an alias forregular).ui.toolbar.top_display_mode = "full" | "micro": choose the persisted top-strip form.F2also reaches a runtime-only hidden step;F9directly toggles visibility.ui.toolbar.show_presets: show the 3–5-slot presets island. It drops before other islands under width pressure.ui.toolbar.show_zoom_actions: show both the Zoom section in the Canvas… overflow popover and the persistent bottom-right zoom chip. The chip shows the live percentage with zoom-out, zoom-in, Fit, and (while zoomed) Lock controls.ui.toolbar.show_boards_section,show_pages_section,show_actions_advanced,show_step_section, andshow_delay_sliders: control the corresponding sections inside Canvas… under pill mode and the classic Canvas pane under panel mode.ui.toolbar.show_tool_preview: show the active tool glyph beside an ink dot using the current drawing color and width with an automatic contrast outline.ui.toolbar.items.hidden: stable IDs for hidden toolbar buttons, actions, or side sections.ui.toolbar.items.shown: explicit items that remain visible against the selected layout preset.ui.toolbar.items.order.top_tools: saved order for top toolbar tool buttons.ui.toolbar.items.order.top_controls: saved order for top utility controls.ui.toolbar.items.order.side_sections: saved order for side toolbar section blocks.
The screenshot button (top.utility.screenshot) is hidden by default.
top.group.quick-colors hides the contextual pill’s swatches but keeps its current-color
chip. The configurator writes authored visibility and order defaults to config.toml.
The overlay Customize view treats those values as seeds and stores direct item
visibility and order overrides in the generated runtime-ui.toml file. Authored
section-visibility toggles continue to update config.toml. Supported groups can be
moved up/down; the overlay also supports drag reorder. Unknown future IDs and fields
are preserved across supported-version saves.
Simple, Regular, and Advanced provide non-destructive visibility baselines; explicit
shown/hidden choices survive a mode switch. Canvas, Session, and Settings live in
top-strip overflow popovers under the default pill layout. See
Toolbars.
Generated runtime UI preferences
This is application state, not a config.toml section. Wayscriber writes toolbar
pin/minimized state, the active legacy pane and collapsed sections, individual item
visibility/order, and per-board pins to
$XDG_DATA_HOME/wayscriber/runtime-ui.toml (normally
~/.local/share/wayscriber/runtime-ui.toml). Inspect, recover, or reset it from the
overlay Settings popover; do not hand-edit it. See
Config File Overview.
ui.help_overlay_style
Font and color styling for the help overlay.
presenter_mode
Hide UI chrome, force click highlights, tool behavior, and presenter toasts.
boards
Named boards, backgrounds, default board, max count, auto-create, pan settings, badges, and persistence.
boards.pan_enabled: enableSpace+ left-drag panning on solid-color boards.boards.show_pan_badge: show the pan hint in the status bar or as a floating badge.- Panned solid boards expose
Reset Canvas Positionand aZoomsubmenu from the right-click menu.
board
Legacy whiteboard/blackboard settings (kept for compatibility and configurator support).
tablet
Stylus support when built with the tablet feature flag.
capture
Screenshot enablement, save directory, filename templates, and clipboard behavior. Clipboard paste also accepts copied PNG/JPEG image data and local image files from file managers.
session
Persistence settings, autosave, storage location, per-output, compression, and backups.
restore_tool_statesaves the last pen color, thickness, font size, arrow placement, and status bar state.per_outputkeeps separate default sessions per monitor when enabled.storage = "auto" | "config" | "custom"selects the default session directory.max_file_size_mb, compression, and backup settings protect large or corrupt session files.
Named sessions are selected with --session-file <PATH>, not by adding a path under
[session]. The top-strip Session popover can Open, Save As, Info, Clear, reopen recent
sessions, and jump to the configurator. The configurator Session tab can rename/reveal/
forget catalog entries and can duplicate, move, or clear inactive session files when no
overlay or daemon is running.
updates
Update notifications only — Wayscriber never installs anything.
check = truelets the daemon ask wayscriber.com once per interval whether a newer release exists.WAYSCRIBER_DISABLE_UPDATE_CHECK=1overrides this for a run.notify = trueshows one desktop notification per release. With it off, the notice still appears in the About window and the tray menu.interval_hours = 24sets the gap between checks (minimum 1, maximum 720).
See Updating for what is sent, where the result is cached, and how packagers remove the check at build time.
keybindings
Full keyboard shortcut map, including board/page navigation, selection editing, step markers,
arrow label resets, light passthrough (toggle_light_mode), output focus (focus_prev_output /
focus_next_output), the command palette, toolbar visibility (toggle_toolbar, default
F9), the top-strip cycle (cycle_toolbar_display, default F2), and the screen
eyedropper (pick_screen_color).
The screen eyedropper defaults to I and is also available from the toolbar, color picker,
and command palette. Rebind it if you prefer another key:
[keybindings.colors]
pick_screen_color = ["I"]
Selection copy/paste defaults to Ctrl+Alt+C / Ctrl+Alt+V; the context menu defaults to
Shift+F10 and Menu as keyboard alternatives to right-click.
toggle_light_mode defaults to F6, but that is a Wayscriber in-overlay shortcut.
Once light passthrough is active, do not rely on that in-overlay shortcut to get back out; use compositor/global shortcuts that call wayscriber --light-toggle
and the light-draw commands.
Full reference: https://github.com/devmobasa/wayscriber/blob/main/config.example.toml