Recuerde los tamaños y la ubicación de las ventanas cuando desconecte y vuelva a conectar el segundo monitor


99

Aquí hay algo que apesta:

  1. Conecte el monitor externo a la computadora portátil (Mac OS X Leopard en mi caso).
  2. Organice sus ventanas para tener el IDE en una pantalla y el navegador en otra. (Etc, etc. Cambiar el tamaño, reorganizar, alboroto, alboroto, alboroto).
  3. Desenchufe el monitor para correr a una reunión, o lo que sea.
  4. Ir a 1.

Me gustaría reemplazar el paso 2 con "la computadora recuerda exactamente cómo lo tuve y simplemente lo vuelve a poner de esa manera".

(Personalmente solo necesito una solución para Mac, pero recopilar soluciones para otros sistemas aquí podría ser útil para otros. Estoy seguro de que es un problema común).

Respuestas:


56

Echa un vistazo a Stay by Cordless Dog. Creo que hace exactamente lo que estás buscando.


2
Intenté esto No funciona para Windows X11, pero por lo demás parece ser como se anuncia. ¡Gracias por la anotación! Puede ser que esto sea lo más cercano que tenemos a una solución para Mac actualmente.
Dreeves

Las ventanas X11 no son instancias NSWindow "reales" (al menos no lo fueron la última vez que lo verifiqué), por lo que no es una gran sorpresa que Stay no quiera tener nada que ver con ellas :) ¡Me alegro de que funcionó de otra manera!

1
Esto se ve bien, pero no funciona con aplicaciones de pantalla completa en Lion. Tengo Safari en modo de pantalla completa cuando tengo 1 pantalla y después de adjuntar la segunda pantalla, quiero salir de la pantalla completa y mover Safari a la segunda pantalla. Stay no mueve ninguna aplicación de pantalla completa.

1
Parecía un buen ajuste. Pero con 3 pantallas externas, a menudo tenía problemas con las posiciones y solo resolvió el problema al 50%. Entonces todavía tenía que hacer mucho trabajo manual. Lo acabo de desinstalar. ¡Ah, y es solo 30 días de prueba!
Ernst Ernst

15

Slate es unaaplicación Mac gratuita muy poderosaque hace exactamente lo que quieres. Cuando conecta su monitor secundario, detecta automáticamente el nuevo monitor , y todas sus ventanas se moverán y cambiarán de tamaño de la manera que desee. Puede definir posiciones y tamaños personalizados para todas sus aplicaciones, incluyendo pantalla completa, media pantalla y basada en cuadrícula.

Una de las mejores cosas de Slate es que puedes definir diferentes diseños según la cantidad de monitores que hayas conectado . Por ejemplo, si está utilizando su computadora portátil por sí sola, es posible que desee que todas sus aplicaciones llenen toda la pantalla. Pero cuando tiene un monitor secundario más grande, es posible que desee dividir su pantalla entre su navegador, correo y música. Pizarra hace esto fácilmente.

También puede definir métodos abreviados de teclado para diseños y acciones específicos, como empujar y cambiar el tamaño de las ventanas en un cierto porcentaje.

A continuación se muestra mi archivo de configuración. Mantengo todas mis aplicaciones en pantalla completa en todos mis monitores, pero puedes cambiarlas para que tengan la mitad o algún otro tamaño:

# Monitor Aliases
alias mon-laptop    0    # variable for my laptop monitor
alias mon-hp        1    # my external HP monitor

# Window Position Regions
alias hp-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-hp}
alias hp-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias hp-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias laptop-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-laptop}
alias laptop-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-righttop    move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2       ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2    screenSizeX/2;screenSizeY/2       ${mon-laptop}

# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}

# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}

# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2

# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1

Aquí está la lista de características de la página GitHub de Slate:

  • Altamente personalizable
  • Ata las teclas a:
    • mover y / o cambiar el tamaño de las ventanas
    • ventanas de enfoque direccional
    • activar diseños preestablecidos
    • Crear, eliminar y activar instantáneas del estado actual de Windows
  • Establezca diseños predeterminados para diferentes configuraciones de monitor que se activarán cuando se detecte esa configuración.
  • Sugerencias de ventana: una forma intuitiva de cambiar el foco de la ventana
  • [Beta] Un conmutador de aplicaciones mejor y más personalizable.

Aquí hay un gran tutorial sobre cómo aprovechar al máximo Slate.


¿Puede recordar cómo se colocaron las ventanas desde la última vez que se enchufaron los monitores externos y simplemente restaurarlos? La aplicación "Stay" casi hace esto, pero no recuerda las ventanas (particularmente Chrome), así que todavía estoy buscando algo mejor.
Dreeves

@dreeves Sí, funciona para mí. Simplemente lo hice con éxito manualmente, usando los elementos de menú de Slate "Tomar instantánea" y "Activar instantánea"; si hace clic en ellos antes y después de poner su computadora en suspensión, guardará y restaurará todas las posiciones de su ventana. Desde los documentos , parece que Slate puede hacer la "Activar instantánea" automáticamente con su defaultdirectiva . No sé si puede automatizar la parte "Tomar instantánea".
Rory O'Kane

2
Quiero señalar que para el caso de uso de los OP, simplemente pueden hacer clic en Guardar instantánea y restaurar instantánea en el menú. Mientras solo haya una configuración de ventana que desee, debería funcionar bien sin meterse con nada más.
Muhd

44
La pizarra ya no se mantiene, sugieren usar Hammerspoon ahora.
Ciertamente, el

8

He resuelto esto con un pequeño AppleScript y la pequeña utilidad gratuita Quicksilver.

  1. Guarde este pequeño AppleScript en una ubicación que no cambiará en su computadora:

    try
        tell application "Adium"
            activate
            tell window "contacts"
                set the bounds to {1281, 200, 1460, 850}
            end tell
            tell chat windows
                set the bounds to {1281, 800, 1800, 1200}
            end tell
        end tell
    end try
    
    try
        tell application "iTunes"
            activate
            set the bounds of the first window to {1750, 520, 2700, 1150}
        end tell
    end try
    
    try
        tell application "Terminal"
            activate
            set the bounds of the first window to {2450, 320, 3180, 950}
        end tell
    end try
    
    try
        tell application "Firefox"
            activate
            set the bounds of the first window to {1460, 20, 2800, 950}
        end tell
    end try
    
  2. Tendrá que personalizar qué aplicaciones desea en su monitor y la ventana limita la forma en que le gustan. Soy programador y la configuración anterior es cómo ejecuto mi segundo monitor.

  3. Instalar Quicksilver .

    Elegí hacer que no sea visible en el Dock, y simplemente ejecutarlo como un pequeño demonio de la barra de tareas

  4. Configure un comando de teclado en Quicksilver y arrastre y suelte su AppleScript desde el paso 1 en la ventana como la acción a realizar. Lo até a CommandShiftA. ¡Funciona genial!


3
No es particularmente escalable si tiene una buena cantidad de aplicaciones para administrar. ¡Tampoco es fácil de manejar! Los límites de codificación realmente no son divertidos.
fatuhoku

¿Puedes configurar el escritorio en el que aparece la aplicación?
peligrosodave

3

Antes de desconectar el monitor, cierre todo lo que no esté completamente en el monitor principal. Las aplicaciones generalmente guardan su estado (incluida la colocación de ventanas) cuando se cierran y lo leen cuando se abren, por lo que si el segundo monitor está presente en ambos momentos, debería estar bien.

Puede aprovechar las aplicaciones que permiten abrir más de una instancia a la vez, pero solo guardan el estado al cerrar. Cierre la instancia de varios monitores (lo que hace que se guarde el estado). Desenchufe el segundo monitor. Si tiene una segunda instancia en ejecución, debe reposicionarse en el monitor principal, o puede iniciar otra instancia. No cierre esta instancia antes de volver a enchufar el segundo monitor e iniciar otra instancia (que luego leería la configuración de varios monitores al inicio). Luego puede salir de la instancia de monitor único (guardar ese estado), y luego la instancia de monitor múltiple (sobrescribir el estado de monitor único).

Una opción más compleja podría incluir averiguar dónde se guarda el estado, hacer una copia de seguridad y escribir un archivo / script por lotes para restaurarlo antes de abrir la aplicación, lo que le permitiría hacer un enlace para hacerlo automáticamente cuando inicie la aplicación .

Finalmente, puede haber una utilidad para su plataforma, o escribir una puede no ser demasiado complejo. Para Windows, hay un programa llamado ShiftWindow que puede reposicionar ventanas en el inicio de la aplicación o en una determinada tecla de acceso rápido . Me temo que no conozco MacOS lo suficientemente bien como para decir si existe una utilidad similar. Esta es probablemente la solución ideal, solo superada por el hecho de que el sistema operativo soporte tal cosa directamente.


1
¡Gracias! ¡No es la respuesta que esperaba, sino una buena pista!
Dreeves

3

Acabo de seguir http://cordlessdog.com/stay/ , funciona muy bien para mí, aunque con un pequeño retraso

Una vez que haya permanecido instalado en su Mac, puede iniciarlo y almacenar las ventanas como lo desee. Entonces, cada vez que desconecte sus pantallas y vuelva a conectarse, tendrá todas las ventanas restauradas.

Es posible que deba agregar Stay como su aplicación de inicio, ya que deberá iniciarla cada vez que reinicie su Mac.


2

Lo arreglé sin ninguna aplicación externa.

Todo lo que tiene que hacer es asegurarse de que su computadora portátil sea "Desktop 1" y su monitor externo "Desktop 2"

puede hacerlo moviendo la barra de menú blanca a la pantalla del portátil en las preferencias del sistema> Pantallas> Disposición


1

Al menos en Windows, muchas aplicaciones se restaurarán si las maximizas antes de cambiar de monitor. Déjelos en paz mientras esté en la reunión, luego restaure después de volver a conectarse.

Todavía es una solución incompleta (y una molestia), pero es lo único que sé hacer si quiero alguna posibilidad de resucitar mis ventanas cuidadosamente colocadas. ShiftWindow suena intrigante aunque ...

Y si pasa de dos monitores a uno, Alt + Barra espaciadora + M, entonces las teclas de flecha son un salvavidas (Windows nuevamente, lo siento) si "pierde" sus ventanas.


1

http://www.irradiatedsoftware.com/twoup/index.html

Encontré esto a través de Lifehacker, y funciona muy bien para mí. Estoy usando la versión pro SizeUp en lugar de la gratuita TwoUp, y es perfecta.


¿Estás diciendo que esto resuelve el problema que planteé? La página a la que se vinculó no parece mencionar nada al respecto.
dreeves

1
No, esto no resuelve el problema en absoluto. SizeUp hace que sea más rápido mover una ventana a donde lo desee, pero aún tiene que cambiar manualmente entre cada ventana y decirle a SizeUp dónde desea mover cada una.
Rory O'Kane

1

Soy un usuario de Windows y estaba buscando cómo desactivar la nueva función de Windows 7 para alejar todas las ventanas del monitor externo desconectado. Encontré el recibo (para tarjetas de video ATI) para establecer todos los valores de DMMEnableDDCPolling en el registro a 0. Desactiva la verificación automática si el monitor está apagado. Ahora, si el monitor se desconecta y se vuelve a enchufar, todas las ventanas se mantienen en la misma posición.

Aquí está la respuesta que me ayudó: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (respuesta de Alex)


1
¿Esto no tiene nada que ver con Mac?

55
No ... pero la pregunta también fue etiquetada como "ventanas" (aunque quizás el OP se refirió a las ventanas del programa ;)). De todos modos, para Windows hay un par de útiles utilidades para la tarea. Yo personalmente uso el ZMover de Basta y ha funcionado bien. Otra alternativa es el WindowManager de DeskSoft . Pero, por supuesto, esto no ayudará a los usuarios de OSX.
Ville
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.