[[nautilus_scripts]]
Piste: » nautilus_scripts
Les scripts pour nautilus
Le gestionnaire de fichiers Nautilus dispose de fonctions limitées en terme de scripts. Les scripts suivants peuvent être copiées dans le répertoire de scripts de Nautilus. Nombre de ces scripts s'exécutent avec les privilèges de l'utilisateur ROOT ce qui signifie que vous pouvez gravement endommager votre système. Agissez avec prudence.
Le répertoire de scripts de nautilus :
~/.gnome2/nautilus-scripts
Placez vos scripts là et rendez-les exécutables (chmod +x {nom du script}). Vous devriez nommer ces fichiers de façon à ce qu'ils évoquent quelque chose pour vous car c'est sous leur nom qu'ils apparaîtront dans vos menus Nautilus. De plus vous n'avez pas besoin de rajouter l'extension .sh de scripts shell (Note du traducteur : dans le monde Unix/Linux les extensions des noms de fichier n'ont aucune importance, c'est la première ligne #! qui compte). Il est également possible de créer des dossiers pour mieux organiser les scripts. Vos scripts seront alors disponibles dans toutes les fenêtres Nautilus dans Fichier→Script ainsi que dans le menu contextuel (clic droit). Vous ne verrez pas le menu Fichier→Script tant que vous n'aurez pas ajouté votre premier script dans ~/.gnome2/nautilus-scripts
Attention: veillez à nommer le fichier du script en commençant par une majuscule! exemple: "Imprimer" (et pas "imprimer"), sinon ça ne fonctionnera pas.
Envoyer le fichier sélectionné par Mail
Ubuntu Dapper et suivant
Il ne vous sera d'aucune utilité de créer ces scripts car depuis Ubuntu Dapper l'extension nautilus-sendto est incluse par défaut, et permet exactement la même chose (que ce soit avec Evolution ou Thunderbird)
Versions Antérieures
Celui-ci est réellement très pratique. Combien de fois avez vous eu besoin de trouver un fichier puis de l'envoyer ? Et pour être honnête, c'est loin d'être simple à partir de Mozilla Thunderbird ou d'Evolution. Il est beaucoup plus facile d'utiliser Nautilus pour trouver votre fichier et alors de l'envoyer à partir de là.
#!/usr/bin/perl -w
# Par John Russell
# Ce script envoie le fichier selectionne avec votre client de messagerie.
use strict;
my $MAILTO_URL="mailto:?";
my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
my $count = 0;
foreach my $file (@files)
{
if ( ! -f $file && ! -l $file )
{
my @dialog = ("gdialog","--title","Error","--msgbox",\
"\nError: Je ne peux pas envoyer $file.\
\n\n seuls les fichiers reguliers peuvent etre envoye.\
","200", "300");
system (@dialog);
}
else
{
$MAILTO_URL = $MAILTO_URL . "attach=" . $file . "&";
shift;
$count += 1;
}
}
if ($count > 0)
{
my @command = ("gnome-open", $MAILTO_URL);
system(@command);
}
Ajouté par Darell : J'ai trouvé que la syntaxe de mailto: ci-dessus ne fonctionne pas avec Mozilla Thunderbird. j'ai donc créé la version suivante qui semble fonctionner avec Thunderbird
Ajouté par Herbie : le script fonctionne très bien avec kmail, merci pour ce script, au passage la fonction "envoyer à" dans le menu par défaut de Gnome ne fonctionne pas dans mon cas.
#!/usr/bin/perl -w
# par John Russell
# et bidouille pour fonctionner avec Thunderbird par Darrell
# Ce script envoie le(s) fichier(s) selectionne(s) avec Thunderbird.
use strict;
my $attach_string="\"attachment='";
my @files = split("\n", $ENV{NAUTILUS_SCRIPT_SELECTED_FILE_PATHS});
my $count = 0;
foreach my $file (@files)
{
if ( ! -f $file && ! -l $file )
{
my @dialog = ("gdialog","--title","Error","--msgbox",\
"\nError: Je ne peux pas envoyer $file.\
\n\n seuls les fichiers reguliers peuvent etre envoye.\
","200", "300");
system (@dialog);
}
else
{
$attach_string = $attach_string . "file://" . $file . ",";
shift;
$count += 1;
}
}
if ($count > 0)
{
$attach_string = $attach_string . "'\"";
# replace spaces with '%20' as demanded by mozilla/thunderbird
$attach_string =~ s/\s/%20/g;
# appelle un script shell afin d'appeler thunderbird differemment suivant
# qu'il soit deja lance ou non
my $command = ("~/scripts/thunderbird-email-attachments " . $attach_string);
system($command);
}
Vous verrez qu'un script shell est requis,"~/scripts/thunderbird-email-attachments" dans mon exemple ci-dessus, ne le mettez pas dans le répertoire de script de Nautilus sinon il apparaitra dans le menu contextuel.
Ajouté par Christophe : ce script ne fonctionne pas chez moi. Par contre, la simple commande du else fonctionne sans création d'un nouveau process.
#!/bin/sh
# Si thunderbird est deja lance ouvre une fenetre de composition dans l'instance en cours
if `ps xc | grep -q mozilla-thunder`; then
exec mozilla-thunderbird -a Mozilla-Thunderbird -remote\
"xfeDoCommand(ComposeMessage,$1)"
# sinon lance une nouvelle instance avec juste la fenetre de composition
else
exec mozilla-thunderbird -compose $1
fi
Supprimer les fichiers de backup gedit
gedit copie chaque fichiers avant la sauvegarde sous le nom $fichier~ : c'est souvent emcombrant lors d'un ls -a... Il suffira d'appliquer le script d'un clic droit > Scripts > rm-backups.sh :
#! /bin/bash rm ./*~ zenity --info --text="Fichiers de backup *~ supprimés :)"
Monter et démonter une image ISO
Avec Gmount-iso (Ubuntu Feisty)
Sous Ubuntu Feisty un programme vous permet de monter des images ISO sans trop de mal il s'appelle gmount-iso.
Le faire avec nautilus ou Versions Antérieures
Monter une image ISO
Monter une image ISO à partir de Nautilus.
#!/bin/bash # # En chargeant le module loop on s'assure de son chargement et qu'il est pret a etre utilise # Si il est déjà chargé il ne se passe rien. lsmod | grep '^loop ' || gksudo -u root -k -m "Chargement du module noyau 'loop'" modprobe loop for i in "$@" do gksudo -u root -k -m "Montage de l'image ISO" mount -o loop -t iso9660 "$i" /media/iso done
Démonter une image ISO
Démonter une image ISO à partir de Nautilus.
#!/bin/bash # for i in "$@" do gksudo -u root -k -m "Démontage de l'image ISO" umount "$i" done
Ouvrir en tant qu'administrateur (ROOT)
Éditer un fichier avec Gedit avec les privilèges ROOT
#!/bin/bash gksudo -u root -k -D "Éditer les fichiers sous root" gedit "$@"
Ouvrir Nautilus dans le répertoire choisi avec les privilèges ROOT
#!/bin/bash
# root-nautilus-here
# Ouvrir Nautilus dans le repertoire choisi avec les privileges ROOT
# necessite des privileges sudo et gksudo, ce qui peut entrainner des risques de securites
#Installez le dans votre répertoire ~/Nautilus/scripts.
#
# Place dans le domaine publique par Shane T. Mueller 2001
# correctifs fournis par Doug Nordwall
#
# 2004.04.18 -- keith@penguingurus.com - Ajout de l'utilisation de gksudo
# afin de lancer une fenetre de mot de passe si sudo a expire.
# Les echos sont renvoyés
# vers la sortie standard de root. Mais gksudo
# met à jour votre acces sudo
# donc le lancement de nautilus avec sudo fonctionnera sans
# demander de mot de passe
foo=`gksudo -u root -k -m\
"entrez votre mot de passe afin de lancer nautilus en tant que root"\
/bin/echo "got r00t?"`
sudo nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI
Exécuter les fichiers en tant que ROOT
#!/bin/bash for i do gksudo -u root -k "$i" done
Ouvrir une fenêtre de recherche dans le répertoire sélectionné
#!/bin/sh
# De Johnathan Bailes
# Ce script ouvre l'outil de recherche gnome dans le répertoire que vous sélectionnez.
#
# Distribué selon les termes de GNU GPL version 2 ou ultérieur
#
# Installez le dans votre répertoire ~/Nautilus/scripts.
# Vous devez utiliser Nautilus 1.0.3+ pour utiliser ce script.
cd $NAUTILUS_SCRIPT_CURRENT_URI
exec gnome-search-tool
Autre version avec recherches multiples :
#! /bin/sh
# Par gusaweb <gusaweb at gmail.com>
# Permet d'utiliser l'outil de recherche gnome
# sur un/des répertoire(s) ou fichier(s)
# sélectionné(s).
# Distribué selon les termes de la GNU GPL 2
# ou ultérieure
# pour chaque path sélectionné
for path in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS ;
do
# s'il s'agit d'un répertoire on effectue
# la recherche dedans
if ( test -d $path )
then
exec gnome-search-tool --path=$path &
# s'il s'agit d'un fichier on effectue la
# recherche sur le répertoire qui le contient
else
exec gnome-search-tool --path=`dirname $path` &
fi ;
done
Ouvrir un terminal ici
Via l'extension **nautilus-open-terminal**
Nautilus-open-terminal permet d'ouvrir un terminal directement dans le répertoire courant de nautilus via un clic-droit→Ouvrir dans un terminal.
Pour l'installer il suffit d'installer le paquet nautilus-open-terminal:
sudo apt-get install nautilus-open-terminal
et ensuite de redémarrer la session.
Via un script (Ubuntu Hoary)
#!/bin/bash
#
# Ce script ouvre le terminal gnome dans le répertoire que vous sélectionnez.
#
# Distribué selon les termes de GNU GPL version 2 ou ultérieur
#
# Installez le dans votre répertoire ~/Nautilus/scripts.
# Vous devez utiliser Nautilus 1.0.3+ pour utiliser ce script.
# Lorsqu'un répertoire est selectionné ouvre celui-ci. Sinon ouvre le répertoire courant
# Si plus d'un répertoire est sélectionné affiche une erreur.
if [ -n "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
set $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
if [ $# -eq 1 ]; then
destination="$1"
# Va dans le répertoire d'un fichier si un fichier est selectionné
if [ ! -d "$destination" ]; then
destination="`dirname "$destination"`"
fi
else
zenity --error --title="Erreur - Ouvre un terminal ici" \
--text="Vous ne pouvez selectionner qu'un repertoire."
exit 1
fi
else
destination="`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed 's/^file:\/\///'`"
fi
# Seuls les repertoires locaux peuvent etre ouverts
if [ -n "`echo "$destination" | grep '^[a-zA-Z0-9]\+:'`" ]; then
zenity --error --title="Erreur - Ouvre un terminal ici" \
--text="Seuls les repertoires locaux peuvent etre ouverts."
exit 1
fi
cd "$destination"
exec x-terminal-emulator
Lire les fichiers du répertoire avec xmms
Permet d'envoyer tous les fichiers du répertoire dans la playlist de xmms
#!/bin/sh base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`" if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then dir="$base" else while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done dir="$base/$1" fi if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "x-nautilus-desktop:///" ]; then dir="Desktop" fi if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "trash:" ]; then dir="$HOME/.Trash" fi if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "file:///" ]; then dir="/" fi FIRST_URI="`echo -n $NAUTILUS_SCRIPT_SELECTED_URIS`" if [ "$FIRST_URI" == "x-nautilus-desktop:///home" ]; then dir="$HOME" fi #if [ "$FIRST_URI" != "" ]; then #dir="`echo $FIRST_URI | cut -c8-`" #fi if [ "$FIRST_URI" == "x-nautilus-desktop:///computer" ]; then dir="/" fi xmms "$dir"
Créer un lien sur le Bureau
Permet de créer des raccourcis sur le Bureau
#!/bin/sh
LINKS="${HOME}/Bureau"
ZENITY=zenity
warning() {
${ZENITY} --warning --warning-text "$*"
}
if [ ! -d "${LINKS}" ]; then
warning "No desktop directory '${LINKS}' found - sorry."
exit 1
fi
declare -a NAUTFILES
export IX=0
while read FILE; do
if [ "x${FILE}" != "x" -a "x${FILE}" != 'x"' ]; then
NAUTFILES[${IX}]="${FILE}"
IX=$[ ${IX} + 1 ]
fi
done <<EOF
${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS[@]}
EOF
if [ 0 -eq ${IX} ]; then
URI="${NAUTILUS_SCRIPT_CURRENT_URI}"
METHOD="${URI:0:7}"
if [ "file://" == "${METHOD}" ]; then
NAUTFILES[0]="${URI:7}"
IX=1
fi
fi
if [ 0 == "${#NAUTFILES[@]}" ]; then
warning "Nothing to do"
exit
fi
for FILE in "${NAUTFILES[@]}"; do
TAILBASE=`basename "${FILE}"`
NEWNAME=`${ZENITY} --entry \
--title "Enter link name" \
--text "Enter the name of the new link for '${FILE}'" \
--entry-text "${TAILBASE}"`
if [ 0 -ne $? -o "x${NEWNAME}" == "x" ]; then
warning "New name cancelled or not entered successfully"
else
NEWFILE="${LINKS}/${NEWNAME}"
if [ -e "${NEWFILE}" ]; then
warning "An object called '${NEWFILE}' exists already"
elif ! /bin/ln -s "${FILE}" "${NEWFILE}"; then
warning "New link could not be created"
fi
fi
done