-
Notifications
You must be signed in to change notification settings - Fork 3
Plugins
MMS Plugins are separate browser extensions which, when installed, communicate with Mark My Search to extend ("plug into") its functionality. They can provide their own user interfaces to existing features, provide save-and-restore functionality, or even add completely new features that interact with the main extension in exciting new ways.
This page is intended to be a community resource that, hopefully, will inspire others to make their own plugins!
See ideas and existing plugins on the Plugin Roadmap
🚧 No plugin API currently exists, nor have any plugins been attempted. Work is planned to begin mid 2023. 🚧
-
Plugins must use an icon which is different in shape from the MMS icon, to make sure they are easily distinguished. Use of an icon similar to that of another plugin which provides different functionality should be avoided.
An icon already in use by a different plugin is not allowed, unless that plugin has been discontinued, in which case it can be used subject to the terms of its license.
Use of a similar colour scheme is encouraged to visually group plugins with the main extension, but is not necessary.
-
WIP
Plugins may extend or modify Mark My Search's toolbar, to provide additional actions, make it more accessible, or simply give it a makeover.
API
- 🚧 Not yet available
Plugins may provide context menu items. A primary advantage of separate extensions is that, where an extension provides only one menu item, it can be listed in the first layer rather than being nested.
It is recommended that you provide one context menu item for this reason, and only if needed. Other items can be provided, but they should all be related.
Context menu items should be directly related to the primary function of the plugin. They should be strongly associated if multiple are provided, as they will be grouped under the extension's item.
Please provide a quick access key for each of your items with &
, as this enables users to rapidly access functions without having to scan through the context menu. For example, a name of "&Highlight Selection" results in an item labelled Highlight Selection which can be activated by typing H.
API
- Plugins cannot modify or respond to built-in context menu items.
Plugins may provide their own popup. This is only encouraged for cases where a popup can be used to expose the primary function of the plugin. The primary advantage of this is it will be isolated from other content, and have its own dedicated action button (toolbar popup button) with the plugin's icon.
API
- Plugins cannot modify or respond to the built-in popup.
Plugins can read MMS options to fine-tune their functions.
If dedicated options are needed, plugins should present a page using the MMS page-build system for consistency and ease of development, as well as built-in support for considerations like accessibility.
API
- 🚧 Not yet available
Unfortunately, web compatibility is hard, website extensions especially so. Some websites are impossible to highlight, and will never be supported by Mark My Search since it would require website specific code, which as a strictly general use extension cannot be allowed. This is where MMS Flavours come in!
An MMS Flavour is a separately released edition of Mark My Search that packages its own highlighter code in full. This differentiates it from other types of plugin, which reuse the primary code of the already-installed main extension.
Highlighter code may be modified for increased performance or efficiency on a particular set of websites, without compromising the more general use experience.
- Register the extension ID with Mark My Search
- Register a handled URL filter that will match all URLs handled by the Flavour, linking to its extension ID
Condition: Invocation by Mark My Search when a handled URL is assigned keywords. MMS will continue to track the keywords as normal.
- Execute the highlighter, listening to events from the main extension
- Direct all messages to the main extension
- Flavours should be able to function without their own background script