При клике правой кнопкой на файлах, в выпадающее меню можно добавлять собственные пункты. Для этого надо создать специальные .desktop файлы по следующим путям:
В KDE 3 ~/.kde/share/apps/konqueror/servicemenus/
В KDE 4 ~/.kde/share/kde4/services/ServiceMenus/
Вот пример пункта меню для отправки файла через блютуз в KDE 4. Поскольку родной блютуз остался выкидышем современных технологий, я использую программу отправки из гнома.
[Desktop Entry]
Type=Service
Actions=bluetooth;
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
X-KDE-Priority=TopLevel
[Desktop Action bluetooth]
Exec=gnome-obex-send %U
Icon=preferences-system-bluetooth
Name=Отправить через bluetooth
Теперь немного пояснений.
Раздел [Desktop Entry]
Type - тип .desktop файла должен быть Service.
Actions - тут через точку с запятой перечисляются действия (action1;action2;), каждому из которых должен соответствовать раздел ([Desktop Action action1], [Desktop Action action2]).
ServiceTypes - mime-типы файлов, перечисляются через запятую, all/allfiles соответствует всем файлам, all/all всем файлам и каталогам, KonqPopupMenu/Plugin - без этого срабатыает не на всех типах файлов.
X-KDE-Priority - это нужно для kde4, я не совсем понял для чего.
X-KDE-Submenu=подменю - этот параметр следует добавить, если хочется заключить действия в отдельное подменю с именем "подменю".
Раздел [Desktop Action имя]
Exec - команда на запуск, %U является именем файла, на котором мы вызвали меню.
Icon - имя иконки.
Name - текст, отображаемый в качестве пункта меню.
Если необходимо создать пункт для всех пользователей, а не только для текущего, то создаем файлы не в ~/.kde/, а в /usr/ по аналогичным путям.
Комментарии (41)
Отлично. ТО есть можно теперь сделать "отправить на usb диск"
Можно, если ты сможешь составить команду для копирования на юсб. Еще, думаю, полезным было бы сделать пункты: открыть папку под рутом и редактировать под рутом. Если кто-то изобретет полезную команду, то выкладывайте, может пригодится обществу.
[Desktop Entry]
Type=Service
Actions=editAsRoot;
ServiceTypes=KonqPopupMenu/Plugin,all/all
X-KDE-Priority=TopLevel
[Desktop Action editAsRoot]
Exec=kdesu kwrite %U
Icon=kate
Name=Редактировать под рутом
Да сложного-то нету. Только я немного не представляю, как организовать код, чтобы был показ нескольких девайсов (если такие есть)
Наверное, только если сканить устройства чем-нить и создавать .desktop файлы при нахождении.
Можно установить вот этот пакет (jaunty) и появится вкладка контекстного меню "Действия root" с кучей всяких функций
ВО, спасибо! =) В тему! Вот, как раз, нужно было это.
1)
зашифровать файл с паролем "123",
расшифровать с паролем "123".
Если дома под линуксом, ещё можно думать о безопасности.
То носимые на флешке файлы всегда рискуют быть потерянными в чужие руки...
2) перекодировку содержимого html страницы(любого текстового файла) из одной кодировки (западно-европейской например) в другую (UTF-8 - навсегда). Тоже самое касаемо mp3 тегов.
3) затереть место занимаемое этим файлом нулями или хламом, дабы не позволить восстановить этот файл никакими средствами.
4) получить хеш этого файла (e2k, md5sum, torrent-хеш и т.п.)
ещё применения можно придумать, кто-бы реализациями поделился.
Опять-же, ничего сложного, разве что с шифрованием проблемки будут.
Я имел в виду, делиться готовыми файлами ;)
Конечно, в основных случаях, стандартной работы не хватит. Поэтому придется прилаживать программы. Например, скрипты на питоне.
Сам искал такую функцию и нашел реализацию.
Немного переделал уже готовый пункт под себя:
#Sends items to the shred command.
#Made by Josh Barrick
#~/.kde4/share/kde4/services/ServiceMenus/
#Enjoy! Any sugggestions can be mailed to [email protected]
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=all/allfiles;
Actions=Shred
X-KDE-Submenu=Shred
[Desktop Action Shred]
Name=Удалить навсегда
Icon=trash-empty
Exec=shred -u -f -z -n7 %u
Поясню значения команды shred:
-u -n7 - удалить файл после перезаписи с n=7 проходами перезаписи (по умолчанию 25 проходов)
-f - изменить права для разрешения записи, если необходимо
-z - прячет «следы зачистки», добавляя в конце файла нули
Единственное ограничение: shred работает только с файлами и не может удалять папки + не всегда корректно работает с ext3/ext4
Могу взяться за все это по списку. Например, получение хешей, затирание, шифрование.
Если, конечно, это кому-то надо.
Вообще я написал, то, что по жизни постоянно было нужно или было использованно из других программ.
Для Soi-Fong - Я написал, свои предложения тем гуру, которые за 3 секунды придумают реализацию, но вот куда эту
реализацию применить пока не знают :-)
Для перекодировки mp3, можно прикрутить указанный конвеер програм под реалии одного файла(того самого, поторый будет под правой кнопкой)
find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1
Взято из темы про Амарок: http://kubuntu.ru/amarok.html
Открытие папки под рутом:
[Desktop Entry]
Type=Service
Actions=OpenAsRoot
ServiceTypes=KonqPopupMenu/Plugin,inode/directory
X-KDE-Priority=TopLevel
[Desktop Action OpenAsRoot]
Exec=kdesu dolphin %U
Icon=system-file-manager
Name=Открыть как root...
А как сделать так, чтобы пункты контекстного меню появлялись не только при щелчке на файл или папку, но и при щелчке на рабочем столе, например, для запуска часто используемых программ, типа текстового процессора или mc? И есть ли где-то список всевозможных ServiceTypes?
Цитата от сюда: http://hell11.net/content/view/22/88888893/
В файл 7z.desktop заносим следующие строчки:
[Desktop Entry]
ServiceTypes=all/allfiles,inode/directory
Encoding=UTF-8
Actions=Create7zArhive
[Desktop Action Create7zArhive]
Name[ru]=Создать архив *.7z
Exec=7z a %u.7z %u
Icon=ark
А в файл un7z.desktop заносим следующие строчки:
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=application/x-7z
Actions=Unpacking7zArhive
[Desktop Action Unpacking7zArhive]
Name[ru]=Распаковать архив *.7z
Exec=7z e %F
Icon=ark
а нету такой же инструкции, только для кде4 ? :)
Вот еще идейка:
~/.kde/share/kde4/services/ServiceMenus/mount_iso.desktop
[Desktop Entry]
ServiceTypes=application/x-iso
Actions=MountISO
[Desktop Action MountISO]
Name=Mount ISO at /media/iso/
Exec={гуевое sudo} mount -o loop -t iso9660 %U /media/iso/
TODO:
- собственно "гуевое sudo" -- никогда не приходилось юзать;
- авто-создание папки /media/iso, если такой нет.
Еще неск. идей на все ту же тему:
- Создание ISO-образа из выбраных файлов/папок (using mkisofs)
- Запись ISO-образа на диск (using cdrecord)
Отличная заметка! Спасибо :) Буду пробовать.
никто не подскажет, почему это не работает в кубунту 8,10 кде4,2,1 ?
просто ругается и открывает арк
Для KDE 4 нужно исправить вот так:
Типы файлов можно узнать в свойствах любого файла, нажав на кнопку с ключом, будет написан вверху под заголовком
а можно как то енто прикрутить к кблютузу??или какой пакет установить для гномового блютуза?я нашел только bluez, но как им поользоваться не могу понять(его даже в меню нет)
Понравилась идея, сел за пункт "Отправить на съемное устройство". Вечерком, надеюсь, докурю это дело! Всвязи с этим появился вопрос: как можно отследить подключение/отключение съемного устройсва?
Я пока использую в качестве этого команду mount, в которой определяю примонтированные флешки, но может быть это можно сделать более красивым(удобным) способом?))
Вобщем, доделал я пункт меню "Отправить на съемное устройство". Взять его (в архиве) можно здесь.
Скрипт check-devices.sh нужно добавить в автозагрузку. Этот скрипт с интервалом в 1 сек. сканирует подмонтированные в папку /media устройства. Если происходят какие-либо изменения со списком, то запускается скрипт add-sendto-items.sh, который находится в этойм же каталоге - он формирует файл /home/`whoami`/.kde/share/kde4/services/ServiceMenus/SendTo.desktop с описанием меню.
На всякий случай приведу коды скриптов
1. check-devices.sh:
#!/bin/bash
OldState=
#Бесконечный цикл. В нем с интервалом в 1 секунду сканируем подмонтированные в папку /media устройства. Если происходят ккие-либо изменения со списком, то запускаем скрипт add-sendto-items.sh, который находится в этойм же каталоге.
while [ 1 ]; do
NewState=`mount | awk '{print $3}' | grep "^\/media"`
if [ "$NewState" != "$OldState" ]; then
./add-sendto-items.sh
fi
OldState=$NewState
sleep 1
done
exit 0
2. add-sendto-items.sh:
#!/bin/bash
ListOfItems=
#Получаем список примонтированных устройств. Выбираются устройства, смонтированные в папку /media
ListOfDevices=`mount | awk '{print $3}' | grep "^\/media"`
#Далее составляем последовательность имен устройств, разделенных символами ";". Результат помещаем в переменную $Actions
for Device in $ListOfDevices; do
Actions+="`echo $Device | sed 's/^\/.*\///'`;"
done
#Отправляем в файл SendTo.desktop раздел [Desktop Entry]
echo -e "[Desktop Entry]\nType=Service\nActions=$Actions\nServiceTypes=KonqPopupMenu/Plugin,all/all\nX-KDE-Priority=TopLevel\nX-KDE-Submenu=Отправить на съемное устройство" >/home/`whoami`/.kde/share/kde4/services/ServiceMenus/SendTo.desktop
#А затем перебираем все обнаруженные устройства и формируем для них разделы [Desktop Action $Name], которые тут же добавляем в файл SendTo.desktop
for Device in $ListOfDevices; do
Name=`echo $Device | sed 's/^\/.*\///'`
echo -e "\n[Desktop Action $Name]\nName=$Name\nIcon=/usr/share/icons/default.kde4/48x48/devices/drive-removable-media-usb.png\nExec=cp %U $Device" >>/home/`whoami`/.kde/share/kde4/services/ServiceMenus/SendTo.desktop
done
exit 0
Спасибо за старания ;)
А не проще это сделать в привязках файлов в центре управления? Задал расширение, указал чем открывать + параментры и ВУАЛЯ! По моему так проще.
Не всегда. По-моему, там указывается только программа, открывающая файл/приложение при двойном клике на нем. А вот если надо добавить именно действие, например, открыть текстовый файл в редакторе с правами рута...вы ж его не всегда с такими правами захотите откыть...Это и хочется сделать опционально!
Ребят, все вы молодцы и всё это классно.
Подскажите, пожалуйста, где почитать про всё это подробнее, желательно на русском.
Устанавливал Mandriva 2010 в режиме ручной выборки пакетов. За ненадобностью не ставил огромную часть софта, который предлагается по умолчанию. В том числе и Konqeror. При клике правой кнопкой мыши на рабочем столе или в Dolphin в контекстном меню есть пункт СОЗДАТЬ, а в нём подпункт ССЫЛКА НА УСТРОЙСТВО... И больше ничего.
Как с нуля создать все нужные подпункты, типа создать текстовый файл, папку, блочное устройство, символьное устройство и т.п.?
Где хотябы это изучить можно?
Благодарю.
Смотри сюда --> http://kubuntu.ru/node/4905
есть нужда конвертить видео файлы таким образом. Но как выводить прогресс и другую инфу?
Вот для конвертации ID3 тегов в Unicode:
[Desktop Entry]
Type=Service
Actions=KonvertTag;
ServiceTypes=KonqPopupMenu/Plugin,audio/mpeg
X-KDE-Priority=TopLevel
[Desktop Action KonvertTag]
Name=Конвертировать ID3 теги в UTF-8
Exec=mid3iconv -eCP1251 %U
А вот для расчета контрольной суммы MD5:
[Desktop Entry]
Type=Service
Actions=ShowMD5Sum;
ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
X-KDE-Priority=TopLevel
[Desktop Action ShowMD5Sum]
Name=MD5 сумма
Exec=md5sum %U | xargs -0 kdialog -msgbox
Возник вопрос: допустим, я хочу чтобы программа запускалась в терминале (важен ее вывод) -- есть ли спец. директива на этот счет?
Вот текущий вариант (к сожалению, несмотря на 'Terminal=true', волшебного появления терминала не происходит):
[Desktop Entry]
ServiceTypes=KonqPopupMenu/Plugin,video/*
Actions=convert2ipod4x3;convert2ipod16x9;
Type=Service
X-KDE-Submenu=Convert to iPod
X-KDE-Submenu[ru]=Конвертировать для iPod
[Desktop Action convert2ipod4x3]
Name=Ratio 4x3
Name[ru]=Пропорции 4x3
Icon=gtkpod
Exec=/usr/local/bin/ipod4x3 %u `kdialog --getsavefilename ~/Movies/iPod/new.mp4 *.mp4`
Terminal=true
[Desktop Action convert2ipod16x9]
Name=Ratio 16x9
Name[ru]=Пропорции 16x9
Icon=gtkpod
Exec=/usr/local/bin/ipod16x9 %u `kdialog --getsavefilename ~/Movies/iPod/new.mp4 *.mp4`
Terminal=true
Exec=konsole -e /usr/local/bin/ipod4x3 %u `kdialog --getsavefilename ~/Movies/iPod/new.mp4 *.mp4` будет строчка команды
Если Вам не принципиально важно разбираться с пунктами меню и чего там не работает, то:
~$ aptitude install kde-service-menu-fuseiso
то что нужно спасибо
Воспроизведение в VLC player каталога CD/DVD video или музыки
[Desktop Entry]
Type=Service
Actions=Play;
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,all/all
X-KDE-Priority=TopLevel
[Desktop Action Play]
Name=Play with VLC Player
Name[bg]=Изпълнение на с VLC
Name[en_GB]=Play with VLC Player
Name[ru]=Воспроизведение в VLC Player
Name[uk]=Грати програвачем VLC
Icon=vlc
Exec=vlc "%u"
А каким образом можно добавить контекстное меню в KMail?
Вот в usr/share/templates нашел файл soffice.odt.desktop вот его содержание :
[Desktop Entry]
Name=LibreOffice Writer ...
Comment=Enter LibreOffice Writer filename:
Comment[de]=Name der LibreOffice Writer-Datei eingeben:
Type=Link
URL=.source/soffice.odt
Icon=libreoffice-oasis-text
подскажите пожалуйста что менять.
Я Вам на форуме убунты уже написал.
Отправить комментарий