Éditeur AppleScript
L'Éditeur AppleScript est l'utilitaire fourni par Apple pour créer et modifier des scripts écrits en AppleScript, langage très simple. Dans OS X Mountain Lion, l'application reste globalement la même, mais on note un changement bienvenu : la prise en charge de la sauvegarde automatique et des versions.
L'application avait été privée jusque-là de ces deux nouveautés pourtant liées à OS X 10.7. La raison est technique : l'Éditeur AppleScript avait l'habitude de compiler le script au moment de la sauvegarde et ainsi de bloquer celle-ci en cas d'erreur dans le code. Ce modèle pose problème dans un environnement où le système sauvegarde automatiquement les fichiers et permet à l'utilisateur de quitter à tout moment une application, sans perdre ses données.
Ce script contient une erreur, il ne peut pas être sauvegardé.
Dans OS X Mountain Lion, l'éditeur sauvegarde automatiquement votre travail, même s'il n'est pas possible de le compiler. Pour y parvenir, Apple utilise une astuce : si vous n'enregistrez pas manuellement un script, l'Éditeur AppleScript sauvegarde à la fois la version compilée pour la dernière fois, et une copie du code au format RTF. La prochaine fois que vous ouvrirez l'éditeur, vous retrouverez le code complet et vous pourrez alors effectuer les modifications nécessaires.
Ce script est faux, mais l'Éditeur AppleScript l'a quand même enregistré et a placé le code impossible à compiler dans un fichier RTF.
Si vous tentez d'utiliser un script qui n'a pas été compilé, un message d'erreur apparaîtra pour vous faire comprendre qu'il y a un problème. Concrètement, Apple remplace le contenu du script original par une simple ligne qui provoque l'affichage de l'erreur.
Seul problème pour ce nouveau dispositif, le partage de script. Si vous envoyez un script qui n'a pas été compilé à un utilisateur d'OS X Lion ou d'une version antérieure, il ne pourra pas l'exploiter facilement. Dans ce cas, vous pouvez utiliser Read My Script, un utilitaire gratuit chargé d'extraire le code non compilé pour l'utiliser ensuite dans l'Éditeur AppleScript.
Autre changement à relever dans l'Éditeur AppleScript livré avec OS X 10.8, l'apparition d'une nouvelle commande "Exporter…" dans le menu "Fichier". Son fonctionnement est strictement la même que la commande "Enregistrer sous…" à une exception près : c'est désormais le seul moyen de bloquer un script en lecture seule.
Nouvelles commandes Shell
Apple a ajouté à son dernier système plusieurs commandes UNIX à utiliser dans le Terminal ou à intégrer à un script.
- caffeinate : bloque la mise en veille du Mac pendant une période donnée (en secondes), ou tant qu'une autre commande est en cours.
- Bloquer la mise en veille pendant une heure :
caffeinate -u -t 3600
- Bloquer la mise en veille du Mac tant que le processus qui suit n'est pas terminé :
caffeinate -s any-long-running-command -with arguments
- Bloquer la mise en veille pendant une heure :
- tccutil : gère la base de données associée aux données privées. Dans OS X Mountain Lion, l'accès aux contacts ou à la géolocalisation est (dés)activée pour chaque application. Pour le moment, cette commande permet uniquement de réinitialiser la liste des applications autorisées :
tccutil reset AddressBook
- fdesetup : outil qui active et contrôle le chiffrement FileVault. La commande permet notamment de forcer l'activation de la fonction sur tous les Mac sur le réseau.
- pgrep et pkill : deux commandes qui trouvent et arrêtent tous les processus associés à une application et à un utilitaire.
pkill -U bob Chrome
va interrompre tous les processus qui concernent Chrome pour l'utilisateur Bob, par exemple. - sharing : crée ou arrête des points de partage avec l'un des protocoles pris en charge par OS X (AFP, FTP ou SMB).
- serverinfo : détermine l'état d'un serveur, on peut l'utiliser dans une boucle conditionnelle.
Centre de notifications et script
Vous pouvez utiliser les notifications d'Apple pour afficher un message lié à votre script, ce qui peut être utile pour remonter une erreur ou signaler la fin d'un long processus. Apple n'offre pour l'heure aucun moyen d'afficher des notifications sans passer par une application, mais un développeur a conçu terminal-notifier.
Cette application contient simplement un outil en ligne de commande qui affiche une notification et ajoute une action en cas de clic. On peut l'utiliser avec le Terminal, directement dans un script Ruby, ou même dans un script AppleScript. Dans ce cas, le mieux est d'intégrer l'application terminal-notifier à un script enregistré sous la forme d'un paquet (fichier
.scptd
) ou d'une autre application. Dans tous les cas, cette méthode n'est pas idéale : les notifications affichent toujours l'icône du Terminal et il faut appeler non pas l'application, mais un fichier précis à l'intérieur de l'application pour l'activer :
./terminal-notifier.app/Contents/MacOS/terminal-notifier -message Essai -title "Essai de titre"
Les sources de cet utilitaire étant disponibles sur GitHub, rien ne vous empêche toutefois de modifier le projet dans Xcode et de changer l'icône, par exemple. Si vous souhaitez simplement l'utiliser dans vos scripts, vous pouvez télécharger une version prête à l'emploi et signée pour GateKeeper à cette adresse.
AppleScript dans Notes et Rappels
Avec OS X Mountain Lion, Apple n'abandonne pas l'AppleScript dans les applications qui étaient déjà compatibles. Mieux, Notes et Rappels sont compatibles avec le langage de script d'Apple. Le site Mac OS X Automation a publié un dossier complet sur les possibilités offertes par Apple pour Notes. On trouvera quelques exemples, dont un script qui archive les notes du mois dans un dossier spécifique.
La possibilité de scripter Rappels permet d'envisager l'ajout de tâches automatiquement en utilisant une règle mail, ou depuis une page Internet. Dans les deux cas, on peut gérer les comptes et accéder à la majorité des fonctions.
Ce script très simple ajoute une tâche dans la première liste de Rappels avec le nom de la page en cours de Safari comme titre de tâche, l'URL de la page dans les notes et une notification une heure après l'ajout.
Sur le même sujet :
- OS X Mountain Lion : Gatekeeper, sandboxing et AppleScript