En jouant avec AppleScript, je veux manipuler l'emplacement de quelques fenêtres avec position
mais j'ai du mal à définir le moniteur. Actuellement, j'ai plusieurs moniteurs de tailles et de marques différentes auxquels je me connecte avec mon MacBook lors de mes déplacements. La seule occurrence commune avec les quatre moniteurs auxquels je me connecte est que le moniteur que je veux manipuler inclut la barre de menu.
En testant avec do shell script "system_profiler SPDisplaysDataType
je ne suis pas sûr si le texte retourné de Main Display: Yes
considère le principal être là où se trouve la barre de menu à partir de l'extraction :
Graphics/Displays:
Intel Iris Pro:
Chipset Model: Intel Iris Pro
Type: GPU
Bus: Intégré
VRAM (Dynamic, Max): 1536 Mo
Métal : Pris en charge
Affichages :
Écran couleur LCD :
Type d'affichage : Écran Retina LCD intégré
Résolution : 2880 x 1800 Retina
Miroir : Désactivé
En ligne : Oui
Rotation : Pris en charge
Ajuster automatiquement la luminosité : Oui
Type de connexion : DisplayPort
Écran Thunderbolt :
Type d'affichage : LCD
Résolution : 2560 x 1440
Écran principal : Oui
Miroir : Désactivé
En ligne : Oui
Rotation : Pris en charge
Ajuster automatiquement la luminosité : Non
Type de connexion : DisplayPort
Si mon hypothèse concernant le Main Display
est correcte, comment devrais-je grep correctement la résolution de l'affichage principal identifié afin de pouvoir manipuler les fenêtres ?
Lorsque je fais des recherches, il semble que certaines personnes se contentent d'entrer dans chaque affichage :
- Positionner une fenêtre avec AppleScript en utilisant deux moniteurs
- Exécuter un script Apple pour un moniteur spécifique
- Impossible d'obtenir ou de régler la taille de fenêtre de certaines applications en utilisant AppleScript ?
- Définir la position de la fenêtre avec AppleScript
Je ne sais donc pas si cela constituerait deux questions en une. Je suis quelque peu perplexe sur la manière dont la séquence est déterminée lors de la connexion à plusieurs moniteurs (par exemple, aujourd'hui je pourrais être connecté à un écran Thunderbolt mais demain je pourrais être connecté à deux moniteurs Dells via mes deux DisplayPorts) et s'il y a un moyen de cibler un moniteur en particulier en fonction de la barre de menu.
Je peux déjà détecter l'application et sa taille avec :
tell application "System Events" to tell application process "Notes" to set theSize to get size of window 1
set theWidth to item 1 of theSize
set theHeight to item 2 of theSize
mais mon problème réside dans la détermination de la résolution afin de pouvoir calculer la position
et les bounds
pour déplacer la fenêtre de l'application.