A free and open-source desktop painting application for Windows.
Responsive drawing, customizable brushes, layer-based editing, and a focused creative workflow.
Website · Download · Build · Contribute · Discord
Ruwa combines a responsive canvas, a customizable brush engine, layer-based editing, and a clear interface designed to keep the creative process moving. The complete application is available without subscriptions, paid tiers, or locked features.
Important
Ruwa is alpha software under active development. Features, file formats, and interfaces may change before the first stable release.
- Customizable brushes. Organize presets with favorites and pack filters, tune starred controls in the dockable Brush Settings panel, or open the full Brush Editor for shape, procedural textures, spacing, flow, and dynamics.
- Spectral pigment mixing. Wet brushes use Ruwa's custom pigment model for richer, more convincing colour mixing.
- Non-destructive editing. Layer effects, adjustment layers, and masks stay editable, while Smart, Board, and text layers retain their source content through transforms.
- An open-ended workspace. Infinite canvas, Board Layers, reusable layouts, dockable panels, and configurable shortcuts keep tools and references close.
- Tablet-oriented input. Ruwa supports stylus workflows and includes a custom Windows WinTab backend.
- Native effect plugins. A stable C ABI lets bundled and third-party effects use the same public SDK and loading path.
| Item | Detail |
|---|---|
| Current release | 0.2.7-alpha |
| Primary platform | Windows 10/11 x64 |
| Graphics requirement | OpenGL 4.5 |
| Technology | C++23, Qt 6, CMake |
| Source licence | MPL-2.0 |
Official Windows packages are published through GitHub Releases and the Ruwa website.
Ruwa uses Qt 6 and CMake. The supported development workflow is to open the
top-level CMakeLists.txt in Qt Creator and configure it with a compatible Qt 6
toolchain.
See BUILDING.md for the required Qt modules, the pinned release environment, command-line configuration, CMake options, tests, static analysis, translations, and packaging-related build settings.
Ruwa's layer-effect system is built around a stable C ABI. Plugins compile
against the public headers under sdk/include without linking to Ruwa's
internal C++ implementation. The standard effects under plugins/standard use
the same interface as third-party plugins.
| Document | Contents |
|---|---|
| BUILDING.md | Toolchain, Qt Creator workflow, tests, and static analysis |
| CONTRIBUTING.md | Contribution workflow, coding conventions, and DCO sign-off |
| CHANGELOG.md | Version history and release notes |
| sdk/README.md | Native effect-plugin development |
| docs/SECURE_UPDATES.md | Signed update architecture and release signing |
| RELEASE.md | Packaging procedure and release checklist |
| SECURITY.md | Private vulnerability reporting |
| GOVERNANCE.md | Project roles and decision-making |
Contributions are welcome. You can help by testing Ruwa, reporting reproducible bugs, improving documentation or translations, developing effect plugins, or contributing code.
For anything larger than a small fix, please open an issue before starting work so the approach can be discussed first. All commits must include a Developer Certificate of Origin sign-off; the complete process is documented in CONTRIBUTING.md.
Project spaces follow the Code of Conduct. Security vulnerabilities should be reported privately as described in SECURITY.md, not through public issues or Discord.
Ruwa source code is licensed under the Mozilla Public License 2.0.
Bundled fonts, icons, artwork, and third-party components retain their respective terms. See NOTICE, THIRD_PARTY_NOTICES.md, ASSET_POLICY.md, TRADEMARKS.md, and the LICENSES directory for details.
