Posiziona le finestre tramite la riga di comando

0

Ho un po 'di rubino che ridimensiona e riposiziona le finestre in un layout salvato. Utilizza il un frammento di AppleScript per effettuare effettivamente il posizionamento:

osascript -e 'tell application "Twitter" to set the bounds of the front window to {894, 22, 1604, 1049}'

Tuttavia ci sono due problemi:

  1. Questo non funziona per ogni app, ad esempio quando la uso per impostare la posizione di Gitbox , ottengo il seguente errore :

    37:43: execution error: Gitbox got an error: Can’t get bounds of window 1. (-1728)
    
  2. Alcune posizioni della finestra non vengono salvate, ad esempio se eseguo lo script per riposizionare tutto, quindi chiudo la finestra di MacVim e ne apro una nuova, non ricorderà la posizione della finestra che era appena chiusa .

Esiste un modo più efficace per impostare le dimensioni e le posizioni di Windows?

    
posta aaronstacy 11.12.2012 - 14:24
fonte

1 risposta

6

Il problema che si verifica con Gitbox è perché non tutte le applicazioni sono programmabili. Il che significa che non puoi parlarci tramite applecript. Quello che puoi fare per le app del genere è utilizzare gli eventi di sistema per farne un po 'per te.

* Verifica se lo script è *

set theApp to "Gitbox"

tell application "System Events"

    set isScriptable to has scripting terminology of application process theApp

    if isScriptable then
        my scriptableApp(theApp)

    else
        my nonScriptableApp(theApp)

    end if
end tell
on scriptableApp(theApp)
    tell application theApp to get the bounds of the front window
end scriptableApp
on nonScriptableApp(theApp)
    tell application "System Events"
        set the props to get the properties of the front window of application process theApp
        set theSBounds to {size, position} of props
    end tell
end nonScriptableApp

Ottieni i limiti tramite eventi di sistema

#get the bounds via system events 

tell application "System Events"
    set the props to get the properties of the front window of application process "Gitbox"
    set theSBounds to {size, position} of props
end tell

Imposta i limiti tramite eventi di sistema

--set theSBounds to {{799, 490}, {513, 430}} #This is a test line that will set the bounds list so you can see the set bound code working un comment to use it

#set the bounds via system events 
tell application "System Events"
    set size of front window of application process "Gitbox" to item 1 of theSBounds
    set position of front window of application process "Gitbox" to item 2 of theSBounds
end tell
    
risposta data 11.12.2012 - 16:19
fonte

Leggi altre domande sui tag