LINUX.ORG.RU

xdg+регулярные выражения.


0

0

Возникла довольно специфичная задача. С помощью амарока (или другого плеера) проиграть файлы с определённым расширением, находящимся в директории. Через консоль это делается на раз, но как сделать это с помощью средств freedesktop (очень хочется сделать это в dolphin). Не долго думаю создал файл amarok_add_mp3.desktop с нужным содержимом, добавил строчку Exec=amarok %F/*.mp3. Казалось, задача решена, но опять облом desktop-file-validate выводит ошибку:

/usr/share/applications/amarok_add_mp3.desktop: error: value "amarok %F/*.mp3" for key "Exec" in group "Desktop Entry" contains a reserved character '*' outside of a quote

Пытался сделать так Exec=amarok "%F/*.mp3" но всё равно не работает. Отюда вопрос, можно ли как-то обойти это ограничение freedesktop?

Ответ на: комментарий от php-coder

>А так?

Пишет, что файл "amarok весь путь/*.mp3" не найден.

truetester
() автор топика

Очевидно, эти команды исполняет не шелл, а значит подстановки типа "*" не работают.

Есть два пути:

1) Вызывать sh -c "amarok %F/*.mp3" (чтобы эту команду выполнял шелл, и подставил файлы вместо *).

2) Написать скрипт amarok_add_dir_mp3.sh, который будет вызывать amarok $1/*.mp3, и в .desktop прописать /home/user/bin/amarok_add_dir_mp3.sh %F.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

Уже пробовал, но тогда строка почему-то отправляется в "сыром" виде. Пробелы не экранируются и подстановка не работает.

truetester
() автор топика
Ответ на: комментарий от Davidov

$desktop-file-validate amarok_add_mp3.desktop

amarok_add_mp3.desktop: error: value "sh -c 'amarok "%F"/*.mp3'" for key "Exec" in group "Desktop Entry" contains a reserved character ''' outside of a quote
amarok_add_mp3.desktop: error: value "sh -c 'amarok "%F"/*.mp3'" for key "Exec" in group "Desktop Entry" contains a reserved character '*' outside of a quote
amarok_add_mp3.desktop: error: value "sh -c 'amarok "%F"/*.mp3'" for key "Exec" in group "Desktop Entry" contains a reserved character ''' outside of a quote

truetester
() автор топика

> Возникла довольно специфичная задача

Нуби детектед

dilmah ★★★★★
()
Ответ на: комментарий от Davidov

Экранирование происходит каким-то непонятным мне образом. Например \* приводит к пустому символу. Но проблема разрешилась вот такой строкой:

sh -c "amarok '%F'/*.mp3"

Непонятно, почему оно так не заработало sh -c 'amarok "%F"/*.mp3' Но всё равно спасибо. Идея с sh очень помогла.

truetester
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.