Ich verwende einen externen Monitor mit meinem MacBookPro (2012, letzte Version vor dem Retina-Display).
Ohne Verbindung zu einem externen Monitor beträgt die Auflösung meines MacBooks 1440 x 900 und das Leben ist schön.
Zu Hause schließe ich einen externen Monitor an (und spiegele die Displays) mit der gleichen Auflösung – das Leben ist großartig.
Wenn ich jedoch zur Schule komme und mich im Labor einrichte (und die Displays spiegele), schließe ich einen externen Monitor mit einer scheinbar maximalen Auflösung von 1280 x 900 an, wie im Screenshot unten zu sehen ist
Das Problem besteht darin, dass durch den Verlust der Auflösungsbreite alle Anwendungen, die (mit dem grünen Knopf in der oberen linken Ecke) so vergrößert wurden, dass sie den gesamten Bildschirm einnehmen, dazu neigen, zu denken, dass sie immer noch 1440 Pixel in der Breite einnehmen können. Dies hat zur Folge, dass diese Anwendungen vom externen Monitor abgeschnitten werden:
Jetzt muss ich alle geöffneten Fenster aller meiner Anwendungen durchgehen, um sie auf diesen externen Monitor zu skalieren. Wenn ich nach Hause komme, muss ich diesen Vorgang außerdem für die Auflösung 1440 x 900 wiederholen.
Gibt es eine Möglichkeit, diese ganze manuelle Größenanpassung zu vermeiden (vielleicht automatisiert oder sogar mit einem Apple-Skript, das dies für mich erledigt, wenn es eine Änderung der Auflösung erkennt)?
Ich verwende Mac OS X 10.7.5 (Lion), falls das wichtig ist
Antwort1
Ich bin mir nicht sicher, ob es eine direkte Lösung für Ihr Problem gibt, also etwas, das Anwendungen beim Spiegeln die wahren Abmessungen des kleineren Bildschirms mitteilt.
Ich verwende jedoch eine Kombination aus zwei Dienstprogrammen (leider nicht kostenlos), um den Wechsel zwischen zwei Büros und meinem Zuhause zu verwalten (jedes mit einer anderen Kombination von Monitoren, die an mein MacBook Pro angeschlossen sind).
Sie sind:
Arrangieren (von Trifle Apps)
Bleiben (von Cordless Dog)
Arrange beschleunigt also das Verschieben von Fenstern an präzise Positionen (Tastaturkürzel, Hot Corners oder ein visuelles Raster, wie Sie es bevorzugen) und ist für mehrere Monitore geeignet. Stay speichert diese Anordnungen für jede Konfiguration. Wenn es also einmal gelernt hat, dass Monitor X bedeutet, dass Fenster A und B beide eine bestimmte Größe haben, wird es sich das nächste Mal daran erinnern, und wenn sie auf Monitor Y anders sind, wird es sie ändern, wenn Sie diesen Monitor anschließen.
Für beide gibt es kostenlose Testversionen, also können Sie sie ausprobieren und sehen, ob sie helfen. Es tut uns leid, dass wir keine kostenlose Lösung anbieten können!
Aktualisieren
Ich benutze jetzt Spectacle (von Eric Czarny) anstelle von Arrange. Es ist Donationware und scheint meiner Erfahrung nach stabiler zu sein. Es ist weniger ausgefeilt als Arrange, macht aber alles, was ich brauche.
Antwort2
Stay ist nicht kostenlos und kann auch nicht immer alle Apps verarbeiten (es ist fehlerhaft)
Mitetwas Hilfe, ich konnte dieses Applescript erstellen, das die Aufgabe perfekt erledigt:
property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}}
tell application "Finder" to set theBounds to bounds of window of desktop
tell application "System Events"
set bids to bundle identifier of processes where background only is false
end tell
repeat with bid in bids
tell application id bid
if name is not in blacklist then
set appName to name as string
if name is "Terminal" then
set newBounds to {0, 0, (item 3 of theBounds) - 10, item 4 of theBounds}
repeat with theWindow in windows
if visible of theWindow is true then
say appName
set bounds of theWindow to newBounds
end if
end repeat
else if name is not in buttonApps then
repeat with theWindow in windows
if visible of theWindow is true then
set bounds of theWindow to theBounds
end if
end repeat
else if name is in buttonApps then
-- get the buttonNumber
repeat with buttonApp in buttonMaps
if (name of buttonApp as string) is appName then
set theButton to Button of buttonApp
end if
end repeat
tell application "System Events"
repeat with theProcess in (processes where bundle identifier is bid)
try
tell theProcess to tell window 1 to click button theButton
end try
end repeat
end tell
end if
end if
end tell
end repeat