5 votos

Ventana central en la pantalla

Estoy creando unos screen cast y quería centrar exactamente mi Windows en mi pantalla. ¿Alguna buena manera de hacer esto en el Mac? He encontrado un Apple script ejemplo (y algunas pantallas enlazadas) pero ninguna de ellas admite el centrado vertical de 'Terminal' (aunque sí admiten el centrado vertical de otras aplicaciones).

3voto

thatisvaliant Puntos 314

Me gusta usar SizeUp para gestionar Windows, uno de los cuales es una opción de centro en pantalla. Buena suerte.

2voto

tfinniga Puntos 101

No estoy seguro de si esto podría hacer lo que usted está buscando también, pero Divvy también es un software muy útil para organizar Windows.

Te sugiero que veas el screencast en su página web para ver si hace lo que buscas, pero básicamente tiene una rejilla donde puedes cambiar el tamaño y la posición de la ventana más frontal.

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

Espero que esto ayude.

2voto

Seth Puntos 136

Kevin. Soy el autor del post que enlazaste en incrementalism.net.

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

Esta versión realiza el centrado vertical y evita el error de la 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 te sirva de ayuda, si no has pagado ya alguna de las otras opciones. También he añadido un comentario con esta solución al post original.

2voto

Arreglos para:

  • El error con Terminal
  • Nombres de procesos extraños (firefox-bin)
  • Tamaños de la barra de menús y del Dock
  • Soporte de Applescript desactivado en la vista previa
  • Las ventanas que son casi de anchura/altura completa serán redimensionadas a la anchura/altura completa

Observaciones:

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

Aun así, hay una docena de cosas más que podrían salir mal. La parte del Dock no es realmente necesaria si tienes la ocultación siempre activada. (Pero si, por ejemplo, la orientación = 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

1voto

James Socol Puntos 146

Si quieres centrarlos exactamente (así que horizontal y verticalmente) entonces puedes usar el ejemplo dado en los comentarios del sitio que enlazaste, 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

Tenga en cuenta que esto se centrará window 1 Así que si usted utiliza herramientas como Visor tendrá que utilizar window 2 en su lugar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X