Establecer la variable Bash como icono en osascript -e Mostrar diálogo con el icono

1

Tengo un script de bash que utiliza un código osascript -e para un diálogo. Quiero usar un icono personalizado en ese diálogo. Sin embargo, no entiendo cómo codificarlo, por lo que es completamente portátil para hacerlo ejecutable sin importar dónde un usuario lo pueda poner en su sistema de archivos.


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'
Actualmente, la única forma en que puedo hacer que funcione con un ícono personalizado es mediante la codificación y no creo que sea una buena idea.

Las soluciones deben ser w / o complementos y deben funcionar en sistemas operativos Mac 10.6 - 10.10.

Aprecie cualquier ayuda que pueda prestar.

    
pregunta rogerFernand 17.05.2015 - 22:22

1 respuesta

3

Lo que siempre funcionará es codificar el archivo de iconos con base64 -b 64 (para mantener las líneas lo suficientemente cortas), incluirlo en su script de shell como documento aquí y descodificarlo sobre la marcha.

Para crear una versión codificada en base64 de su archivo de icono, ejecute

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

(Esto solo debes hacerlo una vez).

Luego, abra su script de shell en su editor y inserte myicon.base64 (que podría ser bastante grande) en el lugar correcto

...
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

La secuencia de comandos final tendrá el siguiente aspecto

...
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
    
respondido por el nohillside 17.05.2015 - 22:38

Lea otras preguntas en las etiquetas