Cómo: ejecutar una aplicación personalizada desde pcmanfm en lubuntu

Cómo: ejecutar una aplicación personalizada desde pcmanfm en lubuntu

Ejecuto Lubuntu 14.04.3 LTS y lo descargué e instalélanzar ahorapara transmitir vídeos desde mi PC a mi Chromecast.
La única alternativa que conozco es hacer esto a través de Videostream usando Chromium. Pero eso usa tantos más recursos que mi pobre y vieja computadora portátil apenas puede soportarlos...
Creo que castnow funciona muy bien. Pero es una herramienta de línea de comandos y para iniciarla tengo que ir a una ventana de terminal y ejecutar:

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

Esto funciona, pero me resultaría mucho más fácil si pudiera navegar hasta el vídeo usando mi administrador de archivos ( pcmanfm) y abrir el vídeo.
Intenté crear un archivo de script que ejecute el comando anterior usando el archivo seleccionado como parámetro de entrada (%f) pero fallé estrepitosamente...

Y mi querido amigo Google no ha podido ayudarme hasta ahora. ¿Alguien puede ayudarme a hacer esto?

Actualización 16 de octubre:

¡Ya casi lo he logrado!

Lo que llevó más tiempo fue encontrar el error en pcmanfm que no ejecuta scripts de shell. El siguiente artículo describe bien esto y ofrece una solución alternativa:https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152

He creado un archivo .desktop que ejecuta un script y pasa el archivo como parámetro. Esto aparece como una opción en el menú y de esa manera también puedes seleccionarlo en pcmanfm.

El script toma el nombre del archivo como parámetro y ejecuta castnow con todos los parámetros. Lamentablemente no funciona.

El script que creé es el siguiente:

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

El resultado es:

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

Y cuando copio el comando a otra ventana de terminal, funciona. ¿Cómo puede ser esto? Y como se puede solucionar.

Otra actualización:

El problema parece estar relacionado con los espacios en el camino. El archivo de escritorio envía la ruta al script bash con el parámetro %u. Y como la carpeta tiene algunos espacios, se convierten a %20. En el script, los convierto nuevamente a "\". Si pruebo mis cosas con un archivo que no tiene espacios, funciona (!!!).

Pero los espacios son parte de la vida. Cómo evitar esto?

Y otra actualización:

¡Lo hice! Con un poco de truco, pero funciona. Agregué algunas líneas en el script para reemplazar todos los espacios por guiones bajos en el sistema de archivos:

#!/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

Funciona y estoy contento con ello. Pero si alguien sabe cómo moverse por los espacios, me encantaría saberlo.

Actualización 18 de octubre:

Descubrí cómo sortear los espacios (y otros caracteres especiales). En primer lugar, descubrí cómo decodificar el parámetro en URL. Pero el truco para evitar los espacios (y otros caracteres especiales) resulta ser agregar 'eval' a la declaración. Entonces, la declaración final en mi script ahora es: eval castnow --address 192.168.0.21 --myip 192.168.0.47 $filename

Eso es todo. El único problema restante es que castnow no parece poder reproducir archivos avi. Creé un problema para esto en github.

Respuesta1

Puede configurar la aplicación predeterminada para el tipo de archivo relevante: haga clic con el botón derecho en un archivo de video, seleccione "Propiedades", cambie la selección "Abrir con" y presione Aceptar.

información relacionada