Ouvrir le menu principal

MacGeneration

Recherche

OS X Mountain Lion : nouveautés AppleScript et Shell

Nicolas Furno

mercredi 01 août 2012 à 18:10 • 26

macOS

É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


  • 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

Rejoignez le Club iGen

Soutenez le travail d'une rédaction indépendante.

Rejoignez la plus grande communauté Apple francophone !

S'abonner

Tim Cook assistera à l’investiture de Donald Trump

15/01/2025 à 22:33

• 67


Les géants d’Internet se bougent pour Los Angeles, Apple compris

15/01/2025 à 21:00

• 26


Mac mini M4, des difficultés avec les appareils USB ?

15/01/2025 à 20:30

• 9


Promo : 25 % de réduction sur les chargeurs Nexode RobotGaN d'Ugreen

15/01/2025 à 18:30

• 4


Gemini intégré dans Gmail et Google Docs… au prix d’une augmentation du prix de Workspace

15/01/2025 à 17:30

• 10


Microsoft veut la peau de Windows 10 et va forcer le passage avec Office 365

15/01/2025 à 16:15

• 34


Fairphone change de logo, pas de mission

15/01/2025 à 15:15

• 8


Windows, Linux : Parallels peut enfin émuler des systèmes x86, mais c’est très limité

15/01/2025 à 15:00

• 13


Apple adopte UALink pour accélérer ses centres de données consacrés à l’intelligence artificielle

15/01/2025 à 13:30

• 1


Nouveau service : Vendez vos produits Apple en toute sécurité et profitez d’un paiement immédiat !

Partenaire


Le temps presse pour TikTok que la Chine verrait bien marier à X et Elon Musk

15/01/2025 à 12:00

• 54


Le succès renouvelé d’Interop, la compétition amicale pour améliorer Safari, Chrome et Firefox

15/01/2025 à 11:15

• 5


ChatGPT devient (aussi) un gestionnaire de tâches

15/01/2025 à 08:15

• 46


L'équipe de Severance 2 fait le spectacle en pleine gare de New York

15/01/2025 à 07:41

• 33


Kernel Panic : on répond aux questions des abonnés du Club iGen !

15/01/2025 à 07:30

• 8


Zuckerberg : de la masculinité à la censure en passant par Apple, le patron de Meta se lâche

14/01/2025 à 23:30

• 0