Gnome Nautilus: Aggiungere comandi personalizzati al menu contestuale

Desideravo fare in modo che, cliccando con il tasto destro del mouse sopra un file – con il file manager di Gnome “Nautilus” – mi venisse offerta la possibilità di crearne il codice md5sum (quello utilizzato per verificare l’originalità di un file), magari salvandolo in un apposito file, con estensione .md5 e nome uguale a quello di origine.

Cercando ho scoperto che esiste la possibilità di crearsi degli script personalizzati, che vengono automaticamente aggiunti al menu contestuale, e che vengono invocati in modo opportuno, ovvero: ricevendo la lista dei file selezionati.

Mi sono illuminato e ho prodotto subito quello che desideravo; questo il file script:

#!/bin/bash

# $Revision: 1.6 $
# $Date: 2012/05/03 06:16:15 $
# By UDA'Software 2012

ORIGINAL_IFS=$IFS
IFS=$'\n'
md5sum_result=$(
    for file in ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}; do
        filename="$(basename ${file})"
        md5sum=$(md5sum -b "${file}" | awk '{print $1}')
        
        printf 'FILE %s = %s\n' "${filename}" "${md5sum}" > /tmp/md5sum.tmp
        
        if [ -f "${file}.md5" ]; then
            current_md5sum=$(cat /tmp/md5sum.tmp)
            previous_md5sum=$(cat "${file}.md5")
            if [ "${current_md5sum}" == "${previous_md5sum}" ]; then
                zenity --info --title md5sum --text '\n'"${filename}"' ==>> OK: IL CODICE COMBACIA.\n'
            else
                zenity --info --title md5sum --text '\n'"${filename}"' ==>> ERRORE: IL CODICE NON COMBACIA !\n'
            fi
        else
            printf 'FILE %s = %s\n' "${filename}" "${md5sum}"
            
            cp -f /tmp/md5sum.tmp "${file}.md5"
        fi
    done
)

[ "${md5sum_result}" != "" ] && \
    zenity --info --title md5sum --text "\n${md5sum_result}\n"

IFS=$ORIGINAL_IFS

exit 0

mi è bastato salvarlo nella cartella “$HOME/.gnome2/nautilus-scripts” e renderlo eseguibile.

Notare che, nel mio caso specifico, ho usato Zenity per creare un’interfaccia grafica con la quale comunicare il risultato.

Autore: BuDuS

Disegnatore Meccanico, con la passione per l'Informatica. Come hobby, produco piccoli software di (in)utilità.