#1 Le 18/11/2005, à 20:20
- camboui
Cherche conseils pour script nautilus
Bonjour à vous !
Je suis un novice total en programation et je voudrais réaliser un script nautilus afin de vérifier et réparer un par2 d'un simple clic droit.
De ce que je comprend et désire ça devrait ressembler à un truc comme :
Ouvrir le terminal en le pointant sur le fichier sélectionné lors du clic droit
Exécuter automatiquement la commande par2 r sur le dit fichier
Est il possible de réaliser cela ?
Quels sont les connaissances requises pour faire un tel script ?
Hors ligne
#2 Le 19/11/2005, à 16:25
- camboui
Re : Cherche conseils pour script nautilus
Ah ben j'ai encore une question stupide...
Un bash script peut il être utilisé comme script nautilus ?
Hors ligne
#3 Le 19/11/2005, à 16:41
- Golgoth
Re : Cherche conseils pour script nautilus
Ah ben j'ai encore une question stupide...
Un bash script peut il être utilisé comme script nautilus ?
oui!
un exemple: le script écrit par Mathieu Vilaplana qui permet de redimensionner des images automatiquement.
#!/bin/sh
# Author : Mathieu Vilaplana <mathieu@creationgif.com>
# Date : 09/03/2005
#depends: imagemagick, zenity
# thanks to coffe
#version 0.4
# - check mime type
#since v 0.4, solve bug with filename spaces
#version 0.6
# - correct bug in filename with spaces
# - create a subdirectory to create images
#test if a file has been selected
if [ $# -eq 0 ]; then
zenity --error --title="error" --text="You must select at least 1 file to process"
exit 1
fi
#Select only images
nb_images=0;
selection="";
while [ $# -gt 0 ]; do
isimage=`file -bi "$1" | grep image | wc -l`
if [ $isimage -eq 1 ]; then
selection[$nb_images]=$1
let "nb_images++"
fi
shift
done
#if user choose files but no images, print an error and exit
if [ $nb_images -eq 0 ]; then
zenity --error --title="error" --text="You must select at least 1 image to process"
exit 1
fi
#CHECK IMAGE MAGICK ==================
convert_path=`which convert`
if [ ! "$convert_path" ] || [ ! -x "$convert_path" ] ;then
zenity --error --title="error" --text="Cannot find \"convert\" executable.\nPlease install image magick package."
fi
#================================
#=========================
# SELECT SIZE DIALOG
title="Choose which sizes to scale to"
imgsize=`zenity --title "$title" --list --separator=" " --column="size" "160x120" "320x240" "640x480" "800x600" "800x600" "1024x768" `
#if $? != 0, user click on cancel button, so exit
if [ "$?" != 0 ] ; then
exit
fi
#user must select a target size
imgsize=`echo $imgsize | sed 's/ max//g'`
if [ ! "$imgsize" ]; then
zenity --error --title="error" --text="select a target size"
exit
fi
#transform 640x480 en 640x640 for convert to respect proportions
himgsize=$imgsize
val1=`echo "$imgsize" | awk -F'x' '{ print $1 }'`
imgsize="${val1}x${val1}"
# END SELECT SIZE DIALOG
#=========================
#create directory if not exist and at least one image to process
if [ ! -d $himgsize ] && [ "$nb_images" -gt "0" ];then
mkdir $himgsize
fi
#Process
#=============================================
n=$nb_images
let "n=n-1"
(for i in `seq 0 $n`;do
picture=${selection[$i]}
let "compteur += 1"
echo "# Processing image $compteur / $nb_images $picture ..."
convert -quality 80 -resize $imgsize "$picture" $himgsize/"$picture"
let "progress = compteur*100/nb_images"
echo $progress
done
) | zenity --progress --auto-close --title="Scaling images" --text="Processing images ..." --percentage=0
tu colles ton code ds un fichier, tu le rends executable et tu copies ce fichier dans .gnome2/nautilus-scripts/
Dell Dimension 9200: E6420 + 8600GTS + 2Go RAM
Hors ligne
#4 Le 19/11/2005, à 16:50
- camboui
Re : Cherche conseils pour script nautilus
Magnifique ! Ainsi tout ce que l'on pourrait apprendre ici (par exemple) http://www.bsdbooks.net/shells/scripting/fr serait utilisable dans nautilus
Merci pour ton aide!
Me reste plus qu'à me retourner les manches et mettre les mains dans le camboui ^^
... bien que je ne saches toujours pas si mon projet est réaliste ...
Hors ligne
#5 Le 20/11/2005, à 01:52
- camboui
Re : Cherche conseils pour script nautilus
Il l'est
Grâce à un conseil de script de Poptones ici : http://ubuntuforums.org/showthread.php?t=47037&highlight=script+par2
j'ai bidouillé ceci:
#!/bin/sh
_DIR="$#"
cd "${_DIR%/*}"
/usr/bin/par2 r "$1"
if [[ $? -gt 0 ]]; then
zenity --error --title="Damnation" --text="La réparation de $1 a échoué."
else
zenity --info --title="Cool" --text="$1 a été correctement réparé."
fi
Cela marche correctement ! (quel plaisir de croire qu'on peut faire des choses hihi)
Mais j'aimerais plus...
Comment demander à zenity d'afficher dans la boite d'erreur qui s'ouvre le cas échéant à la fin du processus les infos de par2 ?
Ce serait la cerise sur le gateau !
Dernière modification par camboui (Le 20/11/2005, à 02:13)
Hors ligne
#6 Le 20/11/2005, à 13:44
- jks
Re : Cherche conseils pour script nautilus
Bonjour !
Sympa ce truc !
Merci bcp!
Hors ligne
#7 Le 20/11/2005, à 13:55
- jks
Re : Cherche conseils pour script nautilus
Voilà mon script (2 lignes ! ) qui affiche les infos en cours de réparation :
#!/bin/sh
par2repair -q $1 | zenity --text-info --title "PAR2" --width=500 --height=500
Modification du script : ajout des guillemets à $1 (pour ne plus avoir de problèmes avec les espaces dans les noms des par2)
#!/bin/sh
par2repair -q "$1" | zenity --text-info --title "PAR2" --width=500 --height=500
Dernière modification par jks (Le 20/11/2005, à 20:02)
Hors ligne
#8 Le 20/11/2005, à 18:47
- camboui
Re : Cherche conseils pour script nautilus
Excellent ! ^^ Merci !
J'ai testé en vitesse et ça répond au problème de l'affichage des infos, c'est trop bon
Par contre il bloque sur les pars qui ont des espaces dans leur nom, comme quand on se sert du terminal d'ailleurs... Etrangement "mon" script n'a pas ce problème.
Dès que j'aurai un ti peu de temps je vais tenter de marrier les deux.
Merci infiniment pour cette piste !
Tu l'as trouvée comment ?
Dernière modification par camboui (Le 20/11/2005, à 18:48)
Hors ligne
#9 Le 20/11/2005, à 19:45
- jks
Re : Cherche conseils pour script nautilus
camboui a écrit:
Merci infiniment pour cette piste !
Tu l'as trouvée comment ?
De rien !
En fait c'est en regardant le manpage de zenity.
Il a des options bien pratiques comme afficher les infos, mettre une progress bar, etc.
Par contre il bloque sur les pars qui ont des espaces dans leur nom
Effectivement !
Voici le script corrigé : il suffit juste de mettre entre guillemets la variable $1 (comme tu l'as fait dans ton script):
#!/bin/sh
par2repair -q "$1" | zenity --text-info --title "PAR2" --width=500 --height=500
PS: je vais modifier mon post précédent...
Dernière modification par jks (Le 20/11/2005, à 19:46)
Hors ligne
#10 Le 20/11/2005, à 23:54
- camboui
Re : Cherche conseils pour script nautilus
Y'a deux trucs de cool grâce à ton aide...
D'une part ça résoud un problème d'utilisation de par2
D'autre part ça m'a fait comprendre deux trois choses et ça m'a donné envie d'aller plus loin
J'vais voir à quel point on peut rendre l'opération fun
Merci tout plein, à pluch'
Hors ligne
#11 Le 21/11/2005, à 01:12
- jks
Re : Cherche conseils pour script nautilus
De rien ! It's my pleasure.
J'ai d'ailleurs découvert l'existence de zenity gràce à ton post ! Lol!
Si tu trouves d'autres choses interessantes, fait le partager à la communauté !
Hors ligne
#12 Le 21/11/2005, à 19:38
- borsk
Re : Cherche conseils pour script nautilus
Bravo pour ce script , je ne suis pas vraiment un pro de la programmation et là c'est le bonheur, je vois enfin ce qui se passe quand je répare...:D
ubuntu gusty
AMD 2600+, 1024 ddr, 6600gt, CM asus a7n8x, kit bidalo 75, friteuse seb,
Hors ligne
#13 Le 23/11/2005, à 02:16
- jks
Re : Cherche conseils pour script nautilus
Thx !
Petit bémol toutefois :
les infos affichés dans la fenêtre sont les infos de vérification du par2, c'est à dire :
le nb de blocks disponibles, les rar défectueux, etc...
Puis au moment de la réparation à proprement parler, il n'y a plus d'infos... juste une phrase : "Repair is possible."
Il n'y a pas de % affiché, on a aucun moyen de suivre l'état d'avancement de la réparation.
On a alors l'impression que le processus est arrêté et on serait tenté de cliquer sur "Fermer".
Mais en fait le processus tourne toujours ! Il faut donc attendre les phrases :
"Verifying repaired files:" et enfin "Repair complete." pour pouvoir quitter sinon la réparation ne sera pas effectuée !
(Cet inconvénient passe inaperçu lorsque la réparation est courte).
On peut contourner le pblm en augmentant le "verbose" de par2repair : il suffit d'enlever l'option "-q". Mais l'affichage des infos sera plus longue (avec bcp de %) et moins esthétique.
Voilà en attendant de nvl innovations...
J'espère que vous avez tout lu !
Hors ligne
#14 Le 24/11/2005, à 23:00
- camboui
Re : Cherche conseils pour script nautilus
J'en ai pas perdu une miette
Pour régler le problème que tu soulèves il faudrait se prendre le choux à trouver une (des) solution(s) pour bidouiller l'affichage dans zenity ou gdialog... ou ne pas s'en servir du tout et parvenir à déclancher l'affichage de la console au démarrage de l'opération... ou encore d'autres solutions qui me dépassent ^^
J'vais farfouiller su côté de perl pour voir si ça avance la gestion des pars2. Ce serait cool, ça permettrait en plus de proposer une solution fonctionnant que ce soit sur gnome ou kde (ou même sur autre chose qu'ubuntu ke suppose...)
Vais prendre une aspirine par anticipation...
Hors ligne
#15 Le 21/12/2005, à 08:14
- Mohegan
Re : Cherche conseils pour script nautilus
J'ai trouvé une solution en lançant gnome-terminal. Voici le script à mettre danst ~/.gnome2/nautilus-scripts (Intitulé par exemple Par2repair) :
#!/bin/bash
gnome-terminal --hide-menubar --title=Par2repair -x :home/jack/Logiciels\ Linux/Scripts/Par2repair "$1"
Et voici le script que j'ai mis dans le fichier /home/jack/Logiciels\ Linux/Scripts/Par2repair :
#!/bin/bash
par2repair "$1"
echo
echo Appuyer sur entrée pour quitter
read
Cela permet de voir l'état d'avancement de par2repair.
Nota : Il ne faut pas oublier de rendre les deux scripts exécutables par la commande chmod u+x.
"Lorsqu’un adulte entre dans le monde des fables, il ne peut plus en sortir." Bouche Dorée
Hors ligne
#16 Le 22/12/2005, à 12:04
- lakhdar
Re : Cherche conseils pour script nautilus
Bonjour,
je sis nouveau ici je commence à peine à surfer sur linux j'ai ubuntu et j'aimerai savoir comment faire un script car j'ai surfé sur le net j'ai trouvé des choses mais ça ne fonctionne pas .Mon premier sujet est le suivant:
Nom de l'exécutable : friends.sh
Répertoire de rendu : ~/rendu/piscine/j2/friends
Droit sur ~/rendu/piscine/j2/friends : 750
Faites un script shell qui prend en arguments une liste d'amis et
qui affiche le nombre d'amis ainsi que le leurs noms.
Le script doit retourner le nombre d'amis.
Exemple:
$ ./friends.sh
Vous n'avez pas d'ami.
$ echo $?
0
$ ./friends.sh Reeb
Vous avez 1 ami: Reeb.
$ echo $?
1
$ ./friends.sh Reeb Ruben "les acus"
Vous avez 3 amis: Reeb, Ruben, les acus.
$ echo $?
3
j'espère avoir une réponse favorable à ma question.bonne journée et à plus
Hors ligne
#17 Le 11/03/2008, à 15:53
- tocks
Re : Cherche conseils pour script nautilus
Bonjours, ce sujet m'intéraisse énormement, j'essaie de faire cela sans y arriver, je voudrais comme vous le dite que juste avec le clik droit sous nautilus je eput lancer la reparation, et quand la reparation est terminer extraire automatiquement les fichiers. Avec une boite de commande qui souvre pour suivre l'avancement de la vérification, puis avancement de la réparation et enfin l'avancement de la décompression.
Si vous pouvez m'aider sa serais cool. Merci
Hors ligne