Skip to content

Instantly share code, notes, and snippets.

@xenithorb
Last active January 18, 2021 03:16
Show Gist options
  • Save xenithorb/2337d442331dab02b5c7e3685a0dfa70 to your computer and use it in GitHub Desktop.
Save xenithorb/2337d442331dab02b5c7e3685a0dfa70 to your computer and use it in GitHub Desktop.
KeePass 2.x favorite triggers for saving and syncing
  1. If the file %HOME%/Nextcloud/keepass/{DB_NAME}[^1][^2] does not exist, then it exports the db there to create a new file
  2. If the file %HOME%/Nextcloud/keepass/{DB_NAME}[^1][^2] does exist, then it synchronizes the current database with that file

This way you don't have to worry about saving or moving around copies into your synced storage, and the normal sync trigger won't error out on a file that does not exist

The first trigger, Save new if file doesn't exist turns off the following Sync if file exists trigger to avoid a loop, the third trigger turns the sync trigger back on so that on any subsequent saves, it sync to the file as well.

[1]: %HOME% in keepass expands to $HOME on linux - might expand to %HOME% on Windows, too.
[2]: {DB_NAME} in keepass expands to the database's name + extension.

Usage:
  1. Save the XML, and edit any parameters you wish
  2. Copy the text to your clipboard
  3. Triggers -> Tools (button bottom-left) -> Paste Triggers from Clipboard
<?xml version="1.0" encoding="utf-8"?>
<TriggerCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Triggers>
<Trigger>
<Guid>yxhb7AGrpkOAV8Ds4XVb0Q==</Guid>
<Name>Minimize on open</Name>
<Events>
<Event>
<TypeGuid>5f8TBoW4QYm5BvaeKztApw==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions />
<Actions>
<Action>
<TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
<Parameters>
<Parameter>bash</Parameter>
<Parameter>-c "sleep 1; xdotool search --onlyvisible --classname KeePass windowminimize"</Parameter>
<Parameter>False</Parameter>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Action>
</Actions>
</Trigger>
</Triggers>
</TriggerCollection>
<?xml version="1.0" encoding="utf-8"?>
<TriggerCollection xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Triggers>
<Trigger>
<Guid>2lvPW194pkGbSa+1ZafCyw==</Guid>
<Name>Sync db when opened</Name>
<Events>
<Event>
<TypeGuid>5f8TBoW4QYm5BvaeKztApw==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions>
<Condition>
<TypeGuid>y0qeNFaMTJWtZ00coQQZvA==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
</Parameters>
<Negate>false</Negate>
</Condition>
</Conditions>
<Actions>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter>Sync if file exists</Parameter>
<Parameter>0</Parameter>
</Parameters>
</Action>
<Action>
<TypeGuid>Iq135Bd4Tu2ZtFcdArOtTQ==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
<Parameter />
<Parameter />
</Parameters>
</Action>
</Actions>
</Trigger>
<Trigger>
<Guid>U6ZLxnapOkepQKfZ7xz+1w==</Guid>
<Name>Save new if file doesn't exist</Name>
<Events>
<Event>
<TypeGuid>s6j9/ngTSmqcXdW6hDqbjg==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions>
<Condition>
<TypeGuid>y0qeNFaMTJWtZ00coQQZvA==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
</Parameters>
<Negate>true</Negate>
</Condition>
</Conditions>
<Actions>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter>Sync if file exists</Parameter>
<Parameter>0</Parameter>
</Parameters>
</Action>
<Action>
<TypeGuid>D5prW87VRr65NO2xP5RIIg==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
<Parameter>KeePass KDBX (2.x)</Parameter>
<Parameter />
<Parameter />
</Parameters>
</Action>
</Actions>
</Trigger>
<Trigger>
<Guid>St02EkwHYkWw/nJrva2IIg==</Guid>
<Name>Sync if file exists</Name>
<Events>
<Event>
<TypeGuid>s6j9/ngTSmqcXdW6hDqbjg==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions>
<Condition>
<TypeGuid>y0qeNFaMTJWtZ00coQQZvA==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
</Parameters>
<Negate>false</Negate>
</Condition>
</Conditions>
<Actions>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter />
<Parameter>0</Parameter>
</Parameters>
</Action>
<Action>
<TypeGuid>Iq135Bd4Tu2ZtFcdArOtTQ==</TypeGuid>
<Parameters>
<Parameter>%HOME%/Nextcloud/keepass/{DB_NAME}</Parameter>
<Parameter />
<Parameter />
</Parameters>
</Action>
</Actions>
</Trigger>
<Trigger>
<Guid>ExlEoeB+lk+SI3hjIJw0CQ==</Guid>
<Name>Turn Sync back on</Name>
<Events>
<Event>
<TypeGuid>s6j9/ngTSmqcXdW6hDqbjg==</TypeGuid>
<Parameters>
<Parameter>0</Parameter>
<Parameter />
</Parameters>
</Event>
</Events>
<Conditions />
<Actions>
<Action>
<TypeGuid>tkamn96US7mbrjykfswQ6g==</TypeGuid>
<Parameters>
<Parameter>Sync if file exists</Parameter>
<Parameter>1</Parameter>
</Parameters>
</Action>
</Actions>
</Trigger>
</Triggers>
</TriggerCollection>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment