Estoy usando un monitor externo con mi MacBookPro (2012, última versión antes de la pantalla retina).
Sin conectarme a un monitor externo, la resolución de mi macbook es 1440x900 y la vida es buena.
En casa, me conecto a un monitor externo (y pantallas espejo) con la misma resolución: la vida es genial.
Sin embargo, cuando llego a la escuela y me instalo en el laboratorio (y en las pantallas espejo), me conecto a un monitor externo con una resolución máxima aparente de 1280x900, como se puede ver en la siguiente captura de pantalla.
El problema es que con la pérdida en el ancho de la resolución, todas las aplicaciones que fueron ampliadas (con el botón verde en la esquina superior izquierda) para ocupar la pantalla completa, tienden a pensar que todavía pueden ocupar 1440 píxeles de ancho. Esto tiene el efecto de que estas aplicaciones sean cortadas por el monitor externo:
Ahora, me veo obligado a recorrer todas las ventanas abiertas de todas mis aplicaciones para cambiar su tamaño a este monitor externo. Además, cuando vuelvo a casa, tengo que repetir este proceso para la resolución de 1440x900.
¿Hay alguna manera de evitar todo este cambio de tamaño manual (quizás automatizado, o tal vez incluso un Applecript que haga esto por mí cuando detecte un cambio en la resolución)?
Estoy en Mac OS X 10.7.5 (Lion), si es importante
Respuesta1
No estoy seguro de una solución directa a su problema, es decir, algo que permita a las aplicaciones conocer las verdaderas dimensiones de la pantalla más pequeña al realizar la duplicación.
Sin embargo, uso una combinación de dos utilidades (lamentablemente no gratuitas) para gestionar el traslado entre dos oficinas y mi casa (cada una con una combinación diferente de monitores conectados a mi MacBook Pro).
Ellos son:
Arreglar (por Trifle Apps)
Permanecer (por Perro Inalámbrico)
Por lo tanto, Arrange hace que mover ventanas a ubicaciones precisas sea más rápido (atajos de teclado, esquinas activas o una cuadrícula visual, como prefiera) y admite múltiples monitores; Stay guardará estos arreglos según la configuración. Entonces, una vez que sepa que el monitor X significa que las ventanas A y B tienen un tamaño determinado, lo recordará la próxima vez y, si son diferentes en el monitor Y, las cambiará cuando conecte ese monitor.
Ambos tienen pruebas gratuitas, por lo que puedes probarlos y ver si te ayudan. ¡Lamento no poder ofrecer una solución gratuita!
Actualizar
Ahora uso Spectacle (por Eric Czarny) en lugar de Organizar. Es un software de donación y, según mi experiencia, parece ser más estable. Es menos sofisticado que Arrange, pero hace todo lo que necesito.
Respuesta2
Stay no es gratuito y tampoco maneja todas las aplicaciones todo el tiempo (tiene errores)
ConUn poco de ayuda, pude crear este AppleScript que hace el trabajo perfectamente:
property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}}
tell application "Finder" to set theBounds to bounds of window of desktop
tell application "System Events"
set bids to bundle identifier of processes where background only is false
end tell
repeat with bid in bids
tell application id bid
if name is not in blacklist then
set appName to name as string
if name is "Terminal" then
set newBounds to {0, 0, (item 3 of theBounds) - 10, item 4 of theBounds}
repeat with theWindow in windows
if visible of theWindow is true then
say appName
set bounds of theWindow to newBounds
end if
end repeat
else if name is not in buttonApps then
repeat with theWindow in windows
if visible of theWindow is true then
set bounds of theWindow to theBounds
end if
end repeat
else if name is in buttonApps then
-- get the buttonNumber
repeat with buttonApp in buttonMaps
if (name of buttonApp as string) is appName then
set theButton to Button of buttonApp
end if
end repeat
tell application "System Events"
repeat with theProcess in (processes where bundle identifier is bid)
try
tell theProcess to tell window 1 to click button theButton
end try
end repeat
end tell
end if
end if
end tell
end repeat