Kleopatra позволяет администратору (и пользователю с достаточными правами) настроить список архиваторов, представленных в диалоге подписывания/шифрования файлов.
Каждый из архиваторов определён в файле libkleopatrarc как отдельная группа Archive Definition # со следующими обязательными ключами: n
extensionsРазделённый запятыми список расширений файлов, обычно соответствующий форматам, с которыми работает архиватор.
idУникальный идентификатор, который программа использует для распознавания этого архиватора. Если неизвестно, какой идентификатор следует использовать, укажите название команды.
Name(с возможностью перевода)Видимое пользователю название архиватора, которое также отображается в соответствующем раскрывающемся меню диалога подписывания/шифрования файлов.
pack-commandКоманда для архивирования файлов. Возможно использовать любую команду, для выполнения которой не требуется оболочка. Поиск файла программы выполняется в каталоге, указанном в переменной
PATH, если не указан абсолютный путь к файлу. Поддерживается использование кавычек (как если бы использовалась оболочка):pack-command="/opt/ZIP v2.32/bin/zip" -r -
Примечание
Так как обратная косая черта (\) в файлах конфигурации KDE является escape-символом, её необходимо дублировать в адресах файлов:
pack-command=C:\\Programs\\GNU\\tar\\gtar.exe ...
Однако для самой команды (в отличие от её аргументов) возможно использовать обычные косые черты (/) как разделители пути на всех платформах:
pack-command=C:/Programs/GNU/tar/gtar.exe ...
Такая возможность не поддерживается для аргументов, так как в большинстве программ Windows® обычная косая черта используется для параметров. Например, следующая запись не сработает, так как C:/myarchivescript.bat является аргументом cmd.exe, а / преобразуется в \ в командах, но не в аргументах:
pack-command=cmd.exe C:/myarchivescript.bat
Вместо этого необходимо указать следующее:
pack-command=cmd.exe C:\\myarchivescript.bat
Существуют три способа передачи имён файлов команде упаковки. Для каждого из них pack-command предоставляет определённый синтаксис:
Как аргументы командной строки.
Пример (tar):
pack-command=tar cf -
Пример (zip):
pack-command=zip -r - %f
В этом случае имена файлов передаются в командной строке. Kleopatra не использует оболочку для выполнения команды. Следовательно, это безопасный способ передачи имён файлов, но передаче могут помешать существующие на некоторых платформах ограничения на длину командной строки. Литерал
%f, если он имеется, заменяется именами файлов для архивирования. В ином случае имена файлов добавляются в командную строку. Следовательно, вышеприведённый пример с zip также возможно записать в следующем виде:pack-command=zip -r -
С помощью стандартного ввода, с разделением имён файлов символами новой строки: достаточно указать
|перед командой.Пример (GNU-tar):
pack-command=|gtar cf - -T-
Пример (ZIP):
pack-command=|zip -@ -
В этом случае имена файлов передаются архиватору через stdin, по одному в каждой строке. Это позволяет избежать проблем при работе на платформах, где установлено низкое предельное значение допустимого количества аргументов командной строки. Но такой способ не сработает, если имена файлов содержат символы новой строки.
Примечание
В текущей версии Kleopatra предусмотрена поддержка только символа новой строки LF, поддержка CRLF ещё не предусмотрена. Она может быть добавлена по просьбе пользователей в следующих версиях программы.
С помощью стандартного ввода, с разделением имён файлов NUL-байтами: достаточно указать
0|перед командой.Пример (GNU-tar):
pack-command=0|gtar cf - -T- --null
Этот способ аналогичен приведённому выше, за исключением того, что для разделения имён файлов используются NUL-байты. Поскольку использование NUL-байтов в именах файлов является невозможным, это самый надёжный способ передачи имён файлов, но его поддержка предусмотрена не во всех архиваторах.