Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/07/2012, à 13:49

arnaud_d

[Résolu] Script bash lancement de Gimp

Bonjour,

J'ai créé un script afin de paramétrer ma tablette graphique au moment du lancement de GIMP.
J'ai renommé le binaire original de gimp en /usr/bin/gimp-2.8_original et je l'appelle depuis mon script /usr/bin/gimp [edit : non, mon script se situe à /usr/local/bin/gimp, voir messages ci-dessous]. Ceci afin de leurrer tous les programmes qui appellent gimp (genre Shotwell).

Il faut que le programme s'assure que gimp (/usr/bin/gimp-2.8_original) n'est pas déjà lancé, sinon il ne faut pas essayer de reconfigurer la tablette (sinon ça engendre d'autres problème que je ne vais pas détailler).
A la fermeture de Gimp, il faut reconfigurer la tablette en mode "normal".

Voici mes problèmes :

  • Je trouver mon script super moche, je me demande si je ne peux pas l'améliorer

  • Je ne comprend pas pourquoi il me faut définir le cas où aucun nom de fichier n'est donné en paramètre. Si je ne différencie pas ce cas, gimp se lance en me disant que mon home n'est pas une image.

  • Je ne sais pas comment faire pour pourvoir ouvrir N fichier en même temps (sélection multiple par exemple)

#!/bin/sh

if pgrep -f /usr/bin/gimp-2.8_original > /dev/null
then
     # si gimp est déjà lancé, il n'y a pas besoin de reconfigurer la tablette
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut le l'ouvrir
          /usr/bin/gimp-2.8_original "$1"
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
else
     # si gimp n'est pas déjà lancé, il faut configurer la tablette
     notify-send -i /usr/share/pixmaps/wacomgimp.png -t 2000 "Configuration Bamboo : GIMP"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 "key x"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 "key d"
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut le l'ouvrir
          /usr/bin/gimp-2.8_original "$1"
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
     notify-send -i /usr/share/pixmaps/120pxinputtablet.png -t 2000 "Configuration Bamboo : DEFAUT"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 2
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 " "
fi

Pour transmettre tous les arguments (ouverture de N fichiers), j'avais pensé à remplacer

/usr/bin/gimp-2.8_original "$1"

par

     for i in $*
          do
             /usr/bin/gimp-2.8_original "$i"
          done

mais si un de mes fichiers a un nom contenant un espace ça ne marche plus. Et en plus il ne m'ouvre le deuxième fichier que si je ferme le premier.

Auriez-vous des conseils, idées, remarques à me faire ?

Merci beaucoup !

Dernière modification par arnaud_d (Le 12/07/2012, à 15:08)

Hors ligne

#2 Le 12/07/2012, à 14:43

darunia_goron

Re : [Résolu] Script bash lancement de Gimp

Une remarque : pour ma part, je n'aurai pas renommé le binaire original. Je te conseille de placer ton script dans /usr/local/bin. Comme ça, si ton PATH est correctement configuré (ce qui devrait être le cas si tu ne l'as pas modifié), la commande gimp lancera ton script et non le binaire original. Tu peux vérifier facilement avec quel exécutable est utilisé avec :

which gimp

L'avantage est que lors d'une mise à jour, par exemple, ton script ne sera pas écrasé par la nouvelle version.

Hors ligne

#3 Le 12/07/2012, à 14:47

arnaud_d

Re : [Résolu] Script bash lancement de Gimp

darunia_goron a écrit :

Une remarque : pour ma part, je n'aurai pas renommé le binaire original. Je te conseille de placer ton script dans /usr/local/bin. Comme ça, si ton PATH est correctement configuré (ce qui devrait être le cas si tu ne l'as pas modifié), la commande gimp lancera ton script et non le binaire original. Tu peux vérifier facilement avec quel exécutable est utilisé avec :

which gimp

L'avantage est que lors d'une mise à jour, par exemple, ton script ne sera pas écrasé par la nouvelle version.

Bonjour,

En fait tu as raison, c'est ce que j'ai fait, d'ailleurs which gimp me retourne /usr/local/bin/gimp.

/usr/bin/gimp est un lien symbolique vers mon script /usr/local/bin/gimp qui appelle /usr/bin/gimp-2.8_original.
Par contre shotwell appelle /usr/bin/gimp et non /usr/local/bin/gimp, je ne sais pas pourquoi. D'où la nécessite de créé un lien symbolique.

Sinon pour passer tous les arguments au binaire d'origine, tu as une idée ?

Dernière modification par arnaud_d (Le 12/07/2012, à 14:52)

Hors ligne

#4 Le 12/07/2012, à 14:54

pingouinux

Re : [Résolu] Script bash lancement de Gimp

Bonjour,
Essayer :

for i in "$@"

Hors ligne

#5 Le 12/07/2012, à 14:57

arnaud_d

Re : [Résolu] Script bash lancement de Gimp

pingouinux a écrit :

Bonjour,
Essayer :

for i in "$@"

Bonjour,

Alors mon script donne ceci :

#!/bin/sh

if pgrep -f /usr/bin/gimp-2.8_original > /dev/null
then
     # si gimp est déjà lancé, il n'y a pas besoin de reconfigurer la tablette
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut le l'ouvrir
          for i in "$@"
          do   
               /usr/bin/gimp-2.8_original "$i"
          done
          
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
else
     # si gimp n'est pas déjà lancé, il faut configurer la tablette
     notify-send -i /usr/share/pixmaps/wacomgimp.png -t 2000 "Configuration Bamboo : GIMP"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 "key x"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 "key d"
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut le l'ouvrir
          for i in "$@"
          do   
               /usr/bin/gimp-2.8_original "$i"
          done
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
     notify-send -i /usr/share/pixmaps/120pxinputtablet.png -t 2000 "Configuration Bamboo : DEFAUT"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 2
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 " "
fi

Par contre, il ne m'ouvre la deuxième image que lorsque j'ai fermé gimp, ouvert pour la première...

Hors ligne

#6 Le 12/07/2012, à 15:05

arnaud_d

Re : [Résolu] Script bash lancement de Gimp

J'ai enlevé la boucle et ai remplacé

/usr/bin/gimp-2.8_original "$i"

par

/usr/bin/gimp-2.8_original "$@"

et ça marche, merci pingouinux !

#!/bin/sh

if pgrep -f /usr/bin/gimp-2.8_original > /dev/null
then
     # si gimp est déjà lancé, il n'y a pas besoin de reconfigurer la tablette
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut le l'ouvrir
          /usr/bin/gimp-2.8_original "$@"          
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
else
     # si gimp n'est pas déjà lancé, il faut configurer la tablette
     notify-send -i /usr/share/pixmaps/wacomgimp.png -t 2000 "Configuration Bamboo : GIMP"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 "key x"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 "key d"
     if [ $# -gt 0 ]
     then
          # si un fichier a été donné en argument, il faut l'ouvrir
          /usr/bin/gimp-2.8_original "$@"
     else
          # si aucun fichier n'a été donné, il ne faut pas donner d'argument sinon gimp essaie
          # d'ouvrir le dossier home
          /usr/bin/gimp-2.8_original
     fi
     notify-send -i /usr/share/pixmaps/120pxinputtablet.png -t 2000 "Configuration Bamboo : DEFAUT"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 2
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 " "
fi

Et sinon vous savez comment je peux améliorer mon script ?

Hors ligne

#7 Le 12/07/2012, à 15:07

louis94

Re : [Résolu] Script bash lancement de Gimp

Bonjour,

Avec "$@", tu peux faire (même si aucun argument n'est donné) :

for i in "$@"; do
    ARGS="$ARGS \"$i\""
done
/usr/bin/gimp-2.8_original $ARGS

Louis

edit: Mais puisque ça marche autrement...

Dernière modification par louis94 (Le 12/07/2012, à 15:08)

Hors ligne

#8 Le 12/07/2012, à 15:08

arnaud_d

Re : [Résolu] Script bash lancement de Gimp

En fait, ta solution résout même mon problème de gimp qui essaie d'ouvrir le home !!

Du coup j'ai pu simplifier en :

#!/bin/sh

if pgrep -f /usr/bin/gimp-2.8_original > /dev/null
then
     # si gimp est déjà lancé, il n'y a pas besoin de reconfigurer la tablette
     /usr/bin/gimp-2.8_original "$@"
else
     # si gimp n'est pas déjà lancé, il faut configurer la tablette
     notify-send -i /usr/share/pixmaps/wacomgimp.png -t 2000 "Configuration Bamboo : GIMP"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 "key x"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 "key d"
     /usr/bin/gimp-2.8_original "$@"
     notify-send -i /usr/share/pixmaps/120pxinputtablet.png -t 2000 "Configuration Bamboo : DEFAUT"
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 2 2
     xsetwacom set "Wacom Bamboo Pen Pen stylus" Button 3 " "
fi

Ce qui me convient nettement plus !

MERCI !

Hors ligne

#9 Le 12/07/2012, à 15:28

Postmortem

Re : [Résolu] Script bash lancement de Gimp

louis94 a écrit :

Bonjour,

Avec "$@", tu peux faire (même si aucun argument n'est donné) :

for i in "$@"; do
    ARGS="$ARGS \"$i\""
done
/usr/bin/gimp-2.8_original $ARGS

Louis

edit: Mais puisque ça marche autrement...

Salut,
Je ne suis pas certain, mais avec ta méthode, gimp risque de chercher des noms de fichiers ayant le caractère " au début et à la fin du nom.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 12/07/2012, à 15:38

louis94

Re : [Résolu] Script bash lancement de Gimp

Postmortem a écrit :

Je ne suis pas certain, mais avec ta méthode, gimp risque de chercher des noms de fichiers ayant le caractère " au début et à la fin du nom.

Bien vu !
Il faudrait alors remplacer la dernière ligne par :

eval /usr/bin/gimp-2.8_original $ARGS

Ça devient très sale, comme code hmm

Hors ligne

#11 Le 12/07/2012, à 15:58

Postmortem

Re : [Résolu] Script bash lancement de Gimp

louis94 a écrit :
Postmortem a écrit :

Je ne suis pas certain, mais avec ta méthode, gimp risque de chercher des noms de fichiers ayant le caractère " au début et à la fin du nom.

Bien vu !
Il faudrait alors remplacer la dernière ligne par :

eval /usr/bin/gimp-2.8_original $ARGS

Ça devient très sale, comme code hmm

Comme l'a fait arnaud_d, c'est comme ça le mieux :

/usr/bin/gimp-2.8_original "$@"

Ça gère tout bien les espaces comme il faut.

Dernière modification par Postmortem (Le 12/07/2012, à 16:02)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne