Plugin Organizer: Create groups to organize installed plugins by category. Annotate groups and plugins. Export groups to other vaults. Share plugins, groups, and annotations

Table of Contents

  • Notes
  • Scope
    • Target Interface
    • Plugin Context
  • Requested Feature List
    • Core Features
    • Potential Features
  • Requested Feature Examples
    • Example 1: Community Plugins List
    • Example 2: Installed Plugins List
    • Example 3: “Plugin Organizer” Settings: Groups and Plugins
    • Example 4: “Plugin Organizer” Settings: Popup Window
  • Appendices
  • Appendix A: Credits
  • Appendix B: Development Things I Can Do
  • Appendix C: List of Plugin Management Plugins

Notes

  • My mental model for a group is that they are like folders and sub-folders that hold plugins.
  • The image examples were made with MS Paint and Word. They are meant to convey a general idea and are not specifications.

Scope

Target Interface

Obsidian > Settings > Community Plugins List, Installed Plugins List

Plugin Context

Requested Feature List

Core Features

  • Organize plugins in the settings menu using custom groups.
    • Assign groups to plugins; remove plugins from group.
    • View ungrouped plugins.
    • Add plugins to more than one group.
    • Sort plugins within a group in custom order.
  • Organize plugins in the settings menu using annotations.
    • Annotate individual plugins.
    • View, edit, toggle, and delete plugin annotations.
    • Annotate groups with a description.
    • View, edit, toggle, and delete group annotations.
  • Manage groups in the settings menu.
    • Create group.
    • View groups.
    • Search groups.
    • Edit groups.
    • Delete groups.
    • Sort groups into a custom order.
    • Assign groups to other groups as a sub-group.
    • Format and style groups.
      • Choose basic default display style via interface – font size, color, bold, italic.
      • Choose advanced default display style via CSS.
      • Customize display style of individual groups.
      • Reset custom styling: individually, bulk, all.
  • View the community plugin list and the installed plugin list in the settings menu by groups.
    • Sort plugins by alphabetical order (like Obsidian default), alphabetical groups, or custom group order.
    • Choose to display group annotations below the group name in the community plugin list or the installed plugin list (default: off).
  • Search installed plugins or groups in the community plugin list from a search box above the list.
  • Pin and unpin groups to the top of the list, ignoring sort order.
    • Unpin groups from within the list interface. Click the pin icon once to unlock the pin, then click it again to unpin.
      • Toggle setting: Unpin groups from within the list interface. Turning this off means that pinned groups can only be unpinned in settings, to prevent accidental unpinning.
    • Toggle setting: Display pinned group labels. Turning this off allows you to display individual plugins at the top of the plugin lists.
  • Save, re-use, and share groups with other vaults and users.
    • Export group data:
      • As a csv file
        • with or without configuration data
        • with or without group annotations
        • with or without plugin annotations
      • As a text file with a human-readable formatted list
        • With or without configuration data
        • With or without group annotations
        • With or without plugin annotations
    • Import group data:
      • From a plugin-generated csv file
      • From a user-generated csv file
      • From a text-based file with a formatted list
  • Allow other plugins to access, manipulate, and display groups.
    • Make groups and data accessible to themes and other plugins, such as plugin managers.

Feature List: Potential

  • Enable, disable, reload, or update plugins by group.
  • Mark plugins or groups in the settings menu with indicator icons.
    • Default icon set: shapes with color options

      • Add compatibility with icon management plugins to extend icon options.
    • Display indicator icons next to an individual plugin or group.

      • Define indicators.
      • Add a description to indicators.
    • Sort plugins by indicator.

      • Define indicator sort order.
    • Enable, disable, reload, or update plugins by indicator status.

Requested Feature Examples

Example 1: Community Plugins List

Example 2: Installed Plugins List

Example 3: “Plugin Organizer” Settings: Groups and Plugins

Example 4: “Plugin Organizer” Settings: Popup Window

Appendices

Appendix A: Credits

Source material for screenshots and general interface structure ideas:

Plugin Groups by Mocca101 (unmaintained) A plugin for loading, enabling, and disabling plugins by group.

Appendix B: Development Things I Can Do

  • Documentation: writing, taking screenshots, etc.
  • Find example plugins for a given feature.
  • Write more detailed specifications for a given feature.
  • Beta test plugin and provide feedback.

Appendix C: Plugin Management Plugins

Plugin Name Plugin Author Plugin Description Plugin Link
Plugins Annotations Andrea Alberti Allows adding personal comments to each installed plugin. GitHub - alberti42/obsidian-plugins-annotations: Obsidian plugin that allows adding personal comments to each installed plugin.
BRAT TfTHacker Easily install a beta version of a plugin for testing. GitHub - TfTHacker/obsidian42-brat: BRAT - Beta Reviewer's Auto-update Tool for Obsidian.
VARE 4Source Now you can easily manage your plugins and themes. Simply select the version you want or install unlisted versions from GitHub. You can also install beta version and switch back if necessary. GitHub - 4Source/vare-obsidian-plugin: This is a plugin for Obsidian (https://obsidian.md). Allows you to easily manage your plugins and themes inside Obsidian.
Plugins Galore dylanpizzo Easily sideload other plugins. GitHub - plugins-galore/obsidian-plugins-galore: This is an Obsidian plugin to allow easily sideloading other plugins.
Plugin Groups Mocca101 Manage your Plugins with groups: Enable & disable multiple plugins at once or delay their startup to speed up your Obsidian start up time. GitHub - Mocca101/obsidian-plugin-groups: A plugin that allows you to easily group and manage your other plugins in Obsidian.
Plugin Manager ohm-en Extend plugin management. GitHub - ohm-en/obsidian-plugin-manager: Allows better management of Obsidian.md plugins.
Lazy Plugin Loader Alan Grainger Load plugins with a delay on startup, so that you can get your app startup down into the sub-second loading time. GitHub - alangrainger/obsidian-lazy-plugins: Load plugins with a delay on Obsidian startup, so that you can get your app startup down into the sub-second loading time.
Plugin Reloader Benature Manually reload plugins. GitHub - Benature/obsidian-plugin-reloader: manual reload plugins
Open Plugin Settings Mara-Li Create a command to open a specified plugin settings. GitHub - Mara-Li/obsidian-open-settings: Create a command that open the settings tabs of a registered plugin (because I was bored to open the parameters).
Hotkey Helper PJ Eby Easily see and access any plugin’s settings or hotkey assignments (and conflicts) from the Community Plugins tab. GitHub - pjeby/hotkey-helper: Easily see and access any Obsidian plugin's options pane or hotkey assignments (including conflicts) from the Community Plugins tab
Share my plugin list Benature Share the enabled plugins in list/table format. GitHub - Benature/obsidian-share-my-plugin-list: Share the obsidian plugins that is using currently
Obsimian Exporter Oliver Lade Simulation framework for testing Obsidian plugins. GitHub - motif-software/obsimian: Obsidian simulation framework for testing Obsidian plugins.
Divide & Conquer pseudometa Commands for bulk enabling/disabling of plugins. Useful for debugging when you have many plugins. GitHub - chrisgrieser/obsidian-divide-and-conquer: An Obsidian plugin that provides commands for bulk enabling/disabling of plugins. Useful for debugging when you have many plugins.
Plugin Update Tracker Steven Swartz Know when installed plugins have updates and evaluate the risk of upgrading. GitHub - swar8080/obsidian-plugin-update-tracker: Know when installed obsidian plugins have updates and evaluate the risk of upgrading
HelpMate TfTHacker Add a sidebar view to see help sites for the plugins and themes you have installed. GitHub - TfTHacker/obsidian42-HelpMate: HelpMate for Obsidian - providing help and documentation from within Obsidian
4 Likes

I am having related thoughts on the topic of how to better organize plugins and this is an impressive proposal and seemingly large in scope.

I would suggest much of the end goals could be accomplished by keeping structured notes about installed plugins within obsidian marked up with properties and tags to then group and organize in Obsidian just like any other note rather than build a very heavy bespoke interface with isolated preferences database and that would be a lot of work to replicate features already in the base application.

Whereas a plug in to help generate and upkeep one’s own personal plugin notes collection could potentially be implemented with very little ui surface area and therefore be faster to build and start using.

Managing plugins metadata as notes also makes possible to then collaborate on a shared vault of plugin notes as a community, if a common structured properties format could be established for community plugin notes.

I like the idea of having markdown notes for plugins. That fits in very easily with the main idea of this plugin: viewing plugins in a folder format (albeit in the settings interface).

Groups could be added and managed using a specific folder that contains “root” sub-folders with the group name, and each group folder has a sub-folder with the name of the plugin. Then, the plugin uses the group/plugin folder combination to customize the display of the plugin lists in the settings menu.

This means that you can store plugin documentation and annotations in md files, contained in the plugin folder.

The interface for “Plugin Organizer” can be made optional in this way, to accommodate different user workflows.

My own first steps in this direction so far are a functioning proof of concept plugin notes generator scripted up in python that parses the community plugins json file and uses a plugin note template to create a note for each of my installed plugins. It also parses the manifest from each plug in folder and adds those details to the notes in fields.

Adding other available plugins to the mix the template has block with github-query so plugins managed there can have an issues pane appear in my note for the plugin, which is nice.

What is not so nice is the wide variation of values I have found parsing fields of plugin manifest files, these could be a lot cleaner / more conformant than they are across the multitude of plugins.

Other ideas for plugin notes are version history / change log, personal and community ratings, plugin maintained status, download trends, any specific usage notes, track code audit history across versions and dependencies.

Unfortunately, I am not a programmer yet, but I am taking steps in that direction.

Re: Plugin Manifest: It sounds like Obsidian’s whole community plugin system needs standardization in multiple areas to help with compatibility. Searching for plugins is a terrible experience because of the lack of standard descriptions, tags, and filtering, for example. How to convince Obsidian the company to prioritize a standardization effort, though? A community-led effort would only go so far without support from the top.

My original goal was to create a spreadsheet of all of the plugins, so I could sort them by different criteria and build my knowledge system that way. There are 2000 plugins, but a given functionality usually has only one or two options. The quality of implementation varies widely, depending on how popular that functionality is.

So, not being a programmer, I figured the first step would be to define how I want a plugin to function and get feedback. And thank you very much for the feedback!

You are welcome, and thank you for starting the thread. It is a topic I have been thinking about and trying out ways to implement for a while. And I have seen similar posts on this topic in various forums before, which to me validates there is common need for some solution to exist.

Rather than spend a lot more time on my proof of concept in python, I have started a plugin project but its a lot of new learning for me working in typescript. I will update the thread if I make any progress developing it.

If you need any non-programmer help, let me know!

I didn’t think of it last night, but would it be helpful to see how other plugins implement a particular function in typescript? I can use my spreadsheet to find examples.

My notes from today based on your feedback:

1 Like

Yes thank you for the visualization, very well put together and thought through.

I think this is all quite achievable.

Here is a snapshot of plugin notes I created with a plugins dashboard page opened, where so far I have a few different dataviewjs queries returning different results tables of the notes. (in view are plugins I did not find a valid repo or author name for, but other tables follow below, such as enabled and disabled plugins)

I’m thinking in the direction where only creating and updating fields in plugin notes is the what the proposed plugin-notes plugin handles, and that all of the the outer summarizing and indexing meta-plugin notes as well as the internal specifics of the template plugin note will be up to the user to customize to their liking and particular needs.

Within that template plugin note customization many cool things should be possible. For example I expect we could use one of the various button implementation plugins to add an enable/disable toggle switch from each plug-in note.

1 Like

And here is reddit thread from earlier that relates to this topic, for reference.

https://www.reddit.com/r/ObsidianMD/comments/1h05uk2/obsidian_has_2034_plugins_how_to_make_them_easier/

And here is a plugin switcher project I saw mentioned in another thread, but it does not appear to be published yet.

Another plugin enhancement mentioned in thread above.

I really like what you’ve done so far.

A quick idea regarding automation: supplement missing manifest data with data from the plugin list?

I’ve been taking mostly theoretical notes, exploring a plugin as a system and as a component of a system.