Extensions (aka plugins, addons, packages) #1403

dacap opened this Issue Feb 3, 2017 · 5 comments


None yet
3 participants

dacap commented Feb 3, 2017

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 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 dacap added the maintenance label Apr 18, 2017

@dacap dacap referenced this issue Jun 5, 2017


Modern theme #1497

2 of 4 tasks complete

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

@dacap dacap self-assigned this Jun 9, 2017

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

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 added a commit that referenced this issue Jun 10, 2017

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

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 added a commit that referenced this issue Jun 15, 2017

@dacap dacap modified the milestones: v1.2, v1.3 Sep 12, 2017

codecat commented Oct 20, 2017

I use Aseprite mostly for measuring things (eg. getting coordinates/sizes from a spritesheet), and have some ideas in mind for extensions for my specific use. Is some kind of scriptable API available yet, or is one planned?


dacap commented Oct 24, 2017

@codecat there is no API to get information from the sprite yet, but something in the future will be available (you can follow this project: https://github.com/aseprite/api )

codecat commented Oct 24, 2017

Good to hear, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment