Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extensions (aka plugins, addons, packages) #1403

Open
5 of 9 tasks
dacap opened this issue Feb 3, 2017 · 6 comments
Open
5 of 9 tasks

Extensions (aka plugins, addons, packages) #1403

dacap opened this issue Feb 3, 2017 · 6 comments
Assignees
Labels
feature maintenance medium priority plugins scripting
Milestone

Comments

@dacap
Copy link
Member

@dacap 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)
  • A new language (#124)
  • Keyboard shortcuts
  • Common brushes (#175)
  • Add theme variations/customization (e.g. color schemes for an existent theme) (#712)
  • 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). (Chrome has a nice --user-data-dir argument.)

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

@dacap dacap added the feature label Feb 3, 2017
@hawkins
Copy link

@hawkins 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
Copy link
Member Author

@dacap 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 mentioned this issue Jun 5, 2017
4 tasks
@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
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
- 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 removed this from the v1.2 milestone Sep 12, 2017
@dacap dacap added this to the v1.3 milestone Sep 12, 2017
@dacap dacap added this to the v1.3 milestone Sep 12, 2017
@dacap dacap removed this from the v1.2 milestone Sep 12, 2017
@codecat
Copy link

@codecat 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
Copy link
Member Author

@dacap 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
Copy link

@codecat codecat commented Oct 24, 2017

Good to hear, thank you!

@chekoopa
Copy link

@chekoopa chekoopa commented Jul 27, 2018

It would be nice to have a way to keep up easier development and debugging of extensions. Maybe, by keeping them unzipped in some accessible directory or (which is more convenient) having a CLI keys to manage them separately (and put some lines into Makefile, why not?).

@dacap dacap added the scripting label Sep 3, 2018
@dacap dacap mentioned this issue Dec 11, 2018
5 tasks
dacap added a commit that referenced this issue Apr 3, 2020
zaghaghi pushed a commit to zaghaghi/aseprite that referenced this issue Apr 30, 2020
@dacap dacap added the plugins label May 5, 2020
dacap added a commit that referenced this issue Oct 7, 2021
Added a new Events object with :on() and :off() methods to start or
stop listening to a specific event respectively. This also allows to
add several callbacks for the same event.

Replaced the temporal Site.onChange & Sprite.onChange implementations.

Related to several issues (enable more possibilities for): #138, #1403, #1949, #2965, #2980
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature maintenance medium priority plugins scripting
Projects
None yet
Development

No branches or pull requests

4 participants