Редактирование пункт "действия" в контекстном меню ((меню "правого клика мышкой"))

PCLinuxOS

Модератор: Bizdelnick

rasweb
Сообщения: 35
ОС: Mandriva

Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

При клике правой клавишей мыши на файле появляется контекстное меню с пунктом "действия" в котором прописаны некоторые действия (например - записать на диск).

Вопрос - как редактировать эти пункты? Как прописать туда какое то свое действие?
Надо вот мне написать туда "отправить по почте"... чтобы Kmail создавал новой письмо вкладывал туда указанный файлик.
Как это делает Windows еще с 98.

PS в виндовозе есть папка sendto... она описывает как раз действия = пункту "действия" в КДЕ.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Редактирование пункт "действия" в контекстном меню

Сообщение Uncle_Theodore »

В каком редакторе это происходит?
Или на рабочем столе какого оконного менеджера/десктопового энвайромента?
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

Сейчас я накатаю небольшую статейку по это вопросу. Подождите немного, там всё просто. :)
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

Uncle_Theodore писал(а):
03.10.2007 13:44
В каком редакторе это происходит?
Или на рабочем столе какого оконного менеджера/десктопового энвайромента?


И на рабочем и а конкере.

to MadDog - замечательно! Где взять потом?
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

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

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

Shell

$ 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, а именно (включите отображение скрытых файлов)

Shell

$ /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/.

Писал на скорую руку, так что замечания и дополнения приветствуются. :)

P.S. У себя на блоге также разместил эту статью, только с небольшими картинками.
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

Блин! Елы палы! Респект и уважуха! Такого доступного мануала давно я не видел.
Большое спасибо! Очень хорошо.

Предлагаю дополнить пример с отправкой файлов по мылу - описанием составного действия.
Т.е. "Отправить файл по Емайл" + "Сжать файл в ZIP и отправить по Емайл".


А еще предлагаю обратиться в Мандрива-Россия (если вы еще не там) - и предложить им включить инфу во встроенную помощь. Им очень не хватает русской помощи и тем паче такой - в примерах.
(могу подсказать мыло).
Спасибо сказали:
Аватара пользователя
stdds
Сообщения: 886
ОС: Mandriva 2008 / 2007 Free

Re: Редактирование пункт "действия" в контекстном меню

Сообщение stdds »

Код: Выделить всё

[Desktop Entry]
ServiceTypes=all/allfiles
Actions=SendToEmail

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



можно для тех кто в танке поподробние про каждую строку че для чего и зачем?
"Нету смысла искать смысл там где нет ни какого смысла это бесмыслица ее все равно не осмыслить!" Burhan Haldun (Бесмысленые высказывания)
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: Редактирование пункт "действия" в контекстном меню

Сообщение Atragor »

Вот еще на эту тему, но на буржуйском:
http://legroom.net/2007/04/20/adding-custo...e-context-menus

Там несколько полезных готовых действий
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

rasweb писал(а):
03.10.2007 21:42
Предлагаю дополнить пример с отправкой файлов по мылу - описанием составного действия.
Т.е. "Отправить файл по Емайл" + "Сжать файл в ZIP и отправить по Емайл".
А это в качестве домашнего задания :)

rasweb писал(а):
03.10.2007 21:42
если вы еще не там
Не-а, не там.

rasweb писал(а):
03.10.2007 21:42
Им очень не хватает русской помощи
Да её во всех дистрибутивах не хватает.

rasweb писал(а):
03.10.2007 21:42
А еще предлагаю обратиться в Мандрива-Россия
Боюсь заставят ставить Мандриву, а я rpm-ки и Гуй плохо перевариваю. Мне проще в консоле текстовики править (сейчас исключение по просьбе партии :) )

stdds писал(а):
03.10.2007 21:43
можно для тех кто в танке поподробние про каждую строку че для чего и зачем?
Можно, хотя параметров там полно (это рабочий минимум).

позже добавлю в статью

[Desktop Entry] - собственно заголовок файла, который обязателен
ServiceTypes=all/allfiles - mime-type файла (где смотреть я написал). Если поставить вместо all/allfiles, например, image/png, то будут отправляться только картинки в формате png. Тут можно указать через запятую несколько mime-type. Для примера укажите image/png и вы увидите, что это действие во всплывающем меню будет только у файлов этого типа.
Actions=SendToEmail - как видно из названия, собственно действие, которое будет выполняться (назвать придумываем сами, главное, чтобы было понятно самому позже)
[Desktop Action SendToEmail] - заголовок действия (см. чуть выше), обязателен. В этой секции описываем, что собственно мы будем делать с файлом указанным в ServiceTypes, если он подходит
Name=Send attachment - собственно название пункта меню на английском, лучше задавать (если слетят в кедах языковые настройки, пункт меню в любом случае прочитаем)
Name[ru]=Отправить как вложение - тоже самое только на русском (так приятнее работать). Для других языков просто указывайте в [] язык, например, Name[ua] или Name[de]
Exec=kmail %f - собственно действие, которое мы выполняем с этим файлов
Icon=kmail - отображение иконки в меню (не обязательно, но так красивее)

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

P.S. Извините, если если дал названия немного не точные.
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
reD_Rus
Сообщения: 156
ОС: Fedora 11 64-bit KDE 4.2.4

Re: Редактирование пункт "действия" в контекстном меню

Сообщение reD_Rus »

+1 респект!
мне очень не хвтало этого контекстного меню при миграции конторы на федору
но я выкрутился тем что у КДЕ есть фишка если "бросить" файл на иконку кмайл то он его отправляет
то есть совершается то же самое как и СендТуЕмайл
но ведь так проще! и привечнее юзверям еще испытывающим ломку после иглы МС.
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: Редактирование пункт "действия" в контекстном меню

Сообщение Atragor »

MadDog, огромное спасибо за полезную инфу. Теперь у меня в меню появился параноидальный пунктик shred :)
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

Atragor писал(а):
03.10.2007 21:49
Вот еще на эту тему, но на буржуйском:
Кстати, да, спасибо за ссылочку. Бросил в закладки (потом буду разбираться и читать).
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Редактирование пункт "действия" в контекстном меню

Сообщение olelukoie »

По ходу вопрос: насколько я помню, локализованные строки вида Name[ru]=... должны быть введены в юникоде. Или нет? (Я давно не пользовался Kate и не помню, как (в какой кодировке) он сохраняет текстовые файлы по дефолту...)
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

olelukoie писал(а):
04.10.2007 00:07
он сохраняет текстовые файлы по дефолту
У меня локаль UTF-8, поэтому я особо не парился по этому вопросу. Хотя по уму надо указывать в секции [Desktop Entry] параметр Encoding=UTF-8 Как с другими кодировками - не знаю, тут пробовать и смотреть.
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

MadDog- домашняя выполнена, но не до конца.

Код: Выделить всё

[Desktop Entry]
ServiceTypes=all/all
Actions=SendToEmail;ZipAndSendToEmail
X-KDE-Submenu=SendToEmail
X-KDE-Submenu[ru]=Отправить по почте

[Desktop Action SendToEmail]
Name=SendToEmail
Name[ru]=В исходном виде
Icon=kmail
Exec=kmail %f

[Desktop Action ZipAndSendToEmail]
Name=ZipAndSendToEmail
Name[ru]=Упаковать в ZIP и отправить
Icon=kmail
Exec=/bin/sh -c "ark --add-to %F %f.zip;kmail %f.zip"


Вопросы:
1. как сделать действие - удаления того архива который остался? Ведь он больше не нужен. Я не силен в командах. Поскажите.
2. Можно ли как то прикрутить сюда проверку на "вшивость". Т.е. если пользователь пытается отправить по почте папку - то скрипт ему об этом говорил. А не говорил почтовик как сейчас.

3. Прошу помочь с решением еще одной задачи из Виндоуса. Хочу сделать такой же пункт меню - "отправить ярлык на рабочий стол".
порядок действий - создаем ярлык к файлу и копируем его на рабочий стол. Но как все это сделать?

4. Как вылесть на уровень меню - контекстного? Т.е. подняться из меню "действия". И добавлять свои пункты уже там.

(на вопрос кого либо - зачем все это - отвечу - работа требует быстроты действий. Сокращение каких либо операций даже на секунду уже благо. :-) )

Заранее спасибо.
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

Еще один вопрос - как отделить сабменю полученное в примере выше от других пунктов - разделительной линией? что за команда?
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

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

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

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

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

Как всегда, замечания и дополнения (а может даже и улучшения ;) ) принимаются.
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

Ну блин - писали одновременно. Посему повторюсь.
(отпали некоторые вопросы)

Вопросы:
2. Можно ли как то прикрутить сюда проверку на "вшивость". Т.е. если пользователь пытается отправить по почте папку - то скрипт ему об этом говорил. А не говорил почтовик как сейчас.

3. Прошу помочь с решением еще одной задачи из Виндоуса. Хочу сделать такой же пункт меню - "отправить ярлык на рабочий стол".
порядок действий - создаем ярлык к файлу и копируем его на рабочий стол. Но как все это сделать?

4. Как вылесть на уровень меню - контекстного? Т.е. подняться из меню "действия". И добавлять свои пункты уже там.

Еще один вопрос - как отделить сабменю полученное в примере выше от других пунктов - разделительной линией? что за команда?
Спасибо сказали:
rasweb
Сообщения: 35
ОС: Mandriva

Re: Редактирование пункт "действия" в контекстном меню

Сообщение rasweb »

Проблема с кодом. При больших архивах архиватор не успевает паковать файлы, в то время как kmail уже пытается забрать архив.
Т.е. появляется ошибка "файл не найден"... У меня на core 2 - успевает пролететь только файлики с размером в 120 Кб. На 1М уже ошибка.

Как заставить exec работать по-этапно? Т.е. чтобы следующая часть не начаналась пока не закончиться предыдущая.
Спасибо сказали:
olelukoie
Сообщения: 1248
ОС: Linux, Win

Re: Редактирование пункт "действия" в контекстном меню

Сообщение olelukoie »

rasweb писал(а):
04.10.2007 22:25
3. Прошу помочь с решением еще одной задачи из Виндоуса. Хочу сделать такой же пункт меню - "отправить ярлык на рабочий стол".
порядок действий - создаем ярлык к файлу и копируем его на рабочий стол. Но как все это сделать?

В принципе, эта задача решается точно также, только команда создания файла ярлыка для рабочего стола будет очень длинной из-за содержимого этого самого файла ярлыка (запустите MC, зайдите в директорию ~/Desktop и посмотрите на содержимое файлов с расширением .desktop).
Т.е. в строке Exec=... должно будет иметь место следующее:

Exec=echo -e "[Desktop Entry]\nName=%f\nComment=\nExec=%f\nIcon=%f.png\nTerminal=false ..." > /tmp/%f.desktop; mv /tmp/%f.desktop ~/Desktop

Единственное, с чем наверно придется поиграться - это с правильным распознаванием %f в команде echo. Кроме того, в разделе Exec файла .desktop принято указывать не только имя исполняемого файла, но и полный путь к нему. Этот путь можно получить командой which или pwd, т.е. эта часть строки должна выглядеть как Exec=`which %f`\n или как Exec=`pwd`/%f\n.
Спасибо сказали:
Аватара пользователя
MadDog
Бывший модератор
Сообщения: 2298
Статус: Добрый банщик

Re: Редактирование пункт "действия" в контекстном меню

Сообщение MadDog »

rasweb писал(а):
04.10.2007 22:25
3. Прошу помочь с решением еще одной задачи из Виндоуса. Хочу сделать такой же пункт меню - "отправить ярлык на рабочий стол".
порядок действий - создаем ярлык к файлу и копируем его на рабочий стол. Но как все это сделать?
А собственно зачем? Берём файл или каталог, тащим его на рабочий появляется меню, где и выбираем: копировать, создавать ссылку или перемещать.

rasweb писал(а):
04.10.2007 22:25
Вопросы:
2. Можно ли как то прикрутить сюда проверку на "вшивость". Т.е. если пользователь пытается отправить по почте папку - то скрипт ему об этом говорил. А не говорил почтовик как сейчас.
Надо подумать. У меня были мысли делать проверки, но это, как бы сказать правильнее, уже выходит за рамки простой статьи. :)

rasweb писал(а):
04.10.2007 22:46
что за команда?
_SEPARATOR_ добавляется в Actions

rasweb писал(а):
04.10.2007 22:46
Как заставить exec работать по-этапно? Т.е. чтобы следующая часть не начаналась пока не закончиться предыдущая.
Насколько большие? Проще сначала упаковать из всплывающего меню ark'а в архив, который потом и отправить почтой. А так можно попробовать написать shell-скрипт, где всё это будет учтено.

rasweb писал(а):
04.10.2007 22:25
4. Как вылесть на уровень меню - контекстного? Т.е. подняться из меню "действия". И добавлять свои пункты уже там.
Это уже вряд ли, тут скорее всего надо править сам код. А так читать надо, я этим особо не интересовался.
MadDog's Blog
Внимательно читать: Как правильно задавать вопросы
No fate but what we make
Спасибо сказали:
hello
Сообщения: 3

Re: Редактирование пункт "действия" в контекстном меню

Сообщение hello »

Код: Выделить всё

[Desktop Entry]
Actions=s;s1
ServiceTypes=all/allfiles
X-KDE-Priority=TopLevel

[Desktop Action s]
Exec=echo hihi1
Name[ru]=пункт1
Icon=kmail

[Desktop Action s1]
Exec=echo hihi
Name[ru]=пункт2
Icon=kget

Оба пункта в корневом меню.

А так смотрите файлы в /usr/kde/3.5/share/apps/konqueror/servicemenus/ много интересного :)
Спасибо сказали:
cyxou
Сообщения: 125
ОС: Ubuntu 16.04.1 LTS 64

Re: Редактирование пункт "действия" в контекстном меню

Сообщение cyxou »

как быть в таких случаях у кого гном стоит?
цитата из руководства
Меню Сценарии в GNOME устроено и действует аналогично меню
Действия в KDE. Только если в случае KDE файл контекстного меню
имел определенный формат, то в GNOME это — обычный bash-сцена-
рий. Хорошо это или плохо, зависит от того, хорошо ли вы знаете bash.
Хорошее знание языка командного интерпретатора bash поможет вам
создать очень сложные сценарии, автоматизирующие огромное количе-
ство рутинной работы.
Идея достаточно проста. Вы создаете bash-сценарий и помещаете его в ка-
талог ~/ . g n o m e 2 / n a u t i l u s - s c r i p t s / . В этом каталоге можно создавать
подкаталоги — они будут отображаться как дополнительные меню.

нету такой директории
Это был вопрос;)
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Редактирование пункт "действия" в контекстном меню

Сообщение Rootlexx »

cyxou писал(а):
24.09.2009 21:40
как быть в таких случаях у кого гном стоит?

Пользоваться поиском: « [Решено]Редактирование пунктов в контекстном меню правого клика мышкой ».
Спасибо сказали: