Comme certain le savent, j'ai développer ici grace à certain un script de traitement d'image.
Le truc c'est que je voudrais le rendre accessible depuis konqueror par un click droit.
j'ai donc chercher et fini par trouver les servicemenu sous kde3.5 pour konqueror dans
/usr/share/apps/konqueror/servicemenus/
j'ai crée un service menu du type:
[Desktop Entry]
ServiceTypes=inode/directory
Actions=reduc_imagecata;
[Desktop Action reduc_imagecata]
Name=reduc
Name[fr]=reduc
Icon=ark
Exec=reduc.sh
il apparait bien, mais ne s'execute pas,
J'ai donc chercher, et j'ai découvert en lançant konqueror depuis la console qu'il executais le script là d'où je lancais la console.
En clair,
[sacha@localhost ~]$konqueror
avec ceci quelque sois le dossier ou je me situe sous konqueror il applique le script dans le dossier ~
si
[sacha@localhost ~/Images]$konqueror
avec ceci quelque sois le dossier où je me situe sous konqueror il applique le script dans le dossier ~/Images
En clair le soucis ne viens pas du servicemenu je pense mais du script, il faudrais que je récupère le dossier courant de konqueror, et que qu'au début du script il ajoute un cd 'dossier_courant_konqueror'
bon j'ai bien trouvé une solution ctrl+E pour lancer un commande
mais j'aurais bien aimé avoir le click droit et comprendre comment résoudre ce problème.
Merci à vous
# passage paramètre ?
Posté par blobmaster . Évalué à 1.
Exec=reduc.sh %d
et (dans ton script) en récupérant $1, ça devrait marcher.
Sinon quand je veux me rajouter un menu, je vais sur http://www.kde-apps.org/index.php?xcontentmode=287 et j'en prend un et je regarde comment il est fait.
[^] # Re: passage paramètre ?
Posté par gotcha5832 . Évalué à 1.
juste %f à la place de %d, qui parait mon adapter à mon.
Mais petit dernier soucis
si je met
Exec=reduc.sh %f
puis dans reduc.sh
rep=$1
echo rep
cd $rep
ca me donne dans le ou ~/test dossier/
~/test dossier
/bin/reduc.sh: line 10: /home/sacha/test\: Aucun fichier ou répertoire de ce type
il me coupe le nom du dossier à l'espace
j'ai aussi essayer:
echo $1
rep_courant="${1// /\ }"
echo 'rep_courant'
echo $rep_courant
cd $($rep_courant)
cd "$rep_courant"
mais idem
[^] # Re: passage paramètre ?
Posté par blobmaster . Évalué à 2.
Exec=reduc.sh "%f"
ça marche ?
Parce que a vu de nez comme ça je dirais que $1 s'arrêt à l'espace.
[^] # Re: passage paramètre ?
Posté par gotcha5832 . Évalué à 1.
mon code:
Exec=reduc.sh "%f"
et
echo 'origin'
echo $1
rep_courant="${1// /\ }"
echo 'rep_courant'
echo $rep_courant
echo 'cd1'
cd $rep_courant
echo 'cd2'
cd '$rep_courant'
echo 'cd3'
cd "$rep_courant"
echo 'cd4'
cd $($rep_courant)
Resultat:
origin
/home/sacha/test image
rep_courant
/home/sacha/test\ image
cd1
/bin/reduc.sh: line 11: cd: /home/sacha/test\: Aucun fichier ou répertoire de ce type
cd2
/bin/reduc.sh: line 13: cd: $rep_courant: Aucun fichier ou répertoire de ce type
cd3
/bin/reduc.sh: line 15: cd: /home/sacha/test\ image: Aucun fichier ou répertoire de ce type
cd4
/bin/reduc.sh: line 17: /home/sacha/test\: Aucun fichier ou répertoire de ce type
Le dossier reduc existe déjà
[^] # Re: passage paramètre ?
Posté par blobmaster . Évalué à 1.
rep_courant="${1// /\ }"
un
cd "$1"
suffirait et marcherait je pense, en tout cas chez moi c'est le cas.
[^] # Merci
Posté par gotcha5832 . Évalué à 1.
C'est celà
#!/bin/bash
# Nom du nouveau répertoire
NV_DOSSIER=reduc
echo 'dossier'
echo $1
cd "$1"
# Création du nouveau dossier s'il n'existe pas
if [ -d $NV_DOSSIER ] ;
then
echo "Le dossier reduc existe déjà"
else
mkdir $NV_DOSSIER
fi
rep=$(pwd)
jourmois=$(date +'%d%m')
rep="${rep##*/}"
rep="${rep// /-}"
# Pour toutes les photos (JPG) du répertoire
for image in *[jJ][pP][gG] ;
do
width=$(identify -format '%w' "$image")
height=$(identify -format '%h' "$image")
ratio=$(echo "scale=2; $height / $width" |bc)
echo $ratio
if [ $ratio '<' .70 ]
then
image="${image##*/}"
nv_nom=$(printf '%s_%s_%s\n' ${rep} ${jourmois} $image) #on dit merci à Fred
# Réduit l'image en 601x400
convert "$image" -resize 601x400 "$NV_DOSSIER/$nv_nom"
# fusione l'image avec un calque contenant les coins
composite -gravity center /home/sacha/Images/cadre.png "$NV_DOSSIER/$nv_nom" "$NV_DOSSIER/$nv_nom"
# fin de la boucle FOR
else
nv_nom=$(printf 'thai_prod_%s_%s.jpg\n' ${rep} ${jourmois}) #on dit merci à Fred
# Réduit l'image en 601x400
convert "$image" -resize 200x150 "$NV_DOSSIER/$nv_nom"
# fusione l'image avec un calque contenant les coins
composite -gravity center /home/sacha/Images/cadremini.png "$NV_DOSSIER/$nv_nom" "$NV_DOSSIER/$nv_nom"
fi
done
echo '-Fini !!!'
exit
Mille merci
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.