Denken Sie beim Trennen und Wiedereinstecken des zweiten Monitors an Fenstergrößen und -platzierung

Hier ist etwas, das scheiße ist:

  1. Schließen Sie einen externen Monitor an den Laptop an (in meinem Fall Mac OS X Leopard).
  2. Ordnen Sie Ihre Fenster so an, dass die IDE auf einem Bildschirm und der Browser auf einem anderen angezeigt wird. (Etc etc. Größe ändern, neu anordnen, Aufhebens, Aufhebens, Aufhebens.)
  3. Trennen Sie den Monitor, um zu einem Meeting zu laufen, oder was auch immer.
  4. Gehe zu 1.

Ich möchte Schritt 2 ersetzen durch „Computer merkt sich genau, wie ich es hatte und legt es einfach so zurück“.

(Ich persönlich brauche nur eine Lösung für Mac, aber das Sammeln von Lösungen für andere Systeme hier könnte für andere nützlich sein. Ich bin sicher, dass es ein häufiges Problem ist.)

Antworten (13)

Schauen Sie sich Stay by Cordless Dog an. Ich glaube, es macht genau das, was Sie suchen.

Ich habe das versucht. Es funktioniert nicht für X11-Fenster, scheint aber ansonsten wie angekündigt zu sein. Danke für den Hinweis! Es kann sein, dass wir derzeit einer Lösung für Mac am nächsten kommen.
X11-Fenster sind keine "echten" NSWindow-Instanzen (zumindest waren sie es nicht, als ich das letzte Mal nachgesehen habe), daher ist es keine große Überraschung, dass Stay nichts mit ihnen zu tun haben will :) Schön, dass es anders geklappt hat!
Das sieht gut aus, funktioniert aber nicht mit Vollbild-Apps in Lion. Ich habe Safari im Vollbildmodus, wenn ich 1 Display habe und nachdem ich das 2. Display angeschlossen habe, möchte ich den Vollbildmodus beenden und Safari auf das zweite Display verschieben. Stay verschiebt keine Vollbild-App.
Es schien gut zu passen. Aber bei 3 externen Displays hatte es oft Probleme mit den Positionen und hat das Problem gerade mal zu 50% gelöst. Also musste ich noch viel Handarbeit machen. Ich habe es gerade deinstalliert. Oh, und es ist nur eine 30-Tage-Testversion!

Slate ist eine sehr leistungsstarke kostenlose Mac-App, die genau das tut, was Sie wollen. Wenn Sie Ihren sekundären Monitor anschließen, erkennt er automatisch den neuen Monitor , und alle Ihre Fenster werden verschoben und in der Größe so angepasst, wie Sie es möchten. Sie können benutzerdefinierte Positionen und Größen für alle Ihre Anwendungen definieren, einschließlich Vollbild, Halbbild und rasterbasiert.

Eines der coolsten Dinge an Slate ist, dass Sie verschiedene Layouts basierend auf der Anzahl der angeschlossenen Monitore definieren können . Wenn Sie beispielsweise Ihren Laptop alleine verwenden, möchten Sie möglicherweise, dass alle Ihre Apps den gesamten Bildschirm ausfüllen. Aber wenn Sie einen größeren sekundären Monitor haben, möchten Sie vielleicht Ihren Bildschirm zwischen Ihrem Browser, E-Mail und Musik aufteilen. Schiefer tut dies problemlos.

Sie können auch Tastenkombinationen für bestimmte Layouts und Aktionen definieren, z. B. das Anstoßen und Ändern der Größe von Fenstern um einen bestimmten Prozentsatz.

Unten ist meine Konfigurationsdatei. Ich halte alle meine Apps auf allen meinen Monitoren im Vollbildmodus, aber Sie können es ändern, um sie auf die Hälfte oder eine andere Größe zu bringen:

# 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

Hier ist die Liste der Funktionen von Slates GitHub-Seite:

  • Hochgradig anpassbar
  • Tastenanschläge binden an:
    • Fenster verschieben und/oder in der Größe ändern
    • Fenster mit gerichtetem Fokus
    • voreingestellte Layouts aktivieren
    • Snapshots des aktuellen Zustands von Fenstern erstellen, löschen und aktivieren
  • Legen Sie Standardlayouts für verschiedene Monitorkonfigurationen fest, die aktiviert werden, wenn diese Konfiguration erkannt wird.
  • Fensterhinweise: eine intuitive Möglichkeit, den Fensterfokus zu ändern
  • [Beta] Ein besserer, anpassbarer Anwendungsumschalter.

Hier ist ein großartiges Tutorial , wie Sie das Beste aus Slate herausholen können.

Kann es sich daran erinnern, wie die Fenster positioniert waren, als externe Monitore zuletzt angeschlossen waren, und sie einfach wiederherstellen? Die App "Stay" tut dies fast, kann sich aber immer wieder nicht an Windows (insbesondere Chrome) erinnern, also suche ich immer noch nach etwas Besserem.
@dreeves Ja, es funktioniert bei mir. Ich habe das gerade erfolgreich manuell gemacht, indem ich die Menüpunkte „Take Snapshot“ und „Activate Snapshot“ von Slate verwendet habe; Wenn Sie darauf klicken, bevor und nachdem Sie Ihren Computer in den Ruhezustand versetzt haben, werden alle Ihre Fensterpositionen gespeichert und wiederhergestellt. Aus den Dokumenten geht hervor , dass Slate den „Activate Snapshot“ automatisch mit seiner defaultDirektive ausführen kann . Ich weiß nicht, ob Sie den „Take Snapshot“-Teil automatisieren können.
Ich möchte darauf hinweisen, dass sie für den OPs-Anwendungsfall einfach im Menü auf Snapshot speichern und Snapshot wiederherstellen klicken können. Solange es nur eine gewünschte Fensterkonfiguration gibt, sollte es gut funktionieren, ohne mit irgendetwas anderem herumzuspielen.
Slate wird nicht mehr gewartet, sie schlagen vor, jetzt Hammerspoon zu verwenden.

Ich habe das mit einem kleinen AppleScript und dem kleinen Freeware-Utility Quicksilver gelöst.

  1. Speichern Sie dieses kleine AppleScript an einem Ort, der sich auf Ihrem Computer nicht ändert:

    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. Sie müssen anpassen, welche Anwendungen Sie auf Ihrem Monitor haben möchten, und die Fensterbegrenzungen so, wie Sie es möchten. Ich bin Programmierer und mit der obigen Konfiguration betreibe ich meinen zweiten Monitor.

  3. Quicksilver installieren .

    Ich habe mich dafür entschieden, es im Dock nicht sichtbar zu machen und es einfach als kleinen Taskleisten-Daemon auszuführen

  4. Richten Sie einen Tastaturkurzbefehl in Quicksilver ein und ziehen Sie Ihr AppleScript aus Schritt 1 per Drag-and-Drop als auszuführende Aktion in das Fenster. Ich habe es gebunden CommandShiftA. Funktioniert super!

Nicht besonders skalierbar, wenn Sie eine große Anzahl von Anwendungen verwalten müssen. Es ist auch nicht einfach zu verwalten! Grenzen hart zu codieren macht wirklich keinen Spaß.
Können Sie den Desktop festlegen, auf dem die Anwendung angezeigt wird?
Der Link ist tot, hier wurde eine ähnliche App mit demselben Namen gefunden .

Stelle dies hier für die Nachwelt fest. Eine sehr kleine App, die genau das tut und nicht mehr: Memmon (macOS 10.10+).

Dies ist mit Abstand die beste moderne Lösung. Kostenlos und einfach. Geben Sie Github ein paar Sterne.
Ich stimme zu, Memmon ist die beste Option: Es funktioniert einfach, ist einfach, Open Source und kostenlos.

Ich bin gerade http://cordlessdog.com/stay/ gefolgt , funktioniert großartig für mich, allerdings mit einer kleinen Verzögerung

Sobald Sie auf Ihrem Mac installiert bleiben, können Sie ihn starten und die Fenster nach Belieben speichern. Wenn Sie also Ihre Displays trennen und wieder anschließen, werden alle Fenster wiederhergestellt.

Möglicherweise müssen Sie stay als Startanwendung hinzufügen, da Sie es bei jedem Neustart Ihres Mac starten müssen.

Ich habe dies ohne externe Anwendung behoben.

Alles, was Sie tun müssen, ist sicherzustellen, dass Ihr Laptop "Desktop 1" und Ihr externer Monitor "Desktop 2" ist.

Sie können dies tun, indem Sie die weiße Menüleiste in Systemeinstellungen> Anzeigen> Anordnung auf den Laptopbildschirm verschieben

Leider scheint dies ab 10.13 (High Sierra) nicht mehr der Fall zu sein.
Dies funktioniert hervorragend in macOS Monterey v12.1 ... die Bezeichnungen sind etwas anders ... Verwendung als "Hauptanzeige" und "Erweitert" ... funktioniert großartig. Danke schön!
Ich habe mich gefragt, warum ich dieses Problem in 10 Jahren MacBooks/Bildschirmen/Betriebssystemen nie hatte. Dies erklärt es.

Bevor Sie den Monitor ausstecken, schließen Sie alles, was sich nicht vollständig auf dem Hauptmonitor befindet. Anwendungen speichern im Allgemeinen ihren Status (einschließlich der Fensterplatzierung) beim Schließen und lesen ihn beim Öffnen. Wenn also der zweite Monitor zu beiden Zeiten vorhanden ist, sollte es Ihnen gut gehen.

Sie können Anwendungen nutzen, die es zulassen, dass mehr als eine Instanz gleichzeitig geöffnet ist, aber den Status nur beim Schließen speichern. Schließen Sie die Multi-Monitor-Instanz (wodurch der Zustand gespeichert wird). Trennen Sie den zweiten Monitor. Wenn Sie eine zweite Instanz ausführen, sollte diese auf dem Hauptmonitor neu positioniert werden, oder Sie können eine andere Instanz starten. Schließen Sie diese Instanz nicht, bevor Sie den zweiten Monitor wieder anschließen und eine andere Instanz starten (die dann die Multi-Monitor-Konfiguration beim Start lesen würde). Dann können Sie die Instanz mit einem Monitor beenden (wobei dieser Zustand gespeichert wird) und dann die Instanz mit mehreren Monitoren (wobei der Zustand mit einem einzelnen Monitor überschrieben wird).

Eine komplexere Option könnte darin bestehen, herauszufinden, wo der Status gespeichert ist, ihn zu sichern und eine Batch-Datei / ein Skript zu schreiben, um ihn wiederherzustellen, bevor Sie die Anwendung öffnen, wodurch Sie einen Link erstellen könnten, um dies automatisch zu tun, wenn Sie die Anwendung starten .

Schließlich gibt es möglicherweise ein solches Dienstprogramm für Ihre Plattform, oder das Schreiben eines solchen ist möglicherweise nicht zu komplex. Für Windows gibt es ein Programm namens ShiftWindow , das Fenster entweder beim Start der Anwendung oder auf einem bestimmten Hotkey neu positionieren kann. Ich fürchte, ich kenne MacOS nicht gut genug, um sagen zu können, ob ein ähnliches Dienstprogramm existiert. Dies ist wahrscheinlich die ideale Lösung, nur dass das Betriebssystem so etwas direkt unterstützt.

Danke! Nicht die Antwort, auf die ich gehofft hatte, aber ein guter Hinweis!
Das ist die eleganteste Lösung. Keine Installationen und Herumfummeln notwendig! Danke!

Auf Reddit schlugen einige User Display Maid vor . Ich verwende es auf MB Air (M1), das mit dem Display Link-Dock mit 4K-Monitor und Full-HD-Monitor verbunden ist, der über TB verbunden ist, und bisher ist es großartig.

Wie ist es im Vergleich zu Stay ? Ich benutze Stay seit einigen Jahren und bin relativ zufrieden, aber immer an erweiterten Optionen interessiert!
Ich habe keine Erfahrung mit Stay, aber nach dem, was ich im Demovideo gesehen habe, scheint Stacys Funktionalität sehr ähnlich zu sein.

Ich habe auf macrumors eine Antwort gefunden , die für mich funktioniert, ohne dass eine andere Software erforderlich ist.

Preferences-> General-> Häkchen entfernenClose windows when quitting an app

Die Beschreibung dessen, was diese Einstellung macht, ist sinnvoll:

Wenn diese Option ausgewählt ist, werden geöffnete Dokumente und Fenster nicht wiederhergestellt, wenn Sie eine App erneut öffnen

Ich weiß nicht, warum das Trennen und Einstecken eines Displays als „Erneutes Öffnen einer App“ gilt, aber das hat bei mir funktioniert.

Zumindest unter Windows stellen sich viele Apps selbst wieder her, wenn Sie sie maximieren, bevor Sie den Monitor wechseln. Lassen Sie sie in Ruhe, während Sie sich im Meeting befinden, und stellen Sie sie nach dem erneuten Verbinden wieder her.

Es ist immer noch eine unvollständige Lösung (und Ärger), aber es ist das einzige, was ich tun kann, wenn ich eine Chance haben möchte, meine sorgfältig platzierten Fenster wiederzubeleben. ShiftWindow klingt aber interessant...

Und wenn Sie von zwei Monitoren auf einen heruntergehen, Alt + Leertaste + M, dann sind die Pfeiltasten ein Lebensretter (wieder Windows, sorry), wenn Sie Ihre Fenster "verlieren".

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

Ich habe das über Lifehacker gefunden und es funktioniert großartig für mich. Ich verwende die Pro-Version SizeUp im Gegensatz zum kostenlosen TwoUp und es ist perfekt.

Wollen Sie damit sagen, dass dies das von mir gestellte Problem löst? Die Seite, auf die Sie verlinkt haben, scheint nichts darüber zu erwähnen.
Nein, das löst das Problem überhaupt nicht. Mit SizeUp können Sie ein Fenster schneller an die gewünschte Stelle verschieben, aber Sie müssen immer noch manuell zwischen den einzelnen Fenstern wechseln und SizeUp mitteilen, wohin Sie jedes einzelne verschieben möchten.

Ich bin ein Windows-Benutzer und habe gesucht, wie ich die neue Windows 7-Funktion ausschalten kann, um alle Fenster vom nicht angeschlossenen externen Monitor wegzubewegen. Ich habe die Quittung (für ATI-Grafikkarten) gefunden, alle DMMEnableDDCPolling-Werte in der Registrierung auf 0 zu setzen. Sie deaktiviert die automatische Überprüfung, ob der Monitor ausgeschaltet ist. Wenn nun der Monitor ausgesteckt und wieder eingesteckt wird, bleiben alle Fenster in der gleichen Position.

Hier ist die Antwort, die mir geholfen hat: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (Antwort von Alex)

Das hat nichts mit Mac zu tun?
Nein ... aber die Frage wurde auch als "Windows" gekennzeichnet (obwohl sich das OP möglicherweise auf Programmfenster bezog ;)). Wie auch immer, für Windows gibt es ein paar praktische Dienstprogramme für diese Aufgabe. Ich persönlich benutze Bastas ZMover und es hat gut funktioniert. Eine weitere Alternative ist der WindowManager von DeskSoft . Aber diese werden OSX-Benutzern natürlich nicht helfen.

Trennen und stecken Sie die Monitore in der gleichen Reihenfolge.

Abziehreihenfolge: Monitor1 -> Monitor2 Steckreihenfolge: Monitor2 -> Monitor1

Es sieht so aus, als ob die Frage nur einen externen Monitor angibt, der an ein Notebook angeschlossen ist. Geht diese Antwort darauf ein?
Für Single Monitor gibt es überhaupt kein Problem auf meinem Rechner, auf dem Mojave läuft.
@ Jake3231 Ich denke, der Notebook-Monitor wird in diesem Fall zu Monitor1. Bei mir hat es funktioniert!