1 votes

Définir la variable Bash comme icône dans osascript -e Afficher la boîte de dialogue avec l'icône

J'ai un bash script qui utilise des osascript -e code pour un dialogue. Je veux utiliser une icône personnalisée dans cette boîte de dialogue. Cependant, je ne comprends pas comment le coder de façon à ce qu'il soit complètement portable et exécutable, quel que soit l'endroit où l'utilisateur le place dans son système de fichiers.

cd "$(dirname "$0")/../../"
CONTENTS="$PWD"
export ICNSPATH="$CONTENTS/Resources/path/to/icon/Myicon.icns"
osascript -e 'tell application id "com.apple.systemuiserver"' -e 'display dialog "Lorem ipsum dolor sit amet." buttons {"Cancel", "Okay"} with icon '$ICNSPATH' as alias' -e 'end tell'

Actuellement, la seule façon de le faire fonctionner avec une icône personnalisée est de le coder en dur et je ne pense pas que ce soit une bonne idée.

Les solutions ne doivent pas comporter de modules complémentaires et doivent fonctionner sur Mac OS 10.6 - 10.10.

J'apprécie toute aide que vous pouvez m'apporter.

3voto

nohillside Points 82672

Ce qui fonctionnera toujours est d'encoder le fichier d'icône avec base64 -b 64 (pour garder les lignes assez courtes), incluez-le dans votre script shell comme un document here et décodez-le à la volée.

Pour créer une version encodée en base64 de votre fichier d'icône, exécutez

base64 -b 64 -i path/to/icon/Myicon.icns > myicon.base64

(Vous ne devez le faire qu'une seule fois).

Ensuite, ouvrez votre shell script dans votre éditeur et insérer myicon.base64 (qui peut être assez grand) au bon endroit.

...
ICNSPATH=${TMPDIR:-/tmp}/icon.$$.icns
base64 -D -o $ICNSPATH <<"END_OF_ICON"
** replace with content of myicon.base64 **
END_OF_ICON

osascript -e '... with icon '$ICNSPATH' as alias' # write full command here
rm -f $ICNSPATH

Le script final ressemblera alors à ce qui suit

...
ICNSPATH=${TMPDIR:-/tmp}/icon.$$.icns
base64 -D -o $ICNSPATH <<"END_OF_ICON"
aG93IHRvIGNvZGUgaXQgc28gaXQncyBjb21wbGV0ZWx5IHBvcnRhYmxlIHNvIGFz
...
eSBwdXQgaXQgaW4gaGlzIGZpbGUgc3lzdGVtLgoK
END_OF_ICON

osascript -e '... with icon '$ICNSPATH' as alias'
rm -f $ICNSPATH

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X