How to install a duplicate plugin, i.e the same plugin twice under a different name

I am looking for a way to install the same plugin twice.

For example the plugin Full-Calendar under FC1 and FC2. The reason being that I would like to maintain a single Obsidian Vault using sync with my partner, and we would both like to have our seperate calendars in there so we can work together more closely as a team.

The other use case would be to have the official daily note plugin installed twice under DN1:“daily log” and DN2:“gym log” and for them to have seperate folder where they put their daily notes so that it would be possible to have seperate sidebar buttons for each.

Since all plugins are simply loaded from files inside the .obsidian folder, isn’t it easily possible to change a few lines of code and load them both?

Thanks for any help or suggestions!

I’m not sure what you are trying todo exactly…but I have some hacky steps to get you started.
Stuff could break, so don’t rely on anything I’m saying to work… I’m trying to understand how plugins work in Obsidian which is why I have a little bit of knowledge to share.

Under the .obsidian dir you have a plugins folder containing sub folders with each plugins code. In your case you will have a sub folder called “obsidian-full-calendar”

  • in the plugins directory, create a new folder called “obsidian-full-calendar-copy” and copy all the files from the “obsidian-full-calendar”
  • in the “obsidian-full-calendar-copy” folder open the manifest.json file and change “id” and “name” values to
    “id”: “obsidian-full-calendar-copy”,
    “name”: “Full Calendar Copy”,
    …other stuff here…

To activate the plugin open the community-plugins.json in the .obsidian folder and add “obsidian-full-calendar-copy” to the list


Close and Reopen the vault… (you might need to reactivate them in the settings window after opening)

Voila a copy of the plugin is technically installed.

NB: You still only have one icon in the sidebar. The next steps are possibly to edit the main.js file… I’m not a javascript person and cant help you here.

Once again… this is dodgy stuff to be doing, but a half baked answer is better than no answer :slight_smile: