viernes, 18 de octubre de 2013

Añadir acciones al menú contextual de Nemo

El menú contextual en un administrador de archivos es la ventana que se abre cuando hacemos clic con el botón secundario del ratón al seleccionar un directorio o archivo y que varia según el tipo de archivo o directorio seleccionado. Cuando abrimos el menú contextual pinchando con el botón derecho del ratón (el izquierdo si lo tienes configurado para zurdos) obtenemos una ventana en la que se encuentran multitud de opciones/acciones como crear una carpeta o acceso directo, comprimir un archivo, copiar, mover, eliminar , ejecutar scripts, abrir con...etc, y todo esto podremos hacerlo directamente y sin tener que abrir con antelación el programa implicado en la acción seleccionada.

Tanto en Nautilus como en Nemo aparecen por defecto una serie de opciones que realizan acciones predeterminadas; podemos añadir nuevas acciones al menú contextual.

En Nautilus se pueden añadir acciones al menú contextual instalando desde Synaptic el paquete nautilus-actions, y ejecutando la interfaz gráfica de dicho programa: /usr/bin/nautilus-actions-config-tool  (ver mas detalles en  añadir acciones al menú contextual/)

Sintaxis general de una nueva acción en el menú contextual en Nemo:

En Nemo no existe el paquete nemo-actions, pero a partir de Cinnamon 1.8, podemos añadir “acciones” en el menú contextual de Nemo si las añadimos al directorio: /usr/share/nemo/actions (Si se guardan ahí estarán disponibles para todos los usuarios) o al directorio /home/usuario/.local/share/nemo/actions ( en este caso estarán disponibles solo para ese usuario; con lo que se puede hacer que distintos usuarios tengan distintas acciones añadidas en el menú contextual de Nemo). Para ello creamos en esos directorios un archivo de texto con el nombre general: extensión.nemo_action , y el contenido con la sintaxis que se explica a continuación.

Vamos a ver un resumen de la sintaxis de una nueva acción en el menú contextual en Nemo, con un ejemplo, la acción Abrir_Videolan.nemo_action, como explicación y ayuda ( en verde he puesto cada uno de los campos que forman la sintaxis de este archivo, y a continuación,entre paréntesis una pequeña explicación)::

[Nemo Action]
Active=true
Name=Abrir  Videolan  (sera el nombre del menú contextual que aparecerá en Nemo)
Comment=abrir videolan  ( Comentario que aparece en la barra de estado de Nemo; podemos poner lo que queramos  )
Exec=vlc        ( ejecutable del programa que queremos que se ejecute; en este caso Videolan)
Icon-Name= vlc ( aparece el icono de videolan; si no ponemos nada no aparece ningún icono)
Selection=S    ( S si queremos usar la acción con un solo archivo, o M con múltiples archivos; o Any  - con la A en mayúscula - si queremos que se ejecute tanto si seleccionamos uno o múltiples)
Extensions=avi;mpg;flv;mp4;mp3;ogg;  ( extensiones de los archivos sobre los que aparecerá la nueva acción; si se quiere que se ejecute la acción con un archivo con una extensión cualquiera hay que poner Extensions=any - en minúsculas )

Con lo que desde Nemo seleccionando un archivo que tenga una de las extensiones indicadas ( o cualquier archivo si hemos puesto Extensions=any ) aparece una nueva acción contextual con la que se abre el programa, pero no se reproduce el archivo que se seleccionó.

Si queremos que además de iniciarse el programa se inicie la reproducción de un archivo de los que tienen las extensiones seleccionadas, en la linea Exec habrá que poner: Exec=vlc %F ; en la línea Name= Reproducir con Videolan , y en Comment= reproducir archivo multimedia con Videolan

Para que esto funcione correctamente el nombre del archivo seleccionado no debe de tener espacios en él; por ejemplo con un archivo que se llame let it be.mp3 no funcionara, para que funcione se debe llamar por ejemplo let_it_be.mp3




Para ver mas posibles opciones ver el contenido del siguiente archivo ( está en ingles ): gedit /usr/share/nemo/actions/sample.nemo_action  (*)

(*) Aquí una traducción mas o menos libre de ese archivo:

[ Nemo Acción]

Campo Active:
La opción Active es para activar (true)  o desactivar (false) la acción/extensión. Si no se indica se asume que está activa, está opción está más que nada para cuando se tiene problemas con Nemo y se cree que pudiese ser por causa de alguna extensión.

Ejemplo:
Active=false  ( o true )

Campo Name:
La opción Name es el nombre que se mostrará en el menú contextual y es una opción obligatoria. Se puede usar el parámetro %N para que muestre el nombre del archivo que se tenga seleccionado, pero no funciona si en el campo Selection se ha puesto múltiple (M), None o Any, en esos casos mostrará la opción %N. Si se seleccionan múltiples archivos , entonces se utilizará arbitrariamente el nombre de un archivo seleccionado.

Ejemplo:
Name=Adjuntar para enviar por correo

Campo Comment:
Comentario que aparece en la barra de estado de Nemo. El parámetro % N se puede utilizar como con el campo Nombre , aplicándose las mismas reglas.

Ejemplo:
Comment=los archivos seleccionados aparecerán en la ventana de escribir texto del correo, del programa de correo, como archivos adjuntos

Campo Exec:
Otro campo obligatorio, en este se especifica el comando a ejecutar y el/los parámetro/s que se le pasará, el/los cual/es puede/n ser %F (para una lista de archivos) o %U (se le pasará la lista URI de la selección). Encierre entre < > para ejecutar un archivo ejecutable ( vg myaction.py )que se encuentra en la carpeta de acciones ( /home/usuario/.local/share/nemo/actions). Si el ejecutable es un script que no esta en la carpeta de acciones se debe poner la dirección completa.

Ejemplos:
Exec= <myaction.py -r -g %F>
Exec=/home/usuario/Scripts/reiniciar-nemo.sh
Exec=vlc %F
Exec=sylpheed --attach %F

Campo Icon-Name:
Nombre del icono a utilizar en el menú - debe ser un tema de nombre del icono.

Ejemplo:
Icon-Name =folder

Gtk Stock ID a utilizar para el icono. Tenga en cuenta que si ambos Icono-Name y Stock-Id están definidos Stock-Id tiene prioridad.

Ejemplo:
Stock-Id = gtk -cdrom

Puede dejarse en blanco, Icon-Name=        , y de esta forma no aparecerá ningún icono en la acción añadida al menú contextual

Campo Selection:
El tipo de selección para la cual debe aparecer la acción, acepta valores de solo un archivo (S), múltiples (M), cualquiera (Any), (NotNone) ¿?, o ninguno (None) - que es cuando se hace click en un espacio vacío del navegador- ; o un numero que defina cuántos archivos deben estar seleccionados para que aparezca la acción. Si no se pone nada, el valor predeterminado es S

Ejemplos:
Selection=S
Selection=M
Selection=Any

Campo Extensions:
Esta opción es obligatoria.Hay que poner la extensión del archivo, o de los archivos, para la cual debe estar activa la acción. No es sensible a mayúsculas o minúsculas: es lo mismo poner jpg que JPG, jPg, jpg, etc... Se ponen las extensiones, separadas por ; y acabando también en ;
Use dir para selección de un directorio y none para archivos sin extensión
Use any seguido de ; para cualquier tipo de extensión de archivos

Ejemplos:
Extensions=any;
Extensions=mp3;ogg;
Extensions=dir;
Extensions=dir;mp3;ogg;

Para que una vez creada una nueva acción de Nemo, aparezca en el menú contextual, el archivo de la acción debe de tener permisos de ejecución, como se ve en la siguiente imagen


y se debe reiniciar Nemo: Reiniciar el administrador de archivos

En este tema hay mas ejemplos de Acciones en el menú contextual de Nemo:  Ejemplos de nuevas acciones en el menú contextual de Nemo
-------------------------------------------------------------------

4 comentarios:

  1. Para que funcione en archivos con espacios en el nombre, poner dentro del archivo *nemo_action:

    EscapeSpaces=true

    Ejemplo para Audacious:

    [Nemo Action]
    Active=true
    Name=Tocar en Audacious
    Comment=reproducir archivos y/o directorios de música
    Exec=audacious %F
    Icon-Name=audacious
    Selection=Any
    Extensions=dir;mp3;ogg;flac;wav;wma;mpc;
    EscapeSpaces=true

    Lo he escrito leyendo este blog y husmeando por ahí.

    Gracias a todos.

    ResponderEliminar
  2. Gracias por la aportación, y por leer el blog

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.