Global Settings / Same settings, themes, and plugins across multiple vaults

I second this feature request.

Manually checking and copying the same settings to every new vault I create is time consuming and kind of frustrating…


Edit: Oh, I just realized that simply copying the .obsidian/config file works just fine.

In other words, there is no need to navigate across every single config option as I had been doing (doh!)… Simply copy the .obsidian/config file from an old vault to a new one and, voila, you now have the same configs.

2 Likes

Is there any issue with copying the cache and workspace files from one vault to another? Just making sure there won’t be any complications later on.

Currently, if I have a custom theme that I use in 2 different vaults, any change I want to make to the theme I will have to make to the obsidian.css file in each of the vaults.

It makes more sense if it were possible to direct Obsidian to access custom themes in just the 1 folder.

1 Like

Not sure about Windows, but on Mac and Linux you can just create a hard link to the .css file which will ensure that editing either will update both as they are just one file in the filesystem existing in multiple locations.

@Rishi: I am on a Mac!! So, that gives me hope. I tried to create a symlink but that does not work, Licat confirmed Obs does not accept symlinks.

Say I have a folder that is my vault, let’s call it Vault1. I also have another called Vault2.
Then I have a folder with custom themes, let’s call it Themes. In there I have a custom theme that is called obsidian.css, of course.

Now, how do I create a link in Vault1 and Vault2 to obsidian.css in that Themes folder?

Symbolic links are soft links ln -s source target. We need hard links for this I think.

Make sure to have a backup before following any of the actions below:

I just tested and can confirm this works with one caveat. So, with your example of three folders Vault1, Vault2 and Themes, you’d do something like,

cd /path/to/Themes
ln obsidian.css /path/to/Vault1/obsidian.css
ln obsidian.css /path/to/Vault2/obsidian.css

It would be simpler if you didn’t need to have a separate themes folder and assuming you already have an obsidian.css in Vault1 but none in Vault2, then you’d just use this,

ln path/to/Vault1/obsidian.css path/to/Vault2/obsidian.css

This will create an obsidian.css in all the vaults which will seem like separate files but will be essentially the same. So if you edit something in one file, you can open the other to confirm that it’s changed as well.

The one caveat is if you have both the vaults open in Obsidian and then modify the obsidian.css file, Obsidian will only update to show the changes in the vault whose file you opened. For the other vault, you’d need to close and reopen for it to fetch the updated file. I am guessing this is because it might be due to some internal caching. But the only thing you need to remember is to close/reopen the vault after making any changes to the obsidian.css.

3 Likes

@Rishi: OK, I used situation 2: no themes folder and an obsidian.css in Vault1 but none in Vault2

That’s funny: for the part path/to/Vault2/obsidian.css I get “Operation not supported”.

Update: I understand why it is not supported: my vaults sit on a virtual drive (VeraCrypt), so the “ln” command does not work. It does work between 2 folders in the home directory (I tested it between ~/Documents and ~/Downloads), it does not work either if one folder is in the home directory and the other on the virtual drive :disappointed:

Oh that’s something I didn’t consider. Hard links only work inside the filesystem they are in. In your case, I think the best solution might be to setup a file sync which automatically replaces the older one in either folder with the newest one. Not sure of the VeraCrypt system, but on a Mac the easiest way to do it would be using Folder Actions which I use often or something like Hazel.

1 Like

I understand, you could not know that my vaults sit on a VC drive.

Anyway, I want to thank you for taking the time to try to help me. Thanks a lot :+1:

1 Like

Enjoying Obsidian so far, thank you (and all the best too !)

I ended up making two vaults (I usually end up with at least two namespaces in all my tools, at the very least I always have a “life vs work” separation (or I try to, lol)).

I wanted to add a hot-key for “Today’s notes” and it was super-easy to do this, really like how straightforward it was.

However, I then had to go add it for the other vault too, after wondering “why isn’t this keyboard shortcut working anymore?” for a while.

And … this made me wonder, should hotkeys be global or vault-scoped?.

I can see the case for keeping it the way it is: (1) there might be hotkeys that only make sense for a specific vault, or (2) it allows the app to not have any global state.

On the other hand, hotkeys are usually for the app as a whole; the way I imagine them, I add or change hotkeys when I want to change “the way I use the app”.

So: not a complaint, just a thought, thanks again for a great product.

7 Likes

One idea would be to support configuration on different levels (e.g. per user, per vault) similar to how it is done in Git where you can overwrite the user configuration per repository. In Obsidian, the per-vault configuration would overwrite the per-user configuration.

4 Likes

This would be great, ideally it’d be great to have one dotfile generated only for the hotkeys, this file could easily be shared accross vaults and to other people.

Currently, what I do to share my hotkeys accross vaults is to copy the .obsidian file (a hidden file in the vault)

this not only copies hotkeys, but also all settings, such as plugins and editor settings.

This is a workaround and I’m still not sure if I’m missing downsides to this approach.

In mac, for showing this hidden file in finder, go to your folder of the vault that has the shorcuts and press

Cmd + Shift + .

now you can copy this file to your other vault.

If you are in Windows or linux just search “how to show hidden files or dotfiles”

hope that helps, I’d love to know if there’s a better approach

2 Likes

afaics each vault is a separate instance. I don’t think there’s much that’s ‘global’.

Yes, but as I suggested above, Obsidian could e.g. support a per user hotkey configuration in ~user/.obsidian in addition to vault/.obsidian. Each vault’s instance would first lookup the per user configuration and then merge in the configuration from its vault. Of course, global configurations could also be stored under /etc or in the Windows registry.

3 Likes

Hi all! I just installed Obsidian today by the recommendation from a colleague. So far it looks great but I’ve ran across a few annoyances, this being one. I spent a considerable amount of getting the shortcuts right for me. I was quite surprised to find the shortcuts didn’t work in the “help vault”.

As already suggested, it would be great if one could define global settings under ~/.obsidian or ~/.config/obsidian which could then be overriden by the vault specific settings. Then again this complicates things as it wouldn’t then be straightforward to edit global/default settings vs. vault specific. It would require something like VSCode’s settings management.

For me the keyboard shortcuts matter the most. It would already help if the keyboard shortcuts would be defined in a separate file from config. This way you could create a symlink to this file between projects (as a workaround).

1 Like

I agree, @ristomatti specially with what you said on making the shortcuts a separate config file. This way it can easily be shared with others (and across vaults) without having to copy the whole .obsidian directory.

And like you said, from there symlinks could be created without any issues.

1 Like

@Rishi: hi, long time no speak.

I am looking at mac OSX’s Folder Actions and, following on from your comment, I was wondering if you know if it is possible to have an action that copy/pastes an obsidian.css file from say Vault 1 to Vault 2 folder every time that file is changed. The obsidian.css file already residing in Vault 2 needs to be overwritten automatically.

@Klass Hey!

I don’t think that’s possible with Folder Actions by default. Folder actions support file added/removed from a folder and folder opened/closed but no way to check if file modified. There are hacky ways around that which can do what you seem to need to do. One method I can think of is checking whenever a file called .DS_Store is added to a folder (which is a hidden file that keeps folder settings and can be safely deleted). Whenever a file in a folder is modified, that file is created in that folder, so we can, in theory, explicitly copy the obsidian.css file whenever we detect this new file and after the copying, we delete the .DS_Store file. I’ve not tested it but it seems like it should work.

Another, more robust solution, might be to use rsync and run it frequently, say every hour, using launchd.

@Rishi: OK, thanks for your help. Stay safe, keep well.

Is there any solution to restore default setting for hotkeys?