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 résout en + ⌥ + ⇧ + 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 souhaitée, une alerte s'affiche pour signaler que le script a rencontré une erreur. Il apparaît également une erreur dans le journal:
Détection des contraintes manquantes pour. Il ne peut pas être placé car le nombre de contraintes est insuffisant 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 présentée manuellement sur macOS 10.12 et versions ultérieures, vous pouvez choisir de ne pas appeler la [super présentation] à partir de votre substitution. Définissez un point d'arrêt sur DETECTED_MISSING_CONSTRAINTS pour le débogage. Cette erreur ne sera consignée qu'une 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
do shell script
arguments. J'ai dû mettre le nom du fichier entre guillemets (que vous pouvez échapper). Le message d'erreur est massivement trompeur!Réponses:
Comme cela a été demandé dans les commentaires (désolé, cela a pris si longtemps), voici une version fonctionnelle du script. L'astuce consiste à mettre le nom de fichier (qui contient des espaces) entre guillemets, car ceux-ci peuvent être échappés.
la source
do shell script
commander , il suffit d’utiliser deux barres obliques inverses et non une lorsqu’on échappe à un espacedo shell script
commander , par exemple.,do shell script "afplay /Library/Application\\ Support/HelloWorld/hello.mp3"
fonctionnerait très bien!