Lembre-se dos tamanhos e posicionamento das janelas ao desconectar e reconectar o segundo monitor


99

Aqui está algo que é péssimo:

  1. Conecte o monitor externo ao laptop (Mac OS X Leopard no meu caso).
  2. Organize suas janelas para ter o IDE em uma tela e o navegador em outra. (Etc etc. Redimensione, reorganize, alarido, alarido, alarido.)
  3. Desconecte o monitor para executar uma reunião ou qualquer outra coisa.
  4. Vá para 1.

Eu gostaria de substituir a etapa 2 por "o computador lembra exatamente como eu a tinha e apenas a coloca de volta dessa maneira".

(Pessoalmente, só preciso de uma solução para Mac, mas coletar soluções para outros sistemas aqui pode ser útil para outras pessoas. Tenho certeza de que é um problema comum.)

Respostas:


56

Dê uma olhada no Stay by Cordless Dog. Eu acredito que ele faz exatamente o que você está procurando.


2
Eu tentei isso. Ele não funciona no Windows X11, mas parece ser o mesmo que anunciado. Obrigado pelo ponteiro! Pode ser que este seja o mais próximo que temos de uma solução para Mac atualmente.
— dreeves

As janelas X11 não são instâncias "reais" do NSWindow (pelo menos não foram da última vez que verifiquei), portanto, não é uma grande surpresa que o Stay não tenha nada a ver com elas :) Que bom que funcionou de outra maneira!

11
Parece bom, mas não está funcionando com aplicativos de tela cheia no Lion. Eu tenho o Safari no modo de tela cheia quando tenho 1 monitor e depois de anexar o segundo monitor, quero sair da tela inteira e mover o Safari para o segundo monitor. O Stay não move nenhum aplicativo em tela cheia.

11
Parecia um bom ajuste. Porém, com três monitores externos, muitas vezes ele teve problemas com as posições e resolveu o problema para 50%. Então eu ainda tinha que fazer muito trabalho manual. Acabei de desinstalar. Ah, e seu único teste de 30 dias!
— Ernst Ernst

15

Slate é umaplicativo Mac gratuito muito poderosoque faz exatamente o que você deseja. Quando você conecta seu monitor secundário, ele detecta automaticamente o novo monitor e todas as suas janelas são movidas e redimensionadas da maneira que você gosta. Você pode definir posições e tamanhos personalizados para todos os seus aplicativos, incluindo tela cheia, meia tela e com base em grade.

Uma das coisas mais legais sobre o Slate é que você pode definir diferentes layouts com base em quantos monitores você conectou . Por exemplo, se você estiver usando seu laptop sozinho, convém que todos os seus aplicativos preencham a tela inteira. Mas quando você tem um monitor secundário maior, convém dividir a tela entre o navegador, o correio e a música. Slate faz isso facilmente.

Você também pode definir atalhos de teclado para layouts e ações específicos, como mover e redimensionar janelas em uma determinada porcentagem.

Abaixo está o meu arquivo de configuração. Eu mantenho todos os meus aplicativos em tela cheia em todos os meus monitores, mas você pode alterá-lo para torná-los na metade ou em outro tamanho:

# 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

Aqui está a lista de recursos da página do Slit no GitHub:

  • Altamente personalizável
  • Ligue as teclas a:
    • mover e / ou redimensionar janelas
    • direcionar janelas do foco
    • ativar layouts predefinidos
    • crie, exclua e ative instantâneos do estado atual do Windows
  • Defina layouts padrão para diferentes configurações de monitor que serão ativadas quando essa configuração for detectada.
  • Dicas de janela: uma maneira intuitiva de alterar o foco da janela
  • [Beta] Um alternador de aplicativos melhor e mais personalizável.

Aqui está um ótimo tutorial sobre como tirar o máximo proveito do Slate.


Pode se lembrar de como as janelas foram posicionadas quando os monitores externos foram conectados pela última vez e apenas restaurá-los? O aplicativo "Stay" quase faz isso, mas continua a não lembrar do Windows (principalmente o Chrome), então ainda estou procurando algo melhor.
— dreeves

@ Dreeves Sim, funciona para mim. Acabei de fazer isso manualmente, usando os itens de menu do Slate, “Take Snapshot” e “Activate Snapshot”; se você clicar neles antes e depois de colocar o computador em suspensão, salvará e restaurará todas as suas posições na janela. A partir dos documentos , parece que o Slate pode executar o "Ativar instantâneo" automaticamente com sua defaultdiretiva . Não sei se você pode automatizar a parte "Take Snapshot".
— Rory O'Kane

2
Quero ressaltar que, para o caso de uso dos OPs, eles podem simplesmente clicar em salvar instantâneo e restaurar o instantâneo no menu. Enquanto houver apenas uma configuração de janela desejada, ela deverá funcionar bem sem mexer com mais nada.
— Muhd

4
Slate não é mais mantido, eles sugerem usar Hammerspoon agora.
— certainlyakey

8

Resolvi isso com um pequeno AppleScript e o pequeno utilitário freeware Quicksilver.

  1. Salve este AppleScript pequeno em um local que não seja alterado no seu computador:

    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. Você precisará personalizar quais aplicativos você deseja no seu monitor e a janela fica do jeito que você gosta. Sou programador e a configuração acima é como executo meu segundo monitor.

  3. Instale o Quicksilver .

    Optei por não ficar visível no Dock e apenas executei como um pequeno daemon da barra de tarefas

  4. Configure um comando de chave no Quicksilver e arraste e solte seu AppleScript da etapa 1 na janela como a ação a ser executada. Eu liguei para CommandShiftA. Funciona bem!


3
Não é especialmente escalável se você tiver um bom número de aplicativos para gerenciar. Nem é fácil de gerenciar! Limites de codificação embutida realmente não são divertidos.
— Fatuhoku

Você pode definir a área de trabalho em que o aplicativo aparece?
— dangerousdave

3

Antes de desconectar o monitor, feche tudo o que não está totalmente no monitor principal. Os aplicativos geralmente salvam seu estado (incluindo o posicionamento da janela) quando eles fecham e o leem quando são abertos; portanto, se o segundo monitor estiver presente nos dois momentos, você deve estar bem.

Você pode tirar proveito dos aplicativos que permitem a abertura de mais de uma instância por vez, mas salva apenas o estado de perto. Feche a instância de vários monitores (que faz com que o estado seja salvo). Desconecte o segundo monitor. Se você tem uma segunda instância em execução, ela deve ser reposicionada no monitor principal ou você pode iniciar outra instância. Não feche esta instância antes de conectar o segundo monitor novamente e iniciar outra instância (que leria a configuração de vários monitores na inicialização). Em seguida, você pode sair da instância de monitor único (salvando esse estado) e, em seguida, da instância de vários monitores (substituindo o estado de monitor único).

Uma opção mais complexa pode incluir descobrir onde o estado é salvo, fazer backup e gravar um arquivo / script em lote para restaurá-lo antes de abrir o aplicativo, o que permitiria criar um link para fazer isso automaticamente quando você iniciar o aplicativo .

Finalmente, pode haver um utilitário para a sua plataforma, ou escrever um pode não ser muito complexo. Para o Windows, existe um programa chamado ShiftWindow que pode reposicionar as janelas na inicialização do aplicativo ou em uma determinada tecla de acesso. Receio não conhecer o MacOS o suficiente para dizer se existe um utilitário semelhante. Essa é provavelmente a solução ideal, perdendo apenas para que o sistema operacional suporte essa coisa diretamente.


11
Obrigado! Não é a resposta que eu esperava, mas uma boa vantagem!
— dreeves

3

Eu apenas segui http://cordlessdog.com/stay/ , funciona muito bem para mim, embora com um pouco de atraso

Depois de instalar o seu mac, você pode iniciá-lo e armazenar as janelas da maneira que desejar. Portanto, sempre que você desconectar seus monitores e conectar-se novamente, todas as janelas serão restauradas.

Talvez você precise adicionar stay como seu aplicativo de inicialização, porque será necessário iniciá-lo sempre que reiniciar o seu mac.


2

Corrigi isso sem nenhum aplicativo externo.

Tudo que você precisa fazer é garantir que o seu laptop seja "Desktop 1" e seu Monitor Externo "Desktop 2"

você pode fazer isso movendo a barra de menus branca para a tela do laptop em Preferências do sistema> Monitores> Arranjo


1

Pelo menos no Windows, muitos aplicativos serão restaurados se você os maximizar antes de trocar de monitor. Deixe-os em paz enquanto estiver na reunião e restaure-os após reconectar.

Ainda é uma correção incompleta (e complicada), mas é a única coisa que sei fazer se eu quiser alguma chance de ressuscitar minhas janelas cuidadosamente colocadas. ShiftWindow parece intrigante embora ...

E se você passa de dois monitores para um, Alt + Barra de Espaço + M, as teclas de seta são um salva-vidas (Windows novamente, desculpe) se você "perder" suas janelas.


1

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

Encontrei isso através do Lifehacker e funciona muito bem para mim. Estou usando a versão pro SizeUp, em vez do TwoUp gratuito, e é perfeito.


Você está dizendo que isso resolve o problema que eu coloquei? A página que você vinculou não parece mencionar nada sobre isso.
— 314 dreeves

11
Não, isso não resolve o problema. O SizeUp facilita a movimentação de uma janela para onde você deseja, mas você ainda precisa alternar manualmente entre cada janela e informar ao SizeUp onde deseja mover cada uma.
— Rory O'Kane

1

Sou usuário do Windows e estava procurando como desativar o novo recurso do Windows 7 para afastar todas as janelas do monitor externo desconectado. Encontrei o recibo (para placas de vídeo ATI) para definir todos os valores de DMMEnableDDCPolling no registro como 0. Desativa a verificação automática se o monitor estiver desligado. Agora, se o monitor estiver desconectado e conectado novamente, todas as janelas permanecerão na mesma posição.

Aqui está a resposta que me ajudou: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (resposta por Alex)


11
Isso não tem nada a ver com o Mac?

5
Não ... mas a questão também foi marcada como "windows" (embora talvez o OP tenha se referido às janelas do programa ;)). De qualquer forma, no Windows, existem alguns utilitários úteis para a tarefa. Eu pessoalmente uso o ZMover de Basta e funcionou bem. Outra alternativa é o WindowManager da DeskSoft . Mas é claro que isso não ajudará os usuários do OSX.
— Ville
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.