Редактируем всплывающее меню.Часть вторая

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

В качестве примера будем использовать отправку вложения по электронной почте. В этом подменю у нас в итоге должно получиться два пункта: Отправка произвольного файла(ов) как вложение и Отправка произвольного файла(ов) как вложение с предварительным архивированием. Архивировать будем в zip, чтобы получателя (пользователь MS Windows) не шокировать «странными» расширениями. И заодно немного дополним наше описание меню.

Итак, открываем в любимом текстовом редакторе файл ~/.kde/share/apps/konqueror/servicemenus/send-to-email.desktop. Для тех кому непонятно: тильда (~) означает ваш домашний каталог. Чтобы было нагляднее приведу его содержимое ещё раз:

[Desktop Entry]
ServiceTypes=all/allfiles
Actions=SendToEmail
[Desktop Action SendToEmail]
Name=Send attachment<br />
Name[ru]=Отправить как вложение
Exec=kmail %f<br />
Icon=kmail

В секции [Desktop Entry] изменяем параметр Actions следующим образом, то указываем не одно, а два действия:

Actions=SendToEmail;ZippedSendToEmail

И после Actions добавляем несколько строк:

Encoding=UTF-8
X-KDE-Submenu=Send attachment
X-KDE-Submenu[ru]=Отправить вложение

Секцию [Desktop Action SendToEmail] оставляем из предыдущей статьи без изменения. Хотя стоит немного модифицировать параметр Exec следующим образом:

Exec=kmail %F

Т.е. изменим маленькую f на большую букву F. Это позволит нам добавлять не один файл, а несколько в одно письмо.

Создаём новую секцию [Desktop Action ZippedSendToEmail], которая у нас будет упаковывать в архив один или несколько выбранных файлов и создавать письмо с вложением. Для этого в секцию добавляем следующий код:

[Desktop Action ZippedSendToEmail]
Name=Zipped and send attchment
Name[ru]=Упаковать и отправить
Exec=rm /tmp/file.zip; zip -Xj /tmp/file.zip %F; kmail /tmp/file.zip
Icon=tgz

Сначала мы удаляем в tmp созданный ранее архив. Если его не удалить, то при создании нового архива у нас добавятся выбранные файлы в уже существующий архив, а этого нам как раз и не надо. Затем архивируем выбранный файл или файлы и передаём на обработку почтовой программе. В данном примере это kmail.

Как видно, создать разветвлённое меню не просто, а очень просто.