Open a blank canvas the moment it launches. Draw freehand, lay down lines and boxes and ellipses, flood-fill a region, pick a color off the canvas, undo. Save it as a PNG. The bar is the paint program you already know — not a layered compositor.
Pencil, brush, eraser, straight lines, rectangles, ellipses, flood fill, and an eyedropper. Pick one from the rail and draw — shapes preview live as you drag and commit to pixels the moment you release.
One bitmap, like the paint program you already know. What you see on the canvas is the document — no layer stack, no masks, no blend modes, no channels, nothing extra to learn.
Open a PNG — or any raster the system webview decodes, JPEG, WebP, GIF, BMP — and paint on top. Save writes a true-white PNG straight from the canvas. Rust never touches an image codec; it just moves bytes.
A color well for arbitrary RGB with a strip of recent swatches, and one brush-size slider that drives the brush, eraser, lines and shape strokes alike. The bracket keys nudge the size.
Every committed stroke snapshots the canvas. Ctrl+Z walks back up to thirty levels; Ctrl+Shift+Z walks forward again. An in-flight drag stays undo-free until you let go.
A thin Rust byte courier behind a system-webview canvas. AppImage and .deb, PNG file associations, XDG dirs. No Electron, no telemetry, no accounts, no settings panel.
One-liner — downloads the AppImage to ~/.local/bin, marks it executable, and registers a launcher entry. Re-run to upgrade.
curl -fsSL https://krill-software.github.io/install.sh | bash -s paint
Clone, install dependencies, and build with Tauri. Needs Node (with pnpm) and a Rust toolchain.
# clone git clone https://github.com/krill-software/paint.git cd paint # build pnpm install pnpm tauri build