Usando applescript, come spostare una finestra sul mio secondo display?

6

Ho sperimentato assolutamente tutte le possibili opzioni di scripting che posso trovare sul Web e, indipendentemente da ciò che faccio, non posso spostare una finestra FaceTime sul mio display secondario.

Funziona ...

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

ma con un difetto fatale che si ferma sempre in modo permanente, al margine destro del display # 1 (il display di sinistra).

Se imposto la coordinata X su qualsiasi valore inferiore a 2560 (la mia larghezza su entrambi gli schermi), allora funziona perfettamente, ma qualsiasi tentativo di spostarlo ulteriormente a destra, e quindi sul display # 2, non funzionerà.

Non so se è correlato, ma il mio display principale è un Dell esterno e il mio display secondario è il display integrato del 27 "iMac. Dell a sinistra, iMac a destra.

È interessante notare tuttavia che se trascino manualmente la finestra sul display # 2 e eseguo lo stesso script sopra, allora si posiziona correttamente sul display # 2. Sembra che i numeri siano relativi a qualsiasi visualizzazione della finestra ATTUALMENTE attiva. Come posso posizionarlo in modo assoluto sul display # 2?

    
posta Jonathan van Clute 07.10.2012 - 04:55
fonte

2 risposte

2

Sembra che Apple abbia impostato la finestra per essere consapevole di cosa Display dovrebbe essere acceso e non estendersi al di fuori di ciò. Visualizza i limiti al momento del lancio.

Un effetto collaterale di questo è che l'App farà la stessa cosa con le chiamate dal applescript.

Puoi vedere questo se sei a cavallo della finestra su entrambi i display. Quindi esci e riavvia l'app.

La finestra si aprirà solo su uno dei display e non sarà a cavalcioni.

Se hai fatto lo stesso per dire Safari. La finestra che avevi a cavallo sarebbe ancora a cavallo.

Penso che sei sfortunato a farlo in qualche modo utile.

L'unico modo per ottenerlo era ottenere la finestra e visualizzare i dettagli dal file plist '~ / Library / Preferences / com.apple.FaceTime' mentre la finestra era sul secondo display.

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

Poi, quando l'app era sul primo display.

Esegui uno script che chiude l'app, riscrive la voce "NSWindow Frame FaceTimeWindowFrame" nel plist con le informazioni per la posizione e la visualizzazione che avevo in precedenza.

Riattiva l'app, che si aprirà sul secondo display. E poi spostalo con il normale codice 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

Ma come ho detto non molto utile. : - (

    
risposta data 07.10.2012 - 12:59
fonte
2

Sebbene questo non risponda direttamente alla domanda sull'uso di applescript, potrebbe essere una risposta valida per il problema reale dello spostamento di windows.

Puoi utilizzare una piccola applicazione di terze parti come Slate .

Con una configurazione minore può essere impostato per spostare la finestra per titolo all'avvio di Slate, quando viene premuto un tasto o quando viene soddisfatta una condizione.

Può anche essere configurato per spostare qualsiasi finestra in una posizione specifica quando viene premuto un tasto o viene soddisfatta una condizione.

L'ardesia può adattarsi alla richiesta perché il suo ingombro è estremamente ridotto e non richiede i privilegi di amministrazione.

Una buona introduzione:

link

    
risposta data 08.10.2013 - 16:14
fonte

Leggi altre domande sui tag