Plugin: More Events - typed events Obsidian doesn't publish (for plugin developers)

Disclaimer

Is this plugin open source? Yes
Is this plugin completely free? Yes
Is this plugin vibe-coded beyond the author’s ability to comprehend how it works? No
Community Directory: more-events


This one is mostly for plugin developers. If you’re not one, you’d only install it because another plugin asks you to.

Obsidian’s public API has a fixed set of workspace events. For anything outside it, a plugin has to read undocumented internals or monkey-patch a shared prototype. When two plugins in one vault do that, the same prototype gets patched twice.

More Events does that patching once, for everyone, and publishes the missing events on app.workspace: named, typed, and one event per subject. The first set is plugin lifecycle:

  • more-events:core-plugin-enabled / more-events:core-plugin-disabled
  • more-events:community-plugin-enabled / more-events:community-plugin-disabled

Each one says which plugin changed and whether the user did it (isUserInitiated). Obsidian’s own change / changed signals are untyped and don’t even say which plugin moved. A small API also answers what events can’t: which plugins are enabled right now.

this.registerEvent(
  this.app.workspace.on('more-events:core-plugin-enabled', ({ corePluginId, isUserInitiated }) => {
    // Canvas, Backlinks, Graph... is back
  })
);

You need no dependency beyond obsidian: copy the declarations from api.d.ts or just use the event names. More sets will come under the same contract. If there’s an event you keep patching for, open an issue.

A listening plugin is told when Canvas is enabled