Extensions (aka plugins, addons, packages) #1403

dacap opened this Issue Feb 3, 2017 · 2 comments



In progress in Next release

2 participants

dacap commented Feb 3, 2017 edited

We should be able to create "extensions." An extension should be a zip-like file with some metadata giving details about what it includes, author, URLs, etc. Extensions should be easy to be added/removed. Possible things that an extension could include:

  • Themes (we need a better theme specs too)
  • Preset palettes
  • Extra dithering matrices (#418, #584)
  • Common brushes (#175)
  • Add theme variations/customization (e.g. color schemes for an existent theme) (#712)
  • Keyboard shortcuts
  • A new language (#124)
  • Import/export plugin (with a special SDK) (#54)
  • Provide a way to start the application without loading user extensions (just in case the program cannot start with the latest installed extensions)

We are using libarchive to uncompress .zip extensions and json11 to parse package.json file.

dacap added the enhancement label Feb 3, 2017

hawkins commented Mar 1, 2017

Extensions are one of my favorite features for Paint.net. In particular, I've used extensions to add entire new tools such as radial text tools that are accessible via an effects menu bar.

However, would allowing extensions to modify stock tools be a possibility?

One example use case for this is an extension that modifies how selecting a region of pixels and resizing it is handled. This extension may do something like prevent the outermost/surrounding pixels in the region from duplicating when stretched wide, while interior pixels resize and stretch like normally.


dacap commented Mar 1, 2017

@hawkins Initially extensions should be basic stuff (themes, fonts, shortcuts, languages, import/export plugins). More complex stuff could be added in the future after some iterations but I don't promise it. Generally extensions = more maintenance = code complexity = more bugs (and third party bugs). So we have to go step by step.

dacap added the maintenance label Apr 18, 2017

dacap referenced this issue Jun 5, 2017


Modern theme #1497

2 of 4 tasks complete

dacap added this to the v1.2 milestone Jun 9, 2017

dacap self-assigned this Jun 9, 2017

@dacap dacap added a commit that referenced this issue Jun 10, 2017

@dacap dacap First draft-implementation of extensions (#1403)
At the moment only themes are supported and some functionality is not
available yet (disabling an extension, uninstalling it, etc.)

@dacap dacap added a commit that referenced this issue Jun 10, 2017

@dacap dacap Move palettes to extensions (#1403) b7b69ce

@dacap dacap added a commit that referenced this issue Jun 12, 2017

@dacap dacap Implement Add/Uninstall extension (#1403)
- Added libarchive to uncompress .zip extensions
- Moved ListItem painting code to styles because we needed a selected+disabled state.

@dacap dacap added a commit that referenced this issue Jun 15, 2017

@dacap dacap Merge branch 'extensions' (#1403) dafaf8d

dacap added to In progress in Next release Jun 16, 2017

dacap referenced this issue Jun 16, 2017


Pixel-art friendly features & tweaks #1387

3 of 11 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment