About this project

qsketch is a professional-grade desktop application for sketching and raster painting, designed to offer a workflow familiar to users of Photoshop and Aseprite. Built from scratch in Rust using the `egui` immediate mode GUI and `wgpu` GPU renderer, it prioritizes speed and responsiveness, ensuring that strokes remain fluid even on large canvases. The core of the application is a tiled, copy-on-write raster engine. Layers are stored as 64x64 tiles behind Arcs, making undo snapshots cheap and memory-efficient by only duplicating tiles touched by a stroke. The brush engine supports separate flow and opacity controls, pressure-to-size and pressure-to-opacity curves, and thirteen built-in presets. Users can import brush tips from PNGs, GIMP (.gbr, .gih), and Photoshop (.abr) files, or add custom textures. Key features include: - **Photoshop Compatibility**: Full support for opening and saving `.psd` files (8/16-bit RGB or grayscale), preserving layer names, visibility, opacity, blend modes, and clipping. - **Advanced Editing**: 20 blend modes, per-layer opacity, clipping masks, alpha lock, nested layer groups, and merge operations. - **Selection Tools**: Rectangle, ellipse, lasso, and magic-wand selections with add/subtract/intersect modifiers and anti-aliased edges. - **Filter Suite**: 43 filters across standard Photoshop groups plus experimental effects like Glitch and Chromatic Aberration, all with live preview and selection awareness. - **Symmetry & Stabilizers**: Mirror painting (horizontal, vertical, radial) and stroke stabilizers (lazy brush, moving average) to aid precision. - **Stylus Support**: Native pressure support via Windows Ink or the optional `octotablet` backend for tilt and eraser detection. - **Customizable UI**: Dockable panels for Tools, Layers, History, Color, and more, with a fully remappable keyboard shortcut system. The application uses a native `.qsk` file format, which is a plain ZIP archive containing PNGs and a JSON manifest, ensuring data recoverability. It supports autosave for crash recovery and can be installed via platform-specific packages for Windows and Linux.