Как: выполнить пользовательское приложение из pcmanfm в lubuntu

Как: выполнить пользовательское приложение из pcmanfm в lubuntu

Я использую Lubuntu 14.04.3 LTS, я скачал и установилкастнаудля потоковой передачи видео с моего ПК на Chromecast.
Единственная альтернатива, которую я знаю, — это сделать это через Videostream с использованием Chromium. Но это потребляет так много ресурсов, что мой бедный старый ноутбук едва справляется с этим...
Я обнаружил, что castnow работает очень хорошо. Но это инструмент командной строки, и чтобы запустить его, мне нужно перейти в окно терминала и выполнить:

castnow --address [ip address chromecast] --myip [localip] [path to video]

Это работает, но мне было бы гораздо проще, если бы я мог перейти к видео с помощью моего файлового менеджера ( pcmanfm) и открыть видео.
Я пытался создать файл скрипта, который запускает указанную выше команду, используя выбранный файл в качестве входного параметра (%f), но я потерпел неудачу...

И мой дорогой друг Google пока не смог мне помочь. Может ли кто-нибудь помочь мне сделать это?

Обновление 16 октября:

Я почти это сделал!

Больше всего времени заняло нахождение ошибки в pcmanfm, из-за которой он не выполняет скрипты оболочки. Следующая статья хорошо описывает это и дает обходной путь:https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152

Я создал файл .desktop, который выполняет скрипт и передает файл в качестве параметра. Это отображается как опция в меню, и таким образом вы также можете выбрать его в pcmanfm.

Скрипт принимает имя файла как параметр и запускает castnow со всеми параметрами. К сожалению, это не работает.

Скрипт, который я создал, выглядит следующим образом:

filename=$1
filename=${filename:7:$((${#filename}-7))}
filename=${filename//%20/\\ }
echo castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename

Результат:

castnow --address 192.168.0.21 --myip 192.168.0.47 /home/joost/Videos/American\ Horror\ Story\ Season\ 1\ Complete\ 480p\ BZINGAZ/american.horror.story.s01e11.720p.hdtv.x264-compulsion.mkv
Error: Load failed

А когда копирую команду в другое окно терминала - работает. Как такое может быть? И как это можно решить.

Еще одно обновление:

Проблема, похоже, связана с пробелами в пути. Файл рабочего стола отправляет путь в скрипт bash с параметром %u. И поскольку в папке есть пробелы, они преобразуются в %20. В скрипте я преобразую их обратно в "\ ". Если я тестирую свой материал с файлом, в котором нет пробелов, то все работает (!!!).

Но пространства — это часть жизни. Как это обойти?

И еще одно обновление:

Я сделал это! С небольшими уловками, но это работает. Я добавил несколько строк в скрипт, чтобы заменить все пробелы на подчеркивания в файловой системе:

#!/bin/bash
# replace all spaces by underscores in the Videos-folders and -files:
find /home/joost/Videos/ -name "* *" -type d | rename 's/ /_/g'    # do the directories first
find /home/joost/Videos/ -name "* *" -type f | rename 's/ /_/g'
filename=$1
# remove file:// from the file-variable:
filename=${filename:7:$((${#filename}-7))}
# new films may contain spaces in the path. They have been replace by underscores. This also needs to happen in the parameter:
filename=${filename//%20/_}
# now we are ready to go:
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
read

Это работает, и я доволен. Но если кто-то знает, как обойти эти пространства, я был бы рад узнать.

Обновление 18 октября:

Я узнал, как обойти пробелы (и другие специальные символы). Прежде всего я узнал, как urldecode параметра. Но трюк, чтобы обойти пробелы (и другие специальные символы), заключается в добавлении 'eval' к оператору. Так что последний оператор в моем скрипте теперь такой: eval castnow --address 192.168.0.21 --myip 192.168.0.47 $filename

Вот и все. Единственная оставшаяся проблема в том, что castnow, похоже, не может воспроизводить файлы avi. Я создал проблему на github.

решение1

Вы можете задать приложение по умолчанию для соответствующего типа файла: щелкните правой кнопкой мыши видеофайл, выберите «Свойства», измените выбор «Открыть с помощью» и нажмите «ОК».

Связанный контент