Usando applecript, ¿cómo mover una ventana a mi segunda pantalla?

6

He experimentado con absolutamente todas las opciones de secuencias de comandos posibles que puedo encontrar en la web, y no importa lo que haga, no puedo mover una ventana de FaceTime a mi pantalla secundaria.

Esto funciona ...

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

pero con un error fatal que siempre se detiene en seco, en el borde derecho de la pantalla # 1 (la pantalla de la izquierda).

Si configuro la coordenada X en menos de 2560 (mi ancho en ambas pantallas), entonces funciona perfectamente, pero cualquier intento de moverlo más hacia la derecha y, por lo tanto, en la pantalla # 2, no funcionará.

No sé si está relacionado, pero mi pantalla principal es un Dell externo, y mi pantalla secundaria es la pantalla integrada del 27 "iMac. Dell a la izquierda, iMac a la derecha.

Sin embargo, resulta interesante que si arrastro manualmente la ventana a la pantalla # 2 y ejecuto el mismo script anterior, entonces se posiciona correctamente en la pantalla # 2. Parece que los números son relativos a cualquier visualización en la que la ventana esté ACTUALMENTE encendida. ¿Cómo puedo conseguir que posicione absolutamente la ventana en la pantalla # 2?

    
pregunta Jonathan van Clute 07.10.2012 - 04:55

2 respuestas

2

Parece que Apple ha configurado la ventana para que esté al tanto de qué pantalla debería estar encendida y no se extienda más allá de eso. Muestra los límites al iniciar.

Un efecto secundario de esto es que la aplicación hará lo mismo con las llamadas desde el Applecript.

Puede ver esto si cruza la ventana a través de ambas pantallas. Luego salga y reinicie la aplicación.

La ventana se abrirá solo en una de las pantallas y no se colocará a horcajadas.

Si hiciste lo mismo para decir Safari. La ventana que tenías a horcajadas todavía estaría a horcajadas.

Creo que no tienes suerte si lo haces de alguna manera útil.

La única forma de hacerlo fue obtener la ventana y mostrar los detalles del archivo plist '~ / Library / Preferences / com.apple.FaceTime' mientras la ventana estaba en la segunda pantalla.

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

Luego, cuando la aplicación estaba en la primera pantalla.

Ejecuta un script que cierra la aplicación, vuelve a escribir la entrada 'NSWindow Frame FaceTimeWindowFrame' en la lista con la información para la posición y la pantalla que tenía de antes.

Vuelva a activar la aplicación, que se abrirá en la segunda pantalla. Y luego muévalo con el código de AppleScript normal.

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

Pero como he dicho no es muy útil. :-(

    
respondido por el markhunte 07.10.2012 - 12:59
2

Si bien esto no responde directamente a la pregunta sobre el uso de applecript, puede ser una respuesta válida para el problema real de mover ventanas.

Puede utilizar una pequeña aplicación de terceros como Slate .

Con una configuración menor, se puede configurar para mover la ventana por título cuando se inicia Slate, cuando se presiona una tecla o cuando se cumple una condición.

También se puede configurar para mover cualquier ventana a una posición específica cuando se presiona una tecla o se cumple una condición.

Slate puede ajustarse a la solicitud porque su huella es extremadamente pequeña y no requiere privilegios de administración.

Una buena introducción:

enlace

    
respondido por el joshfindit 08.10.2013 - 16:14

Lea otras preguntas en las etiquetas