J'ai écrit un service Automator qui exécute un petit applescript pour régler le volume et jouer un son.
Pour activer le service, je l'ai copié dans /Library/Services
et a fait un chmod +x
. Pour enregistrer un raccourci clavier pour le service, j'ai exécuté defaults write -g NSUserKeyEquivalents '{"HelloWorld" = "$@~1";}'
où HelloWorld
est le nom du service tel qu'il apparaît dans le menu Services et $@~1
mon raccourci (qui se résume à +++1)
Après un redémarrage, je peux voir le service dans le menu avec le raccourci à côté. Lorsque j'appuie sur la combinaison de touches désirée, une alerte s'affiche me disant que le script a rencontré une erreur. Il y a également une erreur dans le journal :
Détection de contraintes manquantes pour . Il ne peut pas être placé car il n'y a pas assez de contraintes pour définir complètement la taille et l'origine. Ajoutez les contraintes manquantes ou définissez translatesAutoresizingMaskIntoConstraints=YES et les contraintes seront générées pour vous. Si cette vue est mise en page manuellement sur MacOS 10.12 et plus, vous pouvez choisir de ne pas appeler [super layout] à partir de votre surcharge. Définissez un point d'arrêt sur DETECTED_MISSING_CONSTRAINTS pour déboguer. Cette erreur ne sera enregistrée qu'une seule fois.
Cela suggère une erreur avec une vue qui n'est pas initialisée correctement, mais je n'utilise aucune vue.
Voici le contenu du flux de travail Automator :
on run
if (get output volume of (get volume settings)) < 50 then
set volume output volume 50
end if
do shell script "afplay /Library/Application\ Support/HelloWorld/hello.mp3"
return
end run
0 votes
J'ai résolu le problème. Vous ne pouvez pas échapper aux espaces dans
do shell script
arguments. J'ai dû mettre le nom du fichier entre guillemets doubles (que l'on peut échapper). Le message d'erreur est extrêmement trompeur !0 votes
Il est tout à fait acceptable d'écrire une réponse à sa propre question et il est préférable de la placer dans un commentaire. Après la période d'attente, vous pouvez accepter votre propre réponse afin d'améliorer votre réputation.
0 votes
veuillez EDITER votre question avec une note précisant que vos "espaces échappés" ne sont pas valides dans un argument script de l'interpréteur de commandes. @clemsamlang Je ne comprends pas ce que vous voulez dire par là, désolé.
0 votes
Ce que je voulais dire, c'est que vous pourriez écrire un très court "[ EDIT : J'ai trouvé la réponse, regardez la réponse que j'ai choisie ]" au début de votre question. . . . (J'efface mon commentaire précédent puisque vous avez posté vos "trouvailles".) Merci et +1.