J'ai répondu une question similaire sur Stack Overflow, à l'époque où je travaillais encore principalement dans High Sierra. Je l'ai testé aujourd'hui et il fonctionne toujours sur Catalina.
Voici la partie saillante de cette réponse :
tell application id "com.apple.systemevents" to set the value of ¬
attribute "AXMinimized" of every window of every process ¬
to true
Malheureusement, il ne va pas les minimiser tous simultanément, ce qui serait charmant. Il les fait un par un, sans nécessairement commencer par celui qui se trouve juste devant vous. Par conséquent, si vous avez de nombreuses fenêtres ouvertes, il peut sembler au premier abord qu'elle ne fait rien, mais en fait elle minimise les fenêtres masquées par celle qui se trouve le plus en avant), et elles seront minimisées à leur tour, ce qui est amusant à voir la première fois, mais irritant à chaque fois que vous voulez juste que ce soit fait maintenant.
Un autre point que @user3439894 m'a gentiment rappelé est que Événements du système ne connaît que les objets qui existent sur le bureau actuellement actif. Par conséquent, cette méthode ne permettra pas de minimiser les fenêtres qui se trouvent sur d'autres bureaux/espaces hors écran.
Toutefois, si vous ne cherchez pas spécifiquement à minimiser Windows, mais plutôt à le mettre hors de vue, vous pouvez choisir de masquer les processus à la place :
tell application id "com.apple.systemevents" to ¬
set visible of every process to false
L'inconvénient majeur ici est que Finder reste visible, et devra avoir une ligne de code supplémentaire après pour se débarrasser de ses fenêtres, ce que je suggère de faire :
tell application id "com.apple.Finder" to set ¬
miniaturized of every window to true
Les avantages, cependant, sont que toutes les fenêtres de tous les bureaux/écrans seront supprimées, et pas seulement celles qui se trouvent sur votre bureau actuel ; et cela se fait très rapidement, presque instantanément (à l'exception de Finder ). L'activation de l'application en cliquant sur son icône dans le dock, par exemple, rend le processus à nouveau visible ; en général, cela signifie que l'application et toutes ses fenêtres qui étaient précédemment visibles réapparaîtront en masse. Que cela soit positif ou négatif dépend de vos besoins.
La raison pour laquelle votre code ne fonctionne pas est que miniaturised
n'est pas une propriété de l window
appartenant à la suite de processus de Événements système Dictionnaire AppleScript. Il s'agit de est une propriété de window
objets appartenant à l standard suite de tout scriptable le dictionnaire AppleScript de l'application (y compris SystemEvents bien qu'il n'ait pas de fenêtres propres) ; bien que partageant un nom commun, ces deux window
Les objets de classe sont des objets distincts et non liés dans AppleScript.