A high-performance infinite canvas sketching & whiteboard app built for mouse and drawing tablets.
Scribl — Features & Capabilities
⚡ Ultra-Low Latency Dual Canvas (240Hz Ready)
- Active Scratch Layer: Initialized with
{ desynchronized: true, alpha: true }to reduce rendering latency and enable immediate front-buffer drawing. - Committed Layer: Uses frustum-culled batch vector rendering of cached
Path2Dstrokes to maintain 60–120+ FPS across thousands of elements.
🖊️ Tablet & Stylus Native
- Organic Stroke Smoothing: Natural stroke outlines and tapered endpoints powered by
perfect-freehand. - Event Coalescing: Uses
getCoalescedEvents()to prevent angular stepping during fast scribbling. - Hardware Stylus Eraser: Recognizes stylus eraser flips using
e.buttons === 32. - Strict Palm Rejection: Touch inputs are reserved for pan and zoom, preventing accidental pen marks.
🌌 Infinite 2D Canvas
- Smooth Pan & Zoom: Navigate the canvas from 10% to 800% with world-coordinate transformations anchored precisely to the cursor.
- Dynamic Dot Grid: Automatically scales the background dot grid according to the current zoom level.
- Spacebar-to-Pan: Hold
Spaceand drag to glide across the canvas with custom grab cursor feedback.
🧽 Minimalist Eraser Trail
- Smooth Eraser Trail: Displays a clean slate-gray trailing streak that tapers and dissolves over approximately 180ms.
- Circular Reticle: Provides a circular cursor that matches the eraser's hit-detection footprint.
🎨 Glassmorphic Floating HUD
- Floating Island Toolbar: A bottom-docked interface featuring
Select,Pen,Eraser, andZoomtools. - Dedicated Zoom Tool:
- Scrubby Zoom: Adjust zoom through horizontal dragging.
- Selection Zoom: Draw a selection box to frame a specific canvas area.
- Contextual Color Palette: Eight curated color swatches.
- Stroke Thickness: Four discrete stroke-width options.
- Zoom HUD: Quick zoom presets with keyboard shortcuts:
100%—Shift + 0- Zoom In —
+ - Zoom Out —
-
- Non-Blocking Clear Action: Two-step canvas clearing confirmation.
🔄 Command-Based History
- Multi-Level Undo: Supports
Cmd + Z. - Redo: Supports
Cmd + Shift + ZandCmd + Y. - Command Tracking: Maintains history for stroke additions, deletions, and translations.
💾 Persistence & High-Resolution Export
- Debounced Autosave: Automatically saves canvas state to local storage.
- Native Document Support: Open and save
.scriblJSON documents. - High-Resolution PNG Export: Exports canvas content at 2× resolution, tightly bounded to the actual drawing content.
⚙️ Neovim-Style Lua Configuration
- Native Lua 5.4: Fully customizable through
~/.config/scribl/init.lua, powered bymlua. - Custom Keybindings: Configure keyboard shortcuts using Vim-style notation, including
<C-z>,<D-z>,<S-0>, andc. - Customizable Floating Dock: Reorder, customize, and reposition the toolbar to:
bottomtopleftright
- Live Configuration Reload: Native filesystem watching through
notifyautomatically reloads configuration changes when the Lua file is saved, without reloading the canvas.
Scribl is MIT open-source, and looking for contributors! You can contribute by helping to build shapes, canvas text, a highlighter and much more.
👉 GitHub: https://github.com/shadowmkj/scribl