Ventana central en la pantalla

2

Estoy creando algunos lanzamientos de pantalla y quería centrar exactamente mis ventanas en mi pantalla. ¿Alguna buena manera de hacer esto en la Mac? Encontré un ejemplo de Apple Script (y algunas pantallas vinculadas) pero ninguno de ellos admite el 'Terminal' centralizado verticalmente (aunque sí admiten el centrado vertical de otras aplicaciones).

    
pregunta Kevin Sylvestre 05.03.2011 - 08:06

6 respuestas

2

Disfruto usando SizeUp para administrar ventanas, una de las cuales es un centro en la opción de pantalla. Buena suerte.

    
respondido por el sorens 05.03.2011 - 17:36
2

No estoy seguro de que esto también haga lo que está buscando, pero Divvy también es un buen software para arreglando ventanas.

Le sugiero que vea el screencast en su sitio web para ver si hace lo que está buscando, pero básicamente tiene una cuadrícula donde puede cambiar el tamaño y la posición de la ventana frontal.

También puede cambiar la cuadrícula que muestra para tener un mejor control sobre el tamaño de las ventanas con las que está trabajando.

Espero que esto ayude.

    
respondido por el Ciaocibai 05.03.2011 - 13:43
2

Kevin. Soy el autor de la publicación a la que has vinculado en incrementalism.net.

La razón por la que la ventana de Terminal se mueve a la parte superior es solo un error en el soporte de AppleScript de Terminal.

Esta versión realiza el centrado vertical y soluciona el error de Terminal:

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

Espero que eso ayude, si aún no ha pagado por una de las otras opciones. También agregué un comentario Con esta solución a la publicación original.

    
respondido por el Tim Moore 07.03.2011 - 11:37
2

Correcciones para:

  • El error con la Terminal
  • Nombres de procesos extraños (firefox-bin)
  • Tamaños de barra de menú y Dock
  • Compatibilidad con AppleScript desactivada en la vista previa
  • Las ventanas que tienen un ancho / alto casi completo se redimensionarán al ancho / alto completo

Observaciones:

  • rounding as taught in school no es realmente necesario
    • el valor predeterminado es rounding to nearest , que redondea .5 al entero par más cercano (por ejemplo, 22.5 a 22)
  • ¿Realmente, los nombres de variables mixedCase incluso aquí ?

Sin embargo, hay una docena más de cosas que podrían salir mal. La parte del Dock no es realmente necesaria si se ha ocultado siempre activada. (Pero si, por ejemplo, orientación = parte inferior, es posible que desee establecer 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
    
respondido por el user495470 07.03.2011 - 12:26
1

Si desea centrarlos exactamente (de manera horizontal y vertical), puede usar el ejemplo dado en los comentarios del sitio al que se vinculó y adaptar la respuesta publicada a esta pregunta de stackoverflow .

Terminé con esto:

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

Ten en cuenta que esto centrará window 1 , así que si utilizas herramientas como Visor , tendrás que usar window 2 en su lugar.

    
respondido por el Asmus 05.03.2011 - 09:11
1

Una alternativa es MercuryMover. 'Ventana central' es uno de los accesos directos incorporados.

Puede mover ventanas con atajos, definir posiciones personalizadas y hacer algo más. Sugerencia: pruebe el archivo de preferencias para definir números de píxeles personalizados distintos de 1, 10, 100.

Es caro con $ 20, pero paga con el tiempo. De todos modos, hay una prueba de la vieja escuela ... MacUpdate: MercuryMover

    
respondido por el thyx 05.03.2011 - 11:22

Lea otras preguntas en las etiquetas