Creando una acción para #Nemo

Saludos comunidad, hoy vengo con un post sobre un tema que para mí es algo bastante genial que poseen algunos gestores de Archivos de GNU/Linux y es la posibilidad de extender sus funcionalidades mediante extensiones, acciones o scripts.

Desde hace un tiempo ya he estado usando #Linux Mint, pero una de las cosas que no me gustaba, es que la extensión que existía antes que permitía Enviar archivos hacia un dispositivo bluetooth desde Nemo, dejó de estar disponible desde el menú contextual, por lo que se me hacía algo incómodo cada vez que tenía que enviar algo desde la laptop hacia algún dispositivo usando Bluetooth.

Es por eso que me puse a ‘tarequear‘ un poco en los archivos del sistema y me decidí a crear una acción para Nemo, que me permitiera enviar los archivos seleccionados desde el gestor de archivos hacia un dispositivo mediante Bluetooth.

En este post además de compartirles la acción que he hecho para que la puedan usar, pretendo además introducirlos un poco en el mundo de las acciones de Nemo para que puedan crear las suyas propias.

Anatomía de una Acción para Nemo

Una acción para Nemo o Nautilus no es más que un archivo de texto con una estructura y sintaxis específicas, que es interpretada por el gestor de Archivos.

El archivo de una acción se estructura de la siguiente manera:

Se encabeza el archivo con una línea con el texto [Nemo Action], que indica al gestor de archivos que esta corresponde con una acción y no con otra cosa.

[Nemo Action]

Luego se ponen el resto de las opciones.

Name = Enviar por bluetooth…

Esta línea indica el texto que aparecerá en el menú contextual. La opción Name, puede además ser traducida, correspondiendo el valor por defecto al idioma Inglés. Si se quisiera dar soporte al español y al inglés, sería de la siguiente manera.

Name = Send files by bluetooth…
Name[es] = Enviar por bluetooth...

La opción “Comment” establece un texto descriptivo para la acción. Este texto se mostrará al situar el puntero sobre la acción. Al igual que la propiedad “Name”, también puede ser internacionalizada como ya se explicó antes.

Comment = Envía el archivo seleccionado por bluetooth

La opción “Exec” es una de las más importantes de la Acción, ya que define el comando a ejecutar por la acción al hacer click sobre ella. Esta directiva es obligatoria para que la Acción se considere válida.

En los comandos pueden usarse un conjunto de comodines disponibles desde Nemo, para obtener información necesaria. A continuación se listan dichos comodines.

%U – Inserta la dirección URI de la lista de archivos seleccionados

%F – Inserta la ruta completa de la lista de archivos seleccionados

%P – Inserta la ruta padre del archivo seleccionado. (El directorio actual)

%f  – Nombre del primer archivo seleccionado

%p – Nombre del directorio padre

%D – Ruta hacia el dispositivo (Por ejemplo /dev/sdb1)

En nuestro caso para la opción exec usaremos un programa que se llama bluetooth-sendto que recibe la lista de archivos que se quiere enviar por parámetro. Por lo que la línea quedaría de la siguiente manera:

Exec = bluetooth-sendto %F

La directiva “IconName” define el nombre del ícono que identificará a la acción en el menú contextual. Este nombre debe corresponderse con un de los nombre existentes en el tema de íconos actual.

Icon-Name = send-to-symbolic

La opción “Selection” define si se muestra la acción o no en dependencia del modo de selección de los archivos. O sea si se va permitir la selección de múltiples archivos (m), de un único archivo (s), de cualquier archivo (any), al menos uno (notnone), o ninguno seleccionado (none) o también puede especificar un número que indique la cantidad de archivos seleccionados (2). En nuestro caso por ejemplo, decidimos que la acción se muestre cuando exista al menos un archivo seleccionado.

Selection = notnone

La propiedad “Extensions” define con que tipos de archivo se hará visible nuestra acción. Las extensiones pueden ser definidas como una lista separadas por espacios y termina con un punto y coma. Además pueden usarse algunos comodines como los siguientes.

“dir” – solo para los directorios o carpetas

“none” – para ninguna extensión

“nodirs” – cualquier extensión pero no incluye los directorios.

“any” – para cualquier tipo de archivo incluyendo os directorios

En nuestro caso, vamos a permitir enviar cualquier tipo de archivos, pero no los directorios. Por lo que nuestra línea quedaría

Extensions = nodirs;

La propiedad “Dependencies” especifica algún programa del que depende nuestra Acción.

Por ejemplo en nuestro caso para poder enviar los archivos por bluetooth se usa un programa llamado “bluetooth-sendto”, por lo que sería conveniente ponerlo como una dependencia para la que la acción solo se muestre si este programa está instalado en el PC. Pueden especificarse varias dependencias, separando por una coma los nombre y terminando la lista con un punto y coma.

Dependencies = bluetooth-sendto;

Existen otras muchas más directivas que se pueden configurar en la extensión pero esas las pueden ver con más detalle en el archivo de ejemplo que brinda Nemo para la creación de las acciones y que está en la ruta /usr/share/nemo/actions/sample.nemo.action

Ya con esto tenemos lista una Acción para enviar archivos por bluetooth desde Nemo.

Descarga

El archivo debería quedar como el que sigue en la siguiente descarga:

tow3r-bluetooth_send.nemo_action.zip (23 descargas)

Instalando la acción

Instalar la acción en Nemo es tan sencillo como copiar el archivo descargado en la carpeta /home/user/.local/share/nemo/actions.

Luego debe reiniciar Nemo para que la acción se muestre correctamente.

Ya con eso la próxima vez que abra Nemo y seleccione algún archivo verá que al dar clic derecho tendrá una opción llamada Enviar por bluetooth.

Y eso es todo, espero que les sea de utilidad a los que usen con frecuencia el bluetooth para transferir archivos  a sus dispositivos. Cualquier duda, nos vemos en los comentarios. EOF 😉