Cómo extender el administrador de archivos de Gnome Nautilus con scripts personalizados

Cómo extender el administrador de archivos de Gnome Nautilus con scripts personalizados

Aunque Gnome, en sus 3.X iteración ha sido objeto de muchos debates, debido a su paradigma de escritorio no tradicional, es probablemente el escritorio más utilizado en Linux. El administrador de archivos predeterminado incluido en GNOME es Nautilus (el nuevo nombre de la aplicación es "archivos"). En este tutorial veremos cómo podemos extender el administrador de archivos con funcionalidades proporcionadas por scripts personalizados.

En este tutorial aprenderás:

  • Cómo usar scripts personalizados para extender las funcionalidades de Nautilus


Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Independiente de la distribución
Software El Nautilus File Manager
Otro No se necesitan requisitos específicos para seguir este tutorial
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Creación del directorio de scripts

Lo primero que queremos hacer es crear el directorio que aloje nuestros scripts: ~/.Local/Share/Nautilus/Scripts. Una vez colocado en este directorio, los scripts aparecerán automáticamente en el menú contextual de Nautilus que se muestra cuando seleccionamos uno o más archivos:

$ mkdir -p ~/.Local/Share/Nautilus/Scripts

En el comando anterior usamos el -pag cambiar (abreviatura de --padres) para asegurarse de que todos los directorios en la ruta especificada se creen según sea necesario, y no se generan errores si algunos de ellos ya existe. Con nuestro directorio en su lugar, podemos comenzar a trabajar en nuestros scripts muy útiles: observe que se incluirán correctamente en el menú contextual de Nautilus solo si están hechos ejecutable. Antes de escribir código, debemos aprender a conocer algunas variables que podemos usar dentro de los scripts: son la forma principal en que podemos interactuar con el estado del administrador de archivos, accediendo a información muy útil.



Nautilus scripts variables

Para que nuestros scripts sean de alguna manera útiles, debería ser posible interactuar con el estado del administrador de archivos y poder hacer referencia, por ejemplo, la ruta y los nombres de los archivos seleccionados, o el directorio de trabajo actual: podemos acceder a esta información a través de alguna información. variables establecidas exactamente para este propósito. Veamos.

En primer lugar, tenemos el Nautilus_script_selected_file_paths variable. Como siempre debería suceder, el nombre de la variable se explica por sí mismo: esta variable contiene la ruta del sistema de archivos completo de los archivos seleccionados actualmente en el Administrador de archivos. El valor variable es una cadena; Las rutas de archivo están delimitadas por el uso de nueva línea caracteres.

Otra variable muy útil es Nautilus_script_selected_uris. Podemos usar esta variable, como la que acabamos de ver, para hacer referencia a archivos seleccionados, con una diferencia: los archivos no están referenciados por sus rutas, sino por sus Uri, o "Identificador de recursos unificados". El papel de esta variable se hace evidente cuando se trabaja en remoto Sistemas de archivos: en ese caso, las rutas simples no funcionarán y el Nautilus_script_select_file_paths La variable estará vacía. En tales situaciones, para acceder a los archivos también necesitamos saber el tipo de protocolo en uso: un archivo seleccionado en el administrador de archivos a través del sftp El protocolo, por ejemplo, será referenciado como sftp: // ruta/a/archivo.

Finalmente, tenemos el Nautilus_script_current_uri y el Nautilus_script_window_geometry variables. El primero contiene el Uri del directorio abierto en el manedor de archivos; La última información sobre la geometría (ancho y altura) y la posición de la ventana del administrador de archivos (por ejemplo: 631 × 642+26+23).

Un ejemplo práctico

Como ejemplo, construiremos un script muy simple: su propósito será el de organizar imágenes seleccionadas en el administrador de archivos en la base de su fecha de creación. En este caso, el guión se escribirá en pitón, un idioma que se admite de forma predeterminada en cada distribución; Podemos, por supuesto, escribir scripts bash o usar cualquier otro lenguaje de secuencia de comandos compatible.

Hoy en día, casi todas las imágenes digitales contienen metadatos que podemos usar para recuperar todo tipo de información, como el tipo de cámara o dispositivo utilizado para crear la imagen y la configuración utilizada. De lo que estamos hablando se llaman exif Etiquetas: lo que nos interesa en este caso es el OriginalDatetime campo (36867). El script podrá organizar solo las imágenes que incluyen esa etiqueta, y las reorganizará en directorios creados utilizando el patrón "Nombre de año/mes". Las imágenes que no contienen información se colocarán en un directorio llamado "sin clasificar". Aquí está nuestro guión, lo guardaremos como "Organizar.py ":

#!/usr/bin/env python3 "" "Autor: Egidio Docile Organice imágenes seleccionadas por su fecha de creación, utilizando la etiqueta exif datetimeRiginal" "" Import de fecha, la importación del sistema operativo de importación de la imagen de la imagen datetime_original = 36867 def main (): para la ruta en el sistema operativo.getenv ('nautilus_script_selected_file_paths', ").SplitLines (): intente: exif_data = imagen.Abrir (camino)._getExif () excepto Oserror: Continuar prueba: date = DateTime.fecha y hora.strptime (exif_data [datetime_original], '%y:%m:%d%h:%m:%s') directorio = OS.camino.Fecha de Ingreso.strftime ('%y'), fecha.strftime ('%b')) excepto (keyError, valueError, typeError): directorio = "antiestad" OS ".makedirs (directorio, exist_ok = true) OS.renombrar (ruta, sistema operativo.camino.unirse (directorio, sistema operativo.camino.Basename (ruta))) si __name__ == '__main__': main ()
Copiar

Como puede ver, accedemos y leemos el Nautilus_script_selected_file_paths variable utilizando el sistema operativo.getenv método, también proporciona una cadena vacía como valor predeterminado, en caso de que la variable no esté configurada. Luego usamos el líneas de división Método para "explotar" la cadena que es el valor de la variable que acabamos de mencionar, en una lista, utilizando el carácter nuevo como delimitador. Finalmente procesamos cada ruta de archivo en un bucle for para.



Por supuesto, el script se puede mejorar, pero verifiquemos que funcione. Una vez que lo colocamos en el ~/.Local/Share/Nautilus/Scripts Directorio, debemos hacerlo ejecutable ejecutando:

$ chmod +x ~/.Local/Share/Nautilus/Scripts/Organize.py

Debe aparecer una nueva entrada en el menú contextual del administrador de archivos, cuando se seleccionan los archivos:



La entrada de contexto-menú para nuestro script

Y aquí está nuestro guión en acción. Seleccionamos las imágenes que queremos clasificar y hacer clic en "Script/Organize.py ”en el menú contextual:

Uso de diálogos gráficos en los scripts

Puede haber algunos casos en los que nuestros scripts, para funcionar correctamente, deberían poder interactuar con el usuario, tal vez solicitar confirmación antes de realizar una operación. Podemos crear tales diálogos en nuestros scripts, dependiendo del lenguaje de programación que estamos utilizando. Al escribir scripts bash, por ejemplo, podemos usar zenidad, un programa para crear Gtk cuadros de diálogo, que generalmente se incluyen con una instalación de GNOME; Si no es así, podemos instalarlo utilizando nuestro Administrador de paquetes de distribución favorito. En Fedora, por ejemplo, podemos ejecutar:

$ sudo dnf instalación zenity

En distribuciones basadas en Debian, en su lugar podemos usar apt-get:

$ sudo apt-get instalación zenity

El paquete también se incluye en los repositorios "extra" de Archlinux:

$ sudo Pacman -S Zenity

Veamos un ejemplo sobre cómo usar Zenity. Esta vez escribiremos un script bash que, cuando se ejecute, se reduzca el nombre de todos los archivos seleccionados, después de solicitar y recibir la confirmación del usuario.

#!/bin/bash set -e set -u set -o pipefail si zenity --Question --title = "confirmación" - -text = "Debería ejecutar el script?""; luego echo "$ nautilus_script_selected_file_paths" | mientras lea -r selected_file; do file = "$ (Basename" $ ​​selection_file ")" mv "$ file" "$ archivo ,," hecho fi
Copiar

En el guión invocamos zenidad con el --pregunta, --título y --texto Opciones:
Se utilizan respectivamente, para mostrar un diálogo de preguntas, para establecer el título de la ventana emergente que se mostrará y para establecer el texto del diálogo real. En este caso, el código de salida de Zenity será 0 si el usuario hace clic en "Sí" y 1 si hace clic en el botón "No". Como sabemos, un código de salida de 0 significa que el comando se ejecutó correctamente, por lo tanto, el código dentro de la declaración IF se ejecutará. Para minúsculas el archivo, utilizamos el $ parámetro ,, expansión de parámetros.



El diálogo de Zenity

LoadPosition in-article-ads-banner_31

Cuando utilizamos lenguajes de programación más sofisticados como Python, podemos acceder a varios tipos de bibliotecas gráficas, para generar diálogos, como Tkinter, que es el kit de herramientas de GUI de Python estándar de facto, o Pygobject para usar el uso del Gtk kit de herramientas y bibliotecas.

Conclusiones

En este tutorial vimos cómo, en pocos pasos sencillos, podemos extender el Administrador de archivos Nautilus utilizando scripts personalizados escritos en varios tipos de lenguajes de programación. Vimos dónde se deben colocar los scripts en el sistema de archivos, y cuáles son las variables que podemos hacer referencia dentro de ellos para obtener las rutas o URI del archivo seleccionado, el URI del directorio abierto en el Administrador de archivos y su geometría. Finalmente somos dos, uno escrito en Python y el otro en Bash. En este último, también vimos cómo generar un diálogo gráfico usando zenidad: Si tiene curiosidad por esta utilidad, estad atentos, hablaremos de ello pronto, aquí en LinuxConfig.organizar.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Archivos de configuración de Linux: los 30 principales más importantes
  • Cómo escribir extensiones de Nautilus con Nautilus-Python
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Mastering Bash Script Loops
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo montar la imagen ISO en Linux
  • ¿Puede Linux obtener virus?? Explorando la vulnerabilidad de Linux ..
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..