Denken Sie beim Entfernen und erneuten Anschließen des zweiten Monitors an die Fenstergröße und -position


99

Folgendes ist zum Kotzen:

  1. Schließen Sie einen externen Monitor an einen 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 werden. (Usw. Ändern Sie die Größe, ordnen Sie neu, Aufhebens, Aufhebens, Aufhebens.)
  3. Trennen Sie den Monitor vom Computer, um zu einer Besprechung zu gelangen, oder was auch immer.
  4. Gehe zu 1.

Ich möchte Schritt 2 durch "Computer merkt sich genau, wie ich es hatte und setzt es einfach wieder so" ersetzen.

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

Antworten:


56

Werfen Sie einen Blick auf Stay by Cordless Dog. Ich glaube, es macht genau das, wonach Sie suchen.


2
Ich habe es 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 dies die Lösung für Mac ist, die wir derzeit am ehesten kennen.
Dreeves

X11-Fenster sind keine "echten" NSWindow-Instanzen (zumindest nicht das letzte Mal, als ich sie überprüft habe). Es ist also keine große Überraschung, dass Stay nichts damit zu tun haben möchte.

1
Dies sieht gut aus, funktioniert jedoch nicht mit Vollbild-Apps in Lion. Ich habe Safari im Vollbildmodus, wenn ich 1 Anzeige habe und nachdem ich die 2. Anzeige angefügt habe, möchte ich den Vollbildmodus beenden und Safari auf die zweite Anzeige verschieben. Stay verschiebt keine Vollbild-App.

1
Es schien eine gute Passform zu sein. Aber mit 3 externen Displays hatte es oft Probleme mit den Positionen und löste das Problem nur zu 50%. Also musste ich noch viel Handarbeit machen. Ich habe es gerade deinstalliert. Oh, und es ist nur eine 30-Tage-Testversion!
Ernst Ernst

15

Slate ist eine sehr leistungsfähige kostenlose Mac-App, die genau das macht, was Sie wollen. Wenn Sie Ihren sekundären Monitor anschließen, wird der neue Monitor automatisch erkannt , und alle Fenster werden verschoben und in der Größe nach Ihren Wünschen angepasst. Sie können benutzerdefinierte Positionen und Größen für alle Ihre Anwendungen definieren, einschließlich Vollbild, Halbbild und gitterbasiert.

Eines der coolsten Dinge an Slate ist, dass Sie je nach Anzahl der angeschlossenen Monitore unterschiedliche Layouts definieren können . Wenn Sie beispielsweise Ihren Laptop alleine verwenden, möchten Sie möglicherweise, dass alle Ihre Apps den gesamten Bildschirm ausfüllen. Wenn Sie jedoch einen größeren sekundären Monitor haben, möchten Sie möglicherweise den Bildschirm auf Ihren Browser, Ihre E-Mails und Ihre Musik aufteilen. Slate macht das einfach.

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

Unten ist meine Konfigurationsdatei. Ich behalte alle meine Apps auf allen meinen Monitoren im Vollbildmodus, aber Sie können sie so ändern, dass sie die Hälfte oder eine andere Größe haben:

# 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:

  • Sehr anpassbar
  • Tastenanschläge binden an:
    • Verschieben und / oder Ändern der Fenstergröße
    • Richtungsfokusfenster
    • aktiviere voreingestellte layouts
    • Erstellen, Löschen und Aktivieren von Snapshots des aktuellen Status von Fenstern
  • Legen Sie Standardlayouts für verschiedene Monitorkonfigurationen fest, die aktiviert werden, wenn diese Konfiguration erkannt wird.
  • Fenstertipps: Eine intuitive Möglichkeit, den Fensterfokus zu ändern
  • [Beta] Ein besserer, anpassbarer Anwendungsumschalter.

Hier finden Sie ein großartiges Tutorial, wie Sie Slate optimal nutzen können.


Kann es sich erinnern, wie die Fenster positioniert waren, als externe Monitore zuletzt angeschlossen waren, und sie einfach wiederherstellen? Die App "Stay" macht das fast, merkt sich aber immer noch keine Fenster (insbesondere Chrome), sodass ich immer noch nach etwas Besserem suche.
Dreeves

@dreeves Ja, das funktioniert bei mir. Ich habe das nur erfolgreich manuell gemacht, indem ich die Slate-Menüpunkte "Take Snapshot" und "Activate Snapshot" verwendet habe. Wenn Sie sie anklicken, bevor und nachdem Sie Ihren Computer in den Energiesparmodus versetzt haben, werden alle Fensterpositionen gespeichert und wiederhergestellt. In den Dokumenten sieht es so aus, als ob Slate den "Activate Snapshot" automatisch mit seiner defaultDirektive ausführen kann . Ich weiß nicht, ob Sie den Teil "Schnappschuss erstellen" automatisieren können.
Rory O'Kane

2
Ich möchte darauf hinweisen, dass die OPs im Anwendungsfall einfach auf Schnappschuss speichern und im Menü auf Schnappschuss wiederherstellen klicken können. Solange es nur eine Fensterkonfiguration gibt, sollte sie einwandfrei funktionieren, ohne mit irgendetwas anderem in Konflikt zu geraten.
Muhd

3
Schiefer wird nicht mehr gewartet, sie schlagen vor, Hammerspoon jetzt zu benutzen.
sicherlich

8

Ich habe dies mit einem kleinen AppleScript und dem kleinen Freeware-Dienstprogramm 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 auf Ihrem Monitor angezeigt werden sollen, und das Fenster passt sich Ihren Wünschen an. Ich bin Programmierer und in der obigen Konfiguration starte ich meinen zweiten Monitor.

  3. Installieren Sie Quicksilver .

    Ich habe mich dafür entschieden, es im Dock nicht sichtbar zu machen und es als kleinen Taskleistendämon auszuführen

  4. Richten Sie in Quicksilver einen Tastaturbefehl ein und ziehen Sie Ihr AppleScript als auszuführende Aktion von Schritt 1 in das Fenster. Ich habe es gebunden CommandShiftA. Funktioniert super!


3
Nicht besonders skalierbar, wenn Sie eine gute Anzahl von Anwendungen verwalten müssen. Es ist auch nicht einfach zu handhaben! Hardcoding macht wirklich keinen Spaß.
Fatuhoku

Können Sie den Desktop festlegen, auf dem die Anwendung angezeigt wird?
dangerousdave

3

Schließen Sie vor dem Trennen des Monitors alle Elemente, die nicht vollständig auf dem Hauptmonitor vorhanden sind. Anwendungen speichern im Allgemeinen ihren Status (einschließlich der Fensterplatzierung) beim Schließen und lesen ihn beim Öffnen. Wenn also zu beiden Zeitpunkten der zweite Monitor vorhanden ist, sollten Sie in Ordnung sein.

Sie können Anwendungen nutzen, bei denen mehrere Instanzen gleichzeitig geöffnet sind, aber nur beim Schließen den Status speichern. Schließen Sie die Multi-Monitor-Instanz (wodurch der Status gespeichert wird). Trennen Sie den zweiten Monitor. Wenn eine zweite Instanz ausgeführt wird, 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 angeschlossen und eine andere Instanz gestartet haben (die dann die Konfiguration für mehrere Monitore beim Start lesen würde). Anschließend können Sie die Instanz mit einem Monitor beenden (diesen Status speichern) und anschließend die Instanz mit mehreren Monitoren (den Status mit einem Monitor überschreiben).

Eine komplexere Option könnte darin bestehen, herauszufinden, wo der Status gespeichert ist, ihn zu sichern und eine Stapeldatei / ein Skript zu schreiben, um ihn / es vor dem Öffnen der Anwendung wiederherzustellen. Auf diese Weise können Sie beim Starten der Anwendung automatisch eine Verknüpfung erstellen .

Schließlich gibt es möglicherweise ein solches Dienstprogramm für Ihre Plattform, oder das Schreiben eines solchen Dienstprogramms 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 kenne MacOS leider nicht gut genug, um zu sagen, ob es ein ähnliches Dienstprogramm gibt. Dies ist wahrscheinlich die ideale Lösung, abgesehen davon, dass das Betriebssystem so etwas direkt unterstützt.


1
Vielen Dank! Nicht die Antwort, auf die ich gehofft hatte, sondern ein guter Hinweis!
Dreeves

3

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 sind, können Sie ihn starten und die Fenster so speichern, wie Sie möchten. Wenn Sie also die Verbindung zu Ihren Bildschirmen trennen und wieder herstellen, werden alle Fenster wiederhergestellt.

Möglicherweise müssen Sie stay als Startanwendung hinzufügen, da Sie es jedes Mal starten müssen, wenn Sie Ihren Mac neu starten.


2

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 den Systemeinstellungen> Anzeigen> Anordnung auf den Laptop-Bildschirm verschieben


1

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 in der Besprechung sind, und stellen Sie sie nach dem erneuten Herstellen der Verbindung wieder her.

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

Und wenn Sie von zwei Monitoren zu einem wechseln, drücken Sie Alt + Leertaste + M und die Pfeiltasten sind lebensrettend (wieder Windows, sorry), wenn Sie Ihre Fenster "verlieren".


1

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 zu der kostenlosen TwoUp und sie ist perfekt.


Wollen Sie damit das Problem lösen, das ich mir gestellt habe? Die Seite, auf die Sie verlinkt haben, scheint nichts darüber zu erwähnen.
Dreeves

1
Nein, das löst das Problem überhaupt nicht. Mit SizeUp können Sie ein Fenster schneller dorthin verschieben, wo Sie es möchten. Sie müssen jedoch manuell zwischen den einzelnen Fenstern wechseln und SizeUp mitteilen, wohin Sie die einzelnen Fenster verschieben möchten.
Rory O'Kane

1

Ich bin Windows-Benutzer und habe versucht, die neue Windows 7-Funktion auszuschalten, um alle Fenster vom nicht angeschlossenen externen Monitor zu entfernen. Ich fand die Quittung (für ATI-Grafikkarten), um alle DMMEnableDDCPolling-Werte in der Registrierung auf 0 zu setzen. Sie deaktiviert die automatische Überprüfung, wenn der Monitor ausgeschaltet ist. Wenn Sie den Monitor aus- und wieder einstecken, 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)


1
Hat das nichts mit Mac zu tun?

5
Nein .. aber die Frage wurde auch als "windows" getaggt (obwohl sich das OP vielleicht auf Programmfenster bezieht ;)). Auf jeden Fall gibt es für Windows einige 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 dies wird OSX-Benutzern natürlich nicht helfen.
Ville
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.