Forse non tutti sanno che Nautilus, il gestore del filesystem predefinito di Gnome in Ubuntu, può essere espanso con degli script di vario tipo che permettono all'utente di avere sotto mano utilità che spesso velocizzano il lavoro con i files e che possono essere davvero utili in certe situazioni.
Il codice degli script può essere scritto in diversi linguaggi come bash, perl, php e una volta creati, gli script appaiono in un apposita sezione del menu contestuale.
Questa guida davvero basilare tratterà brevemente l'argomento con lo scopo più che altro di creare un archivio per gli script di tutti gli utenti del forum, miei compresi, per dar modo a tutt la comunità di fruire di questa quanto meno interessante funzionalità.
LO SCRIPT
In questo caso verrà trattata la breve creazione di uno script bash soffermandoci più sui passi da compiere che sul codice stesso per meglio far comprendere in che modo gli script vengono creati e resi operativi.
- 1) Lo script può essere creato con un qualsiasi editor di testi come vim o gedit
- 2) Inseriamo quindi l'indispensabile instestazione per gli script bash "#!/bin/sh" e qualche linea di codice:

- 3) Salviamo quindi il nostro script in questa posizione: ~/.gnome2/nautilus-scripts/

noterete che una volta salvato, il testo cambierà colore, questo è dovuto al fatto che l'editor ha riconosciuto il tipo di file e vi applica l'evidenziazione del testo adeguata - 4) A questo punto apriamo una shell e diamo il comando
cd ~/.gnome/nautilus-scripts/
e in seguito usiamo questo comando:
chmod +x nome_dello_script dove "nome_dello_script" è il nome con cui avete salvato il vostro script (il comando è fondamentale perchè permette di rendere lo script eseguibile)
A questo punto dalla shell possiamo dare il comando ./nome_dello_script che dovrebbe produrre un output simile:


Ne consegue che per poter installare uno script scaricato nel vostro nautilus dovrete copiarlo nella cartella "~/.gnome2/nautilus-scripts/" e renderlo eseguibile con "chmod +x"
FATTO
A questo punto, al successivo riavvio della sessione utente, cliccando col tasto destro sul desktop o su un file verrà mostrato un menu denominato SCRIPT nel quale compariranno i nostro script.
ESEMPI
INSTALLARE UNO O PIU' FONT:
Codice: Seleziona tutto
#!/bin/sh
#Created by Adaron
for font in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
cp $font ~/.fonts/
done
fc-cache -fv|zenity --progress --text="I font sono stati installati\n Verrà ora riletta la cache dei font..."Codice: Seleziona tutto
#!/bin/bash
#Created by Adaron
devices=`ls -m /media/`
vv=${devices//cdrom?, /}
vd=${vv//cdrom, /}
options=${vd//, / FALSE /media/}
destinazione=`zenity --list --radiolist --column " " --column "Periferica" FALSE /media/$options`
for files in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
cp $files $destinazione
done
zenity --info --text="Copia dei files eseguita con successo."ancora non funzionante su più files
Codice: Seleziona tutto
#!/bin/sh
#Created by Adaron
echo "\n"
nomefile=`basename $1`
base="${nomefile%%.*}"
ext="${nomefile#*.}"
directory=`dirname $1`
originale=$1
resample=$(echo "$directory / $base _resampled . $ext" | tr -d " ")
dimensione=`zenity --entry --text="Inserisci la dimensione in pixel"`
geometry=$(echo "$dimensione x $dimensione" | tr -d " ")
convert -resize $geometry $1 $resampleCodice: Seleziona tutto
#!/usr/bin/perl -w
#
# Open terminal here
#
# Nautilus script that opens a gnome-terminal at the current location, if it's
# a valid one. This could be done in shell script, but I love Perl!.
#
# 20020930 -- Javier Donaire <jyuyu@fraguel.org>
# http://www.fraguel.org/~jyuyu/
# Licensed under the GPL v2+
#
# Modified by: Dexter Ang [thepoch@mydestiny.net]
# 2003-12-08: Modified for Gnome 2.4
# - Added checking if executed on Desktop "x-nautilus-desktop:///"
# so that it opens in /home/{user}/Desktop
use strict;
$_ = $ENV{'NAUTILUS_SCRIPT_CURRENT_URI'};
if ($_ and m#^file:///#) {
s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
s#^file://##;
exec "gnome-terminal --working-directory='$_'";
}
# Added 2003-12-08 Dexter Ang
if ($_ == "x-nautilus-desktop:///") {
$_ = $ENV{'HOME'};
$_ = $_.'/Desktop';
exec "gnome-terminal --working-directory='$_'";
}Codice: Seleziona tutto
#!/bin/bash
# Questo script può essere utilizzato da nautilus per stmpare i file 'pdf'
# direttamente senza prima visualizzarli con evince.
# Può stampare solo una copia per volta.
# bimole@gmail.com
if [ ! -e /usr/bin/lpr -o ! -x /usr/bin/lpr ]
then echo 'Manca /usr/bin/lpr!'
exit 1
fi
if [ ! -e /usr/bin/file -o ! -x /usr/bin/file ]
then echo 'Manca /usr/bin/file'
exit 1
fi
if [ ! -e /bin/grep -o ! -x /bin/grep ]
then echo 'Manca /bin/grep!'
exit 1
fi
/usr/bin/file $* | /bin/grep PDF >/dev/null 2>/dev/null
if [ $? = 0 ]
then /usr/bin/lpr $*
else echo 'Il file non è un pdf!'
exit 1
firichiede ghostscript
Codice: Seleziona tutto
#!/bin/bash -x
# ----------------------------------------
# PDF to PNG Converter trough GS Script
# ----------------------------------------
#
# Created by Mattia Galati (Adaron)
#
##########################################################################
# Language Settings ---------------------------------------------------- #
format='Formato'
title_format='Scegli il formato file in cui convertire:'
col_format='Formato'
col_value='Valore'
success='Conversione completata'
title_success='Successo'
errors='Si sono verificati degli errori'
title_errors='Errore'
progress='Conversione in corso'
title_progress='Conversione'
png_mono='PNG Monocromatico'
png_16='PNG a 16 colori'
png_gray='PNG in Scala di Grigi'
png_256='PNG a 256 colori'
png_16m='PNG a 16 milioni di colori'
xcf='File XCF - The Gimp'
# End of language settings ----------------------------------------------#
##########################################################################
device=`zenity --list --title="$title_format" --text="$format" --radiolist --column " " --column "$col_format" --column "$col_value" \
FALSE "$png_mono" "pngmono" \
FALSE "$png_16" "png16" \
FALSE "$png_gray" "pnggray" \
FALSE "$png_256" "png256" \
FALSE "$png_16m" "png16m" \
FALSE "$xcf" "xcf" \
--print-column=3 --hide-column=3`
path=`dirname $1`
file=`basename $1`
gs -sDEVICE=$device -dBATCH -r600x600 -sOutputFile=$path/converted_$file.png $1 | zenity --progress --pulsate --auto-close --title="$title_progress" --text="$progress"
if (( $? == 0 )); then
zenity --info --text "$success" --title "$title_success";
else zenity --info --text "$errors" --title "$title_errors";
fi
richiede il pacchetto "pdfjam"
Codice: Seleziona tutto
#!/bin/bash -x
# ----------------------------------------
# PDF nup
# ----------------------------------------
#
# Created by Mattia Galati (Adaron)
#
##########################################################################
# Language Settings ---------------------------------------------------- #
format='es. "2x1" oppure "2x2"'
title_format='Scegli il formato in cui convertire il documento:'
success='Conversione completata'
title_success='Successo'
errors='Si sono verificati degli errori'
title_errors='Errore'
progress='Conversione in corso'
title_progress='Conversione'
# End of language settings ----------------------------------------------#
##########################################################################
arg=`zenity --entry --title="$title_format" --text="$format"`
path=`dirname $1`
file=`basename $1`
pdfnup $1 --nup $arg| zenity --progress --pulsate --auto-close --title="$title_progress" --text="$progress"
if (( $? == 0 )); then
zenity --info --text "$success" --title "$title_success";
else zenity --info --text "$errors" --title "$title_errors";
fi
Sito ufficiale del progetto: http://g-scripts.sourceforge.net/
Spero di esservi stato utile e inserirò volentieri in questo post gli script che vorrete apporvi, siano essi codice o link.

