J'essaie de produire une commande shell basée sur Applescript qui indique à l'application Aperçu de Mac OS X de fermer une fenêtre particulière.
#!/bin/sh
osascript <<EOF
tell application "Preview"
close "$1"
end tell
EOF
Mais cela ne fonctionne pas: je reçois le message d'erreur
25:52: execution error: Preview got an error: "musixdoc.pdf" doesn’t understand the close message. (-1708)
Question connexe: comment fermer une application OS X à partir de la ligne de commande à l'aide d'un alias défini dans mon .bash_profile?
macos
shell-script
applescript
Ewan Delanoy
la source
la source
Réponses:
Obtenir Preview.app pour accepter les commandes AppleScript
Par défaut, AppleScripting Preview ne fonctionnera pas car il manque le dictionnaire nécessaire à Preview. Pour résoudre ce problème, consultez la réponse de Lauri ici , ce qui explique le réglage
NSAppleScriptEnabled
de Preview.app.Quittez Preview.app, puis ouvrez un terminal et entrez:
Fermer une fenêtre à partir d'une application
1) Par index de fenêtre ou nom de la fenêtre
La commande pour fermer une fenêtre d'une application nommée ressemblerait à ceci:
… Ou si vous souhaitez fermer une fenêtre de document nommée, par exemple
foo.jpg
:Donc, dans votre script shell, ce serait:
Ici, le premier argument transmis au script est le nom de la fenêtre que vous souhaitez fermer, par exemple
./quit.sh foo.jpg
. Notez que si votre fichier contient des espaces, vous devez citer le nom du fichier, par exemple./quit.sh "foo bar.jpg"
.Ou si vous souhaitez fermer des fenêtres arbitraires à partir de n'importe quelle application, utilisez ceci:
Ici, vous utiliseriez
./quit.sh Preview foo.jpg
par exemple.2) Par nom de fichier
Si vous souhaitez fermer une fenêtre qui appartient à un certain document, mais en fournissant le nom du fichier, vous avez besoin d'autre chose. Cela est dû au fait qu'un fichier PDF de plusieurs pages peut s'afficher en tant que
foo.pdf (Page 1 of 42)
, mais vous souhaitez simplement passerfoo.pdf
au AppleScript.Ici, nous parcourons les fenêtres et comparons les noms de fichiers avec l'argument passé au script:
Maintenant, vous pouvez simplement appeler
./quit.sh foo.pdf
. De manière généralisée, pour toutes les applications avec des fenêtres de document nommées, ce serait:Mise en garde: Aperçu à fermeture automatique.app
Preview.app est l'une de ces applications qui se ferme automatiquement une fois sa dernière fenêtre de document fermée. Il le fait pour économiser de la mémoire et "nettoyer". Pour désactiver ce comportement, exécutez ce qui suit:
Bien sûr, pour annuler cela, passez
TRUE
àFALSE
.Utiliser des fonctions au lieu de scripts
Enfin, je vous suggère de mettre vos scripts dans une fonction qui est toujours disponible dans votre shell. Pour ce faire, ajoutez les scripts à votre
~/.bash_profile
. Créez ce fichier s'il n'existe pas.Une fois que vous avez enregistré votre profil bash et redémarré le shell, vous pouvez appeler
cw Preview foo.pdf
de partout.la source
tell application "Preview" to windows
, cela vous donne-t-il des résultats? Quel script utilisez-vous exactement?La réponse de slhck semble bonne et approfondie. Attention, exécutez la troisième ligne de code :
'semble' avoir provoqué le plantage de Preview à chaque lancement avec les éléments suivants:
Selon le manuel de codesign, cela
-f
oblige «le code à remplacer et la signature existante» et-s
«à signer le code au chemin indiqué»… dans ce cas-
Apparemment, l'aperçu est désormais incorrectement signé et inutilisable. :(
la source