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

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

В качестве примера будем использовать отправку вложения по электронной почте. В этом подменю у нас в итоге должно получиться два пункта: Отправка произвольного файла(ов) как вложение и Отправка произвольного файла(ов) как вложение с предварительным архивированием. Архивировать будем в 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.

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

Редактируем всплывающее меню

На форуме Linuxforum.ru задали вопрос. Вот и мне стало интересно, а действительно как во всплывающем меню, по клику правой клавишей мышки, можно добавить свои пункты, т.е. расширить подпункт «Действие». Как там было в Windows 98 я не помню, поэтому взялся за изучение материала. Всё оказалось достаточно просто. Итак, имеем установленный Debian Testing и KDE 3.5.7 (в других дистрибутивах действуем по аналогии).

В качестве примера попробуем сделать так, чтобы можно было, воспользовавшись правой клавишей мышки, посмотреть сохранённый документ в формате MS Word в виде простого html. Для начала необходимо убедиться, что пакет wv установлен. Если этого пакета в вашей системе нет, то устанавливаем его (воспользуйтесь менеджером пакетов своего дистрибутива):

$ sudo aptitude install wv

После того, как установится пакет, открывайте любимый текстовый редактор (я буду использовать kate) создайте пустой файл, в который необходимо поместить следующий код:

[Desktop Entry]
ServiceTypes=application/msword
Actions=ViewDocAsHTML
[Desktop Action ViewDocAsHTML]
Name=View Word Doc as HTML
Name[ru]=Просмотр MS Doc как HTML
Exec=wvHtml --targetdir=/tmp %f temp.html; konqueror /tmp/temp.html

Теперь нам необходимо сохранить этот файл, назовём его как «view-doc-as-html.desktop», в пользовательском каталоге KDE, а именно (включите отображение скрытых файлов)

$ /home/<пользователь>/.kde/share/apps/konqueror/servicemenus/

Да собственно всё. Открываем konqueror в режиме менеджера файлов, находим любой вордовский документ, щёлкаем правой кнопкой мыши и выбираем из всплывающего меню: Действие -> Просмотр MS Word как HTML. Наш документ откроется в браузере konqueror. Что нам и требовалось.

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

Снова открываем любимый текстовый редактор и пишем следующий код

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

Сохраняем этот файл в тот же каталог, что и предыдущий пример, только называем его, например, так «send-to-email.desktop». Всё хорошо и отлично работает, вот только хочется добавить иконки в это меню. Это сделать ещё проще. В секцию [Desktop Action SendToEmail] просто добавляем новый параметр Icon=kmail.

Теперь у нас напротив пункта «Отправить как вложение» появился значёк — конвертик — почтовой программы. Список mime-type можно посмотреть в Центре Управления — Компоненты — Привязки файлов.

И ещё один момент. Здесь я рассмотрел пример создания всплывающего меню для конкретного пользователя, т.е. для себя любимого. Если же вам надо сделать такое меню остальным пользователям, которые имеют доступ к компьютеру, то выше перечисленные файлы необходимо сохранять в /usr/share/apps/konqueror/servicemenus/ или в /opt/kde3/share/apps/konqueror/servicemenus/.