Centro finestra sullo schermo

2

Sto creando alcuni screen cast e volevo centrare esattamente le mie finestre sullo schermo. Qualche buon modo per farlo su Mac? Ho trovato uno script Apple example (e alcuni schermi collegati) ma nessuno di questi supporta il centraggio del 'Terminale' verticalmente (sebbene supporti il centraggio di altre applicazioni verticalmente).

    
posta Kevin Sylvestre 05.03.2011 - 08:06
fonte

6 risposte

2

Mi piace usare SizeUp per gestire Windows, una delle quali è un'opzione centrale sullo schermo. Buona fortuna.

    
risposta data 05.03.2011 - 17:36
fonte
2

Non sono sicuro che questo possa fare ciò che stai cercando, ma Divvy è anche un ottimo software per organizzare le finestre.

Ti suggerisco di guardare lo screencast sul loro sito web per vedere se fa quello che stai cercando, ma fondamentalmente ha una griglia in cui puoi cambiare la dimensione e la posizione della finestra in primo piano.

Puoi anche cambiare la griglia visualizzata per avere un controllo più preciso sulla dimensione delle finestre su cui stai lavorando.

Spero che questo aiuti.

    
risposta data 05.03.2011 - 13:43
fonte
2

Kevin. Sono l'autore del post a cui ti sei collegato su incrementalism.net.

Il motivo per cui la finestra del terminale si sposta in alto è solo un bug nel supporto AppleScript di Terminal.

Questa versione esegue il centramento verticale e aggira il bug del terminale:

tell application "Finder"
    set screenSize to bounds of window of desktop
    set screenWidth to item 3 of screenSize
    set screenHeight to item 4 of screenSize
end tell

tell application "System Events"
    set myFrontMost to name of first item of ¬
        (processes whose frontmost is true)
end tell

try
    tell application myFrontMost
        set windowSize to bounds of window 1
        set windowXl to item 1 of windowSize
        set windowYt to item 2 of windowSize
        set windowXr to item 3 of windowSize
        set windowYb to item 4 of windowSize

        set windowWidth to windowXr - windowXl
        set windowHeight to windowYb - windowYt

        if myFrontMost is "Terminal" then
            set bounds of window 1 to {¬
                round ((screenWidth - windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2) rounding as taught in school, ¬
                round ((screenWidth + windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2 + windowHeight) rounding as taught in school}
        else
            set bounds of window 1 to {¬
                round ((screenWidth - windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight - windowHeight) / 2) rounding as taught in school, ¬
                round ((screenWidth + windowWidth) / 2) rounding as taught in school, ¬
                round ((screenHeight + windowHeight) / 2) rounding as taught in school}
        end if

        set the result to bounds of window 1

    end tell
end try

Spero che questo aiuti, se non hai già pagato per una delle altre opzioni. Ho anche aggiunto un commento con questa soluzione alternativa al post originale.

    
risposta data 07.03.2011 - 11:37
fonte
2

Correzioni per:

  • Il bug con Terminal
  • Nomi di processo bizzarri (firefox-bin)
  • Dimensioni della barra dei menu e del Dock
  • Supporto per Aplicter disattivato in Anteprima
  • Le finestre che sono quasi completamente piene / alte verranno ridimensionate a larghezza / altezza complete

Nota:

  • rounding as taught in school non è realmente necessario
    • il valore predefinito è rounding to nearest , che arrotonda .5 al numero intero pari più vicino (ad esempio da 22.5 a 22)
  • In realtà, nomi di variabili mixedCase anche qui ?

Tuttavia, ci sono una dozzina di altre cose che potrebbero andare storte. La parte Dock non è realmente necessaria se hai sempre nascosto il nascondiglio. (Ma se per esempio orientamento = fondo, potresti voler impostare dth a dth - 4.)

-- defaults write /Applications/Preview.app/Contents/Info NSAppleScriptEnabled -bool yes

tell app "Finder" to set {0, 0, dtw, dth} to bounds of window of desktop
set dtw0 to dtw
set dth0 to dth

tell app "System Events" to tell dock preferences
    set hiding to autohide
    set edge to screen edge as string
end tell

if hiding then
    set docksize to 4
else
    tell app "System Events" to tell process "Dock"
        set sz to size in list 1
        if edge = "bottom" then
            set docksize to item 2 of sz
        else
            set docksize to item 1 of sz
        end if
    end tell
end if

if edge = "bottom" then
    set dth to dth - docksize
else if edge = "right" then
    set dtw to dtw - docksize
else if edge = "left" then
    set dtw to dtw + docksize
end if

set a to (path to frontmost application as text)
try
    tell app a
        set b to bounds of window 1
        set w to (item 3 of b) - (item 1 of b)
        set h to (item 4 of b) - (item 2 of b)
        if w > dtw0 - 40 then set w to dtw
        if h > dth0 - 40 then set h to dth
        set item 1 of b to {dtw - w} / 2
        set item 1 of b to (dtw - w) / 2
        set item 2 of b to (dth - h + 22) / 2
        set item 3 of b to (dtw + w) / 2
        set item 4 of b to (dth + h + 22) / 2
    end tell
    if app "Terminal" is frontmost then
        tell app "Terminal" to set position of window 1 to b
    else
        tell app a to set bounds of window 1 to b
    end if
end try
    
risposta data 07.03.2011 - 12:26
fonte
1

Se vuoi centrarli esattamente (in modo orizzontale e verticale), puoi utilizzare l'esempio fornito nei commenti sul sito a cui sei collegato e adattare la risposta pubblicata su questa domanda stackoverflow .

Ho finito con questo:

tell application "System Events" to tell application "Finder"
    set {posx, posy, screenWidth, screenHeight} to bounds of window of desktop
end tell

tell application "Terminal" to set {windowLeft, windowTop, windowRight, windowBottom} to bounds of window 1

set windowWidth to windowRight - windowLeft
set windowHeight to windowBottom - windowTop

set newBounds to {¬
    ((screenWidth - windowWidth) / 2), ¬
    ((screenHeight - windowHeight) / 2), ¬
    ((screenWidth + windowWidth) / 2), ¬
    ((screenHeight + windowHeight) / 2) ¬
        }

set newPosition to {¬
    ((screenWidth - windowWidth) / 2), ¬
    ((screenHeight - windowHeight) / 2) ¬
        }

tell application "Terminal" to set bounds of window 1 to newBounds
tell application "Terminal" to set position of window 1 to newPosition

Ricorda che questo sarà centrato su window 1 , quindi se ti capita di utilizzare strumenti come Visor , dovrai utilizzare window 2 invece.

    
risposta data 05.03.2011 - 09:11
fonte
1

Un'alternativa è MercuryMover. La 'finestra centrale' è una delle scorciatoie integrate.

Puoi spostare finestre con scorciatoie, definire posizioni personalizzate e fare ancora di più. Suggerimento: prova il file delle preferenze per definire numeri di pixel personalizzati diversi da 1, 10, 100.

È costoso con $ 20, ma paga nel tempo. Ad ogni modo, c'è una prova vecchia scuola ... MacUpdate: MercuryMover

    
risposta data 05.03.2011 - 11:22
fonte

Leggi altre domande sui tag