Avec AppleScript, comment déplacer une fenêtre sur mon deuxième écran?

6

J'ai expérimenté absolument toutes les options de script possibles sur le Web et, quoi que je fasse, je ne peux pas déplacer une fenêtre FaceTime sur mon affichage secondaire.

Cela marche...

tell application "System Events" to tell process "FaceTime"
  tell application "FaceTime" to activate
  tell front window to set position to {3600, 500}
end tell

mais avec un défaut fatal, il s’arrête toujours, sur le bord droit de l’écran n ° 1 (l’écran gauche).

Si je règle la coordonnée X sur une valeur inférieure à 2560 (ma largeur sur les deux écrans), alors cela fonctionnera parfaitement, mais toute tentative de la déplacer davantage vers la droite, et donc sur l'affichage n ° 2, ne fonctionnera pas.

Je ne sais pas s'il est lié, mais mon écran principal est un Dell externe et mon écran secondaire est l'écran intégré de l'iMac 27 ". Dell à gauche, iMac à droite.

Fait intéressant cependant, si je déplace manuellement la fenêtre sur l’affichage 2 et exécute le même script ci-dessus, elle se positionne correctement sur l’affichage 2. Il semble que les chiffres sont relatifs à ce que la fenêtre est actuellement affichée. Comment puis-je l'obtenir pour positionner absolument la fenêtre sur l'écran n ° 2?

Jonathan van Clute
la source

Réponses:

2

Il semble qu'Apple ait paramétré la fenêtre pour savoir ce que l'affichage devrait être activé et ne pas s'étendre en dehors des limites affichées lors du lancement.

Un effet secondaire de cela est que l'application fera la même chose avec les appels de AppleScript.

Vous pouvez le voir si vous chevauchez la fenêtre sur les deux écrans. Puis quittez et relancez l'application.

La fenêtre s’ouvrira sur un seul des écrans et ne sera pas chevauchée.

Si vous faites la même chose pour Safari, par exemple. La fenêtre que vous aviez chevauchée serait toujours chevauchante.

Je pense que vous n'avez pas de chance de le faire d'une manière utile.

La seule façon de le faire était d’obtenir la fenêtre et les détails d’affichage à partir du fichier «~ / Bibliothèque / Préférences / com.apple.FaceTime» de la liste de plis pendant que la fenêtre était au deuxième écran.

 (* read plist file *)
    do shell script "/usr/bin/defaults read ~/Library/Preferences/com.apple.FaceTime NSWindow\\ Frame\\ FaceTimeWindowFrame"

Ensuite, lorsque l'application était sur le premier écran.

Exécutez un script qui quitte l'application, réécrit l'entrée 'NSWindow Frame FaceTimeWindowFrame' dans la liste d'adresses avec les informations relatives à la position et à l'affichage que j'avais précédemment.

Activer l'application à nouveau, ce qui ouvrirait sur le deuxième écran. Puis déplacez-le avec le code normal d'AppleScript.

tell application "FaceTime" to quit
(do shell script "/usr/bin/defaults write ~/Library/Preferences/com.apple.FaceTime NSWindow\\ Frame\\ FaceTimeWindowFrame" & (" '2562 853 638 585 2560 240 1920 1200'") as string) --set to somewhere on my second screen

delay 1
tell application "System Events"

    tell application "FaceTime" to activate

    delay 4
    set position of window "FaceTime" of application process "FaceTime" to {3269, 315}

    end tell

Mais comme je l'ai dit pas très utile. :-(

markhunte
la source
WOW ... c'est une force brutale bien. Merci pour l'effort, mais vous avez raison ... pas vraiment utile. Quelle déception choquante! = (
Jonathan van Clute
2

Bien que cela ne réponde pas directement à la question de l'utilisation de AppleScript, il peut être une réponse valable pour le problème des fenêtres en mouvement.

Vous pouvez utiliser une petite application tierce comme Ardoise .

Avec une configuration mineure, vous pouvez définir le déplacement de la fenêtre titre par titre lors du lancement de Slate, lorsqu’une touche est appuyée ou lorsqu’une condition est remplie.

Il peut également être configuré pour déplacer une fenêtre vers une position spécifique lorsqu'une touche est enfoncée ou qu'une condition est remplie.

Slate peut correspondre à la demande car son encombrement au sol est extrêmement réduit et ne nécessite pas de privilèges d'administration.

Une bonne introduction:

http://mauriciogardini.com/post/43348489262/slate-a-mac-os-x-window-manager-for-power-users

joshfindit
la source
Alternative très cool, merci! Je n'étais pas marié à utiliser AppleScript, c'était la seule approche à laquelle je pouvais penser. Je vais essayer celui-ci la prochaine fois que je veux le faire.
Jonathan van Clute