Всем привет.
В общем есть такая классная функция у WinAmp в Windows - добавить папку в проигрыватель. После чего все музыкальные файлы в папке и подпапках добавляются к списку.
Мне надоело бегать с Амароком по папкам - решил тоже сделать аналогичное (хотя, вероятно и можно из Амарока запускать - я привык из окна файлового менеджера).
Т.е. есть команда:
find /home/diman/music -name *mp3 -exec amarok -e {} \;
Добавляет музыку (mp3) из папки music и всех подпапок в Амарок.
Вот как бы добавить в контекстное меню KDE пункт, который вызывал бы эту bash-команду применительно к выделенной папке (или хотя бы текущей)?
P.S.: да, посмотрел, из Амарока можно добавить целую папку, но не суть важно ))
Добавить команду в контекстное меню KDE (добавление музыки в Amarok)
Модератор: Модераторы разделов
-
KDimanB
- Сообщения: 143
- ОС: Debian (squeeze), Slax LiveCD
-
Denjs
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Добавить команду в контекстное меню KDE
если в лоб - то можно "открыть в" и выбрать ваш bash скрипт с указанием "запомнить" ...
но вообще конечно хотелось бы узнать решение о том как добавить "пунктик" программно и в "коренное меню" контекстного меню ))
но вообще конечно хотелось бы узнать решение о том как добавить "пунктик" программно и в "коренное меню" контекстного меню ))
-
KDimanB
- Сообщения: 143
- ОС: Debian (squeeze), Slax LiveCD
Re: Добавить команду в контекстное меню KDE
Гм...
В общем инструкция есть тут:
http://developer.kde.org/documentation/tut...rvicemenus.html
Я создал файлик "amarok-add-directory.desktop", кинул его в "/home/diman/.kde/share/apps/konqueror/servicemenus/". Внес в него код:
сохранил. KDE все это моментально подхватывает. Т.е. реально моментально - любое изменение в файле тут же фиксируется (ну в смысле при вызове контекстного меню, что не суть важно).
И действительно - при нажатии на папку появился пункт - "Add to Amarok". Моей радости не было бы предела, если бы это еще работало
Программирования тут, как выяснилось - фактичеси не оказалось
Хм, что же тут не работает... о_О
***
Тааак... кажется команда не принимает путь %U, потому что если в нём есть пробелы (а я тестил ан таких папках) - ничего не происходит.
***
Ах вот оно что.
Он не добавляет если открыто окно со строкой пути вида:
"system:/media/hda5"
А так все работает вроде ^_^
В общем инструкция есть тут:
http://developer.kde.org/documentation/tut...rvicemenus.html
Я создал файлик "amarok-add-directory.desktop", кинул его в "/home/diman/.kde/share/apps/konqueror/servicemenus/". Внес в него код:
Код: Выделить всё
[Desktop Entry]
ServiceTypes=inode/directory
Actions=addDir
[Desktop Action addDir]
Name=Add to Amarok
Exec=/bin/sh -c "find %U -name *mp3 -exec amarok -e {} \;"сохранил. KDE все это моментально подхватывает. Т.е. реально моментально - любое изменение в файле тут же фиксируется (ну в смысле при вызове контекстного меню, что не суть важно).
И действительно - при нажатии на папку появился пункт - "Add to Amarok". Моей радости не было бы предела, если бы это еще работало
Программирования тут, как выяснилось - фактичеси не оказалось
Хм, что же тут не работает... о_О
***
Тааак... кажется команда не принимает путь %U, потому что если в нём есть пробелы (а я тестил ан таких папках) - ничего не происходит.
***
Ах вот оно что.
Он не добавляет если открыто окно со строкой пути вида:
"system:/media/hda5"
А так все работает вроде ^_^
-
KDimanB
- Сообщения: 143
- ОС: Debian (squeeze), Slax LiveCD
Re: Добавить команду в контекстное меню KDE
В общем вот итоговый код (в поиске теперь iname, плюс выдрал откуда-то наобум значок Амарока):
Все бы ничего, но надо бы как-то к поиску теперь прикрутить еще ogg, flac, wma.
Подскажите, пожалуйста!
Код: Выделить всё
[Desktop Entry]
ServiceTypes=inode/directory
Actions=addDir
[Desktop Action addDir]
Name=Add to Amarok
Icon=/usr/share/icons/hicolor/16x16/apps/amarok.png
Exec=/bin/sh -c "find %U -iname *mp3 -exec amarok -e {} \;"Все бы ничего, но надо бы как-то к поиску теперь прикрутить еще ogg, flac, wma.
Подскажите, пожалуйста!
-
Denjs
- Сообщения: 1685
- ОС: SuSe 10.2
Re: Добавить команду в контекстное меню KDE
о! спасибо за прямую инфу по контекстному меню)
>> прикрутить еще ogg, flac, wma.
>>"find %U -iname *mp3 -exec amarok -e {} \;"
судя по ману на find, можно поиграться с регулярными выражениями и вместо -iname использовать -regex
но по регулярным выражениям я вам ничего не подскажу.
>> прикрутить еще ogg, flac, wma.
>>"find %U -iname *mp3 -exec amarok -e {} \;"
судя по ману на find, можно поиграться с регулярными выражениями и вместо -iname использовать -regex
но по регулярным выражениям я вам ничего не подскажу.
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Добавить команду в контекстное меню KDE
ну если регулярки использовать, то тогда надо:
(.+mp3)|(.+ogg)|(.+wma)
Ну, думаю суть ясна
"()" - это группировка, "." - любой символ, "+" - повторяется 1 или болеее раз, "|" - операция "или".
(.+mp3)|(.+ogg)|(.+wma)
Ну, думаю суть ясна
-
KDimanB
- Сообщения: 143
- ОС: Debian (squeeze), Slax LiveCD
Re: Добавить команду в контекстное меню KDE
Что-то не работает, или я не правильно вставляю 
Код: Выделить всё
Exec=/bin/sh -c "find %U -iregex (.+mp3)|(.+ogg)|(.+wma) -exec amarok -e {} \;"-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Добавить команду в контекстное меню KDE
Посмотрел как этот find работает... там по умолчанию стиль регулярок - емакса, не знаю, что там отличается, но действительно не работает, предложу просто установить стиль в POSIX:
кавычки нужны для сложных выражений.
Код: Выделить всё
find %U -regextype posix-extended -iregex "(.+mp3)|(.+ogg)|(.+wma)" ...кавычки нужны для сложных выражений.
-
Rootlexx
- Бывший модератор
- Сообщения: 4471
- Статус: GNU generation
- ОС: Debian GNU/Linux
Re: Добавить команду в контекстное меню KDE
Ну так не используйте %U. На этом месте можно ставить следующие буквы: u, f, d — причём если они будут в верхнем регистре, то вместо них будет подставляться список выделенных файлов/каталогов в одну команду, а если в нижнем — команда будет вызываться для каждого файла в отдельности. Означают буквы следующее:
Код: Выделить всё
%f, %F — элемент/список элементов в виде file:///путь;
%u, %U — URI элемента (как отображается, то есть может быть и file:/, а может и ftp:/, settings:/, media:/ и так далее);
%d, %D — каталог/список каталогов, в которых находятся открываемые элементы; формат аналогичен f.Правда, я натыкался на неприятный баг: элементы с %f и %d просто не отображались в контекстном меню для таких протоколов как system:/ и media:/. Не в курсе, как там дела сейчас обстоят, возможно, починили.