среда, 9 сентября 2020 г.

KeePass с несколькими базами

Предлагаю набор триггеров, который решает различные проблемы, возникающие при использовании нескольких вкладок с базами. Статьи и готовая сборка пересекаются с ним, но частично и в слегка устаревшем виде, обновлять лень. Кроме того, эти триггеры не связаны напрямую с остальными приемами настройки, предложенными в статьях, и поэтому могут оказаться полезными сами по себе.

База, открываемая при запуске

Способность KeePass'а запоминать последнюю базу при закрытии, чтобы потом предлагать ее при запуске, иногда мешает, поскольку этой последней базой может оказаться вовсе не та, что мы обычно используем. Чтобы зафиксировать дефолтную базу, создадим триггер:

  • название: Открывать основную базу при запуске,
  • событие: Программа инициализирована,
  • условие: Файл существует (указать путь к файлу базы),
  • действие: Открыть базу данных (указать тот же путь).

Это единственный триггер из набора, который будет различаться у пользователей с разным расположением базы. Остальные триггеры вообще универсальны.

Вкладка, открываемая при разблокировке

Похожая неприятность возникает при разблокировке свернутого KeePass'а, содержащего несколько вкладок с базами: к открытию может предлагаться не основная база. Чтобы сразу предлагалась первая вкладка, поможет такой триггер:

  • название: Активировать основную базу при блокировке,
  • событие: Закрытие базы (после сохранения),
  • действие: Активировать базу данных:
    • файл: . (точка),
    • фильтр: Все.

Закрытие вкладок с заблокированными базами (new!)

Когда вкладка с основной базой разблокирована, остальные остаются висеть мертвым грузом, занимая место на панели и отвлекая внимание. Обычно они бесполезны, поэтому избавимся от них таким триггером:

  • название: Закрывать дополнительные вкладки при блокировке,
  • событие: Закрытие базы (после сохранения):
    • операция: Соответствует регулярному выражению,
    • фильтр: ^(?i)(?!{T-REPLACE-RX:/{DB_PATH}/([^\w\s])/\$1/}$)
  • действия:
    • Изменить состояние триггера:
      • имя триггера: пусто,
      • новое состояние: Выключить,
    • Активировать базу:
      • файл: пусто,
      • фильтр: Выполняющая триггер,
    • Закрыть текущую базу,
    • Изменить состояние триггера:
      • имя триггера: пусто,
      • новое состояние: Включить.

Этот триггер может работать только в паре с предыдущим, Активировать основную базу при блокировке, и должен располагаться под ним.

Корректная работа автоматики

Вы можете иметь свои триггеры, которые занимаются бэкапом, синхронизацией или другими полезными операциями при открытии, сохранении или закрытии базы. Однако обычно такие триггеры выполняют операции с выбранной вкладкой, тогда как сохраняться или закрываться может, в действительности, другая. Поэтому при работе с несколькими базами вы можете внезапно обнаружить, например, что некоторые из них не синхронизируются, зато другие делают это несколько раз подряд. Чтобы автоматика снова заработала корректно, добавим следующий триггер:

  • название: Автоматически активировать,
  • события:
    • Сохранение файла базы данных:
      • операция: Соответствует регулярному выражению,
      • фильтр: ^(?i)(?!{T-REPLACE-RX:/{DB_PATH}/([^\w\s])/\$1/}$)
    • Закрытие файла базы данных (до сохранения) с таким же фильтром,
  • действие: Активировать базу:
    • файл: пусто,
    • фильтр: Выполняющая триггер.

Этот триггер должен располагаться вверху списка: над другими триггерами, которые выполняют автоматические операции с базами.