Ricordare le dimensioni della finestra e il posizionamento quando si scollega e si sostituisce il secondo monitor


99

Ecco qualcosa che fa schifo:

  1. Collega il monitor esterno al laptop (nel mio caso Mac OS X Leopard).
  2. Organizza le tue finestre per avere l'IDE su uno schermo e il browser su un altro. (Ecc. Ecc. Ridimensiona, riorganizza, confusione, confusione, confusione.)
  3. Scollegare il monitor per eseguire una riunione o qualsiasi altra cosa.
  4. Vai a 1.

Vorrei sostituire il passaggio 2 con "il computer ricorda esattamente come l'avevo fatto e lo rimette in quel modo".

(Personalmente ho solo bisogno di una soluzione per Mac, ma la raccolta di soluzioni per altri sistemi qui potrebbe essere utile per gli altri. Sono sicuro che sia un problema comune.)

Risposte:


56

Dai un'occhiata a Stay by Cordless Dog. Credo che faccia esattamente quello che stai cercando.


2
Ci ho provato Non funziona per le finestre X11 ma per il resto sembra essere come pubblicizzato. Grazie per il puntatore! È possibile che al momento questa sia la soluzione più vicina a una soluzione per Mac.
Dreeves,

Le finestre X11 non sono istanze "reali" di NSWindow (almeno non sono state l'ultima volta che ho controllato) quindi non è una grande sorpresa che Stay non voglia avere niente a che fare con loro :) Sono contento che abbia funzionato diversamente!

1
Sembra buono, ma non funziona con le app a schermo intero in Lion. Ho Safari in modalità schermo intero quando ho 1 schermo e dopo aver collegato il 2 ° schermo, voglio uscire dallo schermo intero e spostare Safari sul secondo display. Il soggiorno non sposta alcuna app a schermo intero.

1
Sembrava una buona scelta. Ma con 3 display esterni ha spesso avuto problemi con le posizioni e ha risolto il problema al 50%. Quindi dovevo ancora fare molto lavoro manuale. L'ho appena disinstallato. Oh, ed è solo una prova di 30 giorni!
Ernst Ernst,

15

Slate èun'app Macmolto potente e gratuita che fa esattamente quello che vuoi. Quando si collega il monitor secondario, rileva automaticamente il nuovo monitor e tutte le finestre verranno spostate e ridimensionate nel modo desiderato. È possibile definire posizioni e dimensioni personalizzate per tutte le applicazioni, inclusi schermo intero, metà schermo e griglia.

Una delle cose più interessanti di Slate è che puoi definire diversi layout in base al numero di monitor che hai collegato . Ad esempio, se stai usando il tuo laptop da solo, potresti voler avere tutte le tue app che riempiono l'intero schermo. Ma quando hai un monitor secondario più grande, potresti voler dividere lo schermo tra browser, posta e musica. Slate lo fa facilmente.

Puoi anche definire le scorciatoie da tastiera per layout e azioni specifici come spostare e ridimensionare le finestre di una certa percentuale.

Di seguito è il mio file di configurazione. Tengo tutte le mie app a schermo intero su tutti i miei monitor, ma puoi modificarle per renderle dimezzate o di qualche altra dimensione:

# 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

Ecco l'elenco delle funzionalità dalla pagina GitHub di Slate:

  • Altamente personalizzabile
  • Associare i tasti a:
    • sposta e / o ridimensiona le finestre
    • mettere a fuoco le finestre direzionalmente
    • attiva layout predefiniti
    • creare, eliminare e attivare istantanee dello stato corrente di Windows
  • Imposta layout predefiniti per diverse configurazioni del monitor che si attiveranno quando viene rilevata quella configurazione.
  • Suggerimenti per la finestra: un modo intuitivo per cambiare lo stato attivo della finestra
  • [Beta] Un selettore di applicazioni migliore, più personalizzabile.

Ecco un ottimo tutorial su come ottenere il massimo da Slate.


Riesce a ricordare come sono state posizionate le finestre da quando i monitor esterni sono stati collegati l'ultima volta e ripristinati? L'app "Stay" fa quasi questo, ma continua a non ricordare Windows (in particolare Chrome), quindi sto ancora cercando qualcosa di meglio.
Dreeves,

@dreeves Sì, funziona per me. L'ho fatto manualmente con successo, usando le voci di menu di Slate “Scatta istantanea” e “Attiva istantanea”; se fai clic su di essi prima e dopo aver messo in pausa il computer, salverai e ripristinerai tutte le posizioni della finestra. Dai documenti , sembra che Slate possa fare automaticamente "Activate Snapshot" con la sua defaultdirettiva . Non so se è possibile automatizzare la parte "Scatta istantanea".
Rory O'Kane,

2
Voglio sottolineare che per il caso d'uso dei PO, possono semplicemente fare clic su Salva istantanea e ripristinare istantanea nel menu. Finché c'è solo una finestra di configurazione che desideri, dovrebbe funzionare bene senza fare confusione con qualsiasi altra cosa.
Muhd

4
L'ardesia non è più mantenuta, suggeriscono di usare Hammerspoon ora.
sicuramente il

8

Ho risolto questo problema con un piccolo AppleScript e la piccola utility freeware Quicksilver.

  1. Salva questo piccolo AppleScript in una posizione che non cambierà sul tuo computer:

    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. Dovrai personalizzare le applicazioni che desideri sul monitor e la finestra delimita come preferisci. Sono un programmatore e la configurazione sopra è come eseguo il mio secondo monitor.

  3. Installa Quicksilver .

    Ho scelto di renderlo non visibile nel Dock e di eseguirlo come un piccolo demone della barra delle applicazioni

  4. Imposta un comando chiave in Quicksilver e trascina il tuo AppleScript dal passaggio 1 nella finestra come azione da eseguire. L'ho legato a CommandShiftA. Funziona alla grande!


3
Non particolarmente scalabile se hai un buon numero di applicazioni da gestire. Né è facile da gestire! I limiti dell'hard-coding non sono davvero divertenti.
Fatuhoku,

Puoi impostare il desktop su cui appare l'applicazione?
dangerousdave

3

Prima di scollegare il monitor, chiudere tutto ciò che non è interamente sul monitor principale. Le applicazioni generalmente salvano il loro stato (incluso il posizionamento delle finestre) quando si chiudono e lo leggono quando si aprono, quindi se il secondo monitor è presente in entrambe le volte dovresti andare bene.

Puoi sfruttare le applicazioni che consentono di aprire più di un'istanza alla volta, ma salvano lo stato solo alla chiusura. Chiudere l'istanza multi-monitor (che causa il salvataggio dello stato). Scollegare il secondo monitor. Se è in esecuzione una seconda istanza, è necessario riposizionarla sul monitor principale oppure è possibile avviare un'altra istanza. Non chiudere questa istanza prima di ricollegare il secondo monitor e avviare un'altra istanza (che dovrebbe quindi leggere la configurazione multi-monitor all'avvio). Quindi è possibile chiudere l'istanza a monitor singolo (salvando quello stato) e quindi l'istanza a monitor singolo (sovrascrivendo lo stato a monitor singolo).

Un'opzione più complessa potrebbe includere capire dove è salvato lo stato, eseguirne il backup e scrivere un file / script batch per ripristinarlo prima di aprire l'applicazione, il che consentirebbe di creare un collegamento per farlo automaticamente all'avvio dell'applicazione .

Infine, potrebbe esserci una tale utility per la tua piattaforma o scrivere una potrebbe non essere troppo complessa. Per Windows, esiste un programma chiamato ShiftWindow che può riposizionare Windows all'avvio dell'applicazione o su un determinato tasto di scelta rapida . Temo di non conoscere MacOS abbastanza bene per dire se esiste un'utilità simile. Questa è probabilmente la soluzione ideale, seconda solo al fatto che il sistema operativo supporti direttamente una cosa del genere.


1
Grazie! Non la risposta che speravo, ma un buon vantaggio!
Dreeves,

3

Ho appena seguito http://cordlessdog.com/stay/ , funziona benissimo per me, con un po 'di ritardo

Una volta installato sul Mac, puoi avviarlo e archiviare le finestre come preferisci. Quindi ogni volta che scolleghi i display e ti riconnetti, avrai tutte le finestre ripristinate.

Potrebbe essere necessario aggiungere stay come applicazione di avvio, poiché dovrai avviarlo ogni volta che riavvii il Mac.


2

Ho risolto questo problema senza alcuna applicazione esterna.

Tutto quello che devi fare è assicurarti che il tuo laptop sia "Desktop 1" e il tuo monitor esterno "Desktop 2"

puoi farlo spostando la barra dei menu bianca sullo schermo del laptop in Preferenze di Sistema> Display> Disposizione


1

Almeno su Windows, molte app si ripristineranno automaticamente se le ingrandisci prima di cambiare monitor. Lasciali soli mentre sei nella riunione, quindi ripristinali dopo la riconnessione.

È ancora una correzione incompleta (e una seccatura) ma è l'unica cosa che so fare se voglio qualche possibilità di resuscitare le mie finestre posizionate con cura. ShiftWindow sembra intrigante però ...

E se passi da due monitor a uno, Alt + barra spaziatrice + M, i tasti freccia ti salvano la vita (di nuovo Windows, scusami) se "perdi" le finestre.


1

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

L'ho trovato tramite Lifehacker e funziona benissimo per me. Sto usando la versione Pro SizeUp al contrario del TwoUp gratuito, ed è perfetto.


Stai dicendo che questo risolve il problema che ho posto però? La pagina a cui ti sei collegato non sembra menzionare nulla al riguardo.
Dreeves,

1
No, questo non risolve affatto il problema. SizeUp semplifica lo spostamento di una finestra nel punto desiderato, ma è comunque necessario passare manualmente da una finestra all'altra e indicare a SizeUp dove si desidera spostare ciascuna di esse.
Rory O'Kane,

1

Sono un utente di Windows e stavo cercando come disattivare la nuova funzionalità di Windows 7 per spostare tutte le finestre lontano dal monitor esterno scollegato. Ho trovato la ricevuta (per le schede video ATI) per impostare tutti i valori DMMEnableDDCPolling nel registro su 0. Disabilita il controllo automatico se il monitor è spento. Ora, se il monitor viene scollegato e ricollegato, tutte le finestre rimangono nella stessa posizione.

Ecco la risposta che mi ha aiutato: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (risposta di Alex)


1
Questo non ha nulla a che fare con il Mac?

5
No .. ma la domanda è stata taggata anche come "windows" (anche se forse l'OP si riferiva al programma windows;)). Ad ogni modo, per Windows ci sono un paio di utili utilità per l'attività. Personalmente uso Basta ZMover e ha funzionato bene. Un'altra alternativa è WindowManager di DeskSoft . Ma questi ovviamente non aiuteranno gli utenti OSX.
Ville,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.