Skip to content

paint.js is a proof-of-concept, cross-platform raster graphics editor written in JavaScript. It’s a port of Paint.NET v3.36.7, bringing the best Windows painting tool to macOS, Linux, and the web via Electron and the browser.

License

Notifications You must be signed in to change notification settings

LabyStudio/paintdotjs

Repository files navigation

paint.js

paint.js is a proof-of-concept, cross-platform raster graphics editor written in JavaScript, ported from Paint.NET (v3.36.7) by Rick Brewster, the last version released under the original MIT-compatible license.

Why?

Paint.NET is arguably the best and simplest painting tool available on Windows. Since switching to Linux, it has been the program I miss the most and used every day. The goal of this port is to bring that same experience to macOS, Linux, and the web.

License

⚠️ Note: This project is developed on Chromium and may currently only work correctly in Chromium-based browsers.

App version

Web version


Features

The current proof-of-concept includes:

  • Full document UI & layout
  • Zooming & panning
  • Complete edit history with undo/redo
  • Document layering system
  • Color picker
  • Tools window with multiple document support
  • Selection tools: lasso, rectangle select
  • Transform tools: move, rotate, resize (rectangle selections)

⚠️ Note: Selections transformation is currently unstable, and performance for large selections is a work in progress.


Getting Started

Follow these steps to get paint.js running locally.

1. Download and Extract Assets

paint.js uses the latest assets from Paint.NET 5.1.9.
Due to licensing, these assets cannot be included in this repository, so you need to download them yourself:

python3 scripts/download_assets.py

This script will automatically fetch the required assets so the app can run properly.

2. Install Dependencies

npm install

3. Run the Application

Electron Desktop App

npm run app

The Electron version runs as a standalone program, similar to the original Paint.NET application.

Web Version

npm run web-watch

Then open index.html in your browser. The web version runs as a website, allowing you to use paint.js on any device with a compatible browser.


Development & Contributing

paint.js is still a proof-of-concept and is reaching a complex stage where performance optimizations are needed. The current challenge includes:

  • Selection transformations: moving and resizing work; rotation is partially broken
  • Performance improvements for large selections
  • Implementation of additional tools

If you are interested in contributing, your help is highly welcome!


License

This project is licensed under the MIT License. See the LICENSE file for details.

About

paint.js is a proof-of-concept, cross-platform raster graphics editor written in JavaScript. It’s a port of Paint.NET v3.36.7, bringing the best Windows painting tool to macOS, Linux, and the web via Electron and the browser.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published