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).
Respuestas
¿Demasiados anuncios?Me gusta usar SizeUp para gestionar Windows, uno de los cuales es una opción de centro en pantalla. Buena suerte.
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.
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.
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)
- el valor por defecto es
- 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
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.