Imposta variabile Bash come icona in osascript -e Visualizza finestra di dialogo con l'icona

1

Ho uno script bash che utilizza un codice osascript -e per una finestra di dialogo. Voglio usare un'icona personalizzata in quella finestra di dialogo. Tuttavia, non capisco come codificarlo in modo che sia completamente portatile in modo da renderlo eseguibile indipendentemente da dove un utente possa inserirlo nel suo file system.


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'
Attualmente l'unico modo in cui riesco a farlo funzionare con un'icona personalizzata è codificarlo e non credo sia una buona idea.

Le soluzioni dovrebbero essere prive di componenti aggiuntivi e devono funzionare su Mac OS 10.6 - 10.10.

Apprezza l'aiuto che puoi rendere.

    
posta rogerFernand 17.05.2015 - 22:22
fonte

1 risposta

3

Ciò che funzionerà sempre è la codifica del file icona con base64 -b 64 (per mantenere le linee abbastanza corte), includilo nello script della tua shell come un documento qui e decodificandolo al volo.

Per creare una versione codificata Base64 del tuo file icona, esegui

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

(Questo devi fare solo una volta).

Quindi apri lo script della shell nel tuo editor e inserisci myicon.base64 (che potrebbe essere piuttosto grande) nello spot corretto

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

Lo script finale sarà quindi il seguente

...
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
    
risposta data 17.05.2015 - 22:38
fonte

Leggi altre domande sui tag