Centrar ventana en 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 ninguna de ellas admite centrar el 'Terminal' verticalmente (aunque sí admiten centrar otras aplicaciones verticalmente).

Kevin Sylvestre
fuente

Respuestas:

2

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

dolor
fuente
2

No estoy seguro de si esto podría hacer lo que está buscando también, pero Divvy también es una buena pieza de software para organizar 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 control más preciso sobre el tamaño de las ventanas con las que está trabajando.

Espero que esto ayude.

Ciaocibai
fuente
2

Kevin Soy el autor de la publicación que vinculaste en incrementalism.net.

La razón por la cual la ventana de Terminal se mueve hacia arriba es solo un error en el soporte AppleScript de Terminal.

Esta versión hace el centrado vertical y funciona alrededor del error 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 ayude, si aún no ha pagado una de las otras opciones. También agregué un comentario con esta solución alternativa a la publicación original.

Tim Moore
fuente
2

Arreglos para:

  • El error con la terminal
  • Nombres de procesos extraños (firefox-bin)
  • Tamaños de barra de menú y muelle
  • Soporte de AppleScript deshabilitado en Vista previa
  • Las ventanas que tienen casi todo el ancho / alto cambiarán su tamaño a 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, nombres de variables de MixedCase incluso aquí ?

Aún así, hay una docena más de cosas que podrían salir mal. La parte del Dock no es realmente necesaria si tienes escondido siempre activado. (Pero si, por ejemplo, orientación = abajo, es posible que desee establecer dth en 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
Lri
fuente
1

Si desea centrarlos exactamente (de manera horizontal y vertical), puede usar el ejemplo que se proporciona en los comentarios en el 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

Tenga en cuenta que esto se centrará window 1, por lo que si utiliza herramientas como Visor , deberá utilizarlas window 2.

Asmus
fuente
Probé este script pero por alguna razón está bloqueando mi terminal en la parte superior de la pantalla. Tal vez sea porque estoy usando el terminal transparente o algo así.
Kevin Sylvestre
1

Una alternativa es MercuryMover. 'Ventana central' es uno de los atajos integrados.

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

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

tomillo
fuente