Cómo extender el administrador de archivos de Gnome Nautilus con scripts personalizados
- 585
- 160
- Hugo Vera
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
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 dominiops - 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 ..