Cambiar la resolución deja las aplicaciones colgadas fuera de la pantalla

Cambiar la resolución deja las aplicaciones colgadas fuera de la pantalla

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.

captura de pantalla de resolución 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:

ingrese la descripción de la imagen aquí

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

información relacionada