Any suggestions on what plugins could be created?

Just throwing some ideas out there:

Some ability to hook into different systems:

  • Keystrokes & swipe gestures (for adding new shortcut keys, swiping down to show related notes by tag, swiping up to share, swiping left to show table of contents/outline view plugin, etc)
  • Ability to add toolbar buttons in certain contexts & tags. E.g… view note context: “translate to French”, edit note context: toggle “spell check”, browse notes list context: “show all tagged ‘urgent’”).
  • Ability to add Settings panels, or an in-app editing of the config file for further extensibility.
  • Ability to add custom sidebars. E.g. Note Outline: to show all headings in a file (e.g. what Typora has), or Note Minimap: to do a scrolling preview (e.g. what VSCode has)
  • Load/save hooks: Could be used for file compression, custom on-device encryption (e.g. on shared work computers that aren’t secure), auto-exporting to other formats (e.g. creating a static website as you mentioned), syncing found date entries with caldav and similar, triggering some action on finding contacts (e.g. to email a copy of the file in certain conditions), updating information that’s gathered from external sources.
  • Ability to add tags that run when either viewed or edited (in templates or in any note). Examples: {{LiveRefresh(“www.stackoverflow.com/MyStatisticsWhatever”)}}, {{Weather(“City”)}}, {{TodaysTopNewsTopic}}.
  • Sync hooks: for additional / experimental sync targets (e.g. ssh/rsync, sftp, Amazon S3 buckets, storing in IMAP (like OSX Notes does)). Sync doesn’t necessarily have to be 1 target only, but could be multiple targets, for redundancy, or for one-way sync like sending to a website, or for importing emailed notes via reading mailboxes.
  • Edit action hook: live spell check as you type (any language), linters, live word count / statistic plugins
  • Render hooks for each component: for things like line numbers, visible spell check, formatting certain files in a different theme (like card layout for address book entries), 2nd layer encryption of part of file (e.g. if the file contained list of passwords to access a site, that would be redacted unless unlocked).

It would be nice if there were multiple ways to add plugins, depending on individual circumstances. Examples:

  1. Drop js file into remote sync location, perhaps in a plugin directory, and all .js files are listed within Joplin Settings with the option of activating them. JS file could also be ignored unless it contained some specific text (e.g. “JoplinPlugin”).
  2. Type in URL to any web link pointing to a plugin (so that they could be hosted anywhere).
  3. Also no doubt a list of plugins that get placed in the official plugins directory if accepted as common.

I like the idea of plugins, as it’s often easier to get new features developed by the community and tested before deciding if they get moved into official plugins / features.

3 Likes