Mit meinem MacBook Pro, das sich normalerweise links von meinem Thunderbolt-Display befindet, und meinem Thunderbolt-Display wird im Folgenden gezeigt, wie Sie mit hsscreens und AppleScript die beiden Anordnungen programmgesteuert umschalten, je nachdem, wie es ist derzeit arrangiert. Das Endergebnis ist eine AppleScript-Anwendung, die beim Ausführen einfach zwischen den beiden Anordnungen hin und her wechselt. Diese App kann auf alle normalen Arten ausgeführt werden, auf denen jede andere Anwendung ausgeführt werden kann.
In der Abbildung unten sehen Sie die normalen und gespiegelten Anordnungen der Anzeige- und Menüleiste, die die unterschiedlichen Beziehungen zwischen meinem MacBook Pro und Thunderbolt Display zeigen.
Diese AppleScript-Anwendung wechselt zusammen mit der binären ausführbaren Datei hsscreens
programmgesteuert zwischen den beiden im obigen Bild gezeigten Anordnungen und verschiebt das Display des MacBook Pro nach rechts oder links vom Thunderbolt-Display Menüleiste auf dem Display des MacBook Pro.
Um dies zu codieren , musste ich die aktuelle Anordnung ermitteln und dann entsprechend handeln. Zu diesem Zweck habe ich hmscreens -info
zweimal in einem Terminal verwendet, einmal in jeder Anordnung .
Beim Betrachten der ausgegebenen Informationen sah ich eine Information, nach der ich grep
suchen konnte, um ein -Flag zum Umschalten zu setzen.
Ausgabe von hmscreens -info
in einer normalen Anordnung der Displays:
$ hmscreens -info
Bildschirm-ID: 68822100
Größe: {1440, 900}
Globale Position: {{0, 0}, {1440, 900}}
Farbraum: NSCalibratedRGBColorSpace
BitsPerPixel: 32
Auflösung (dpi): {144, 144}
Aktualisierungsrate: 0
Verwendet Quarz Extreme: JA
Bildschirm-ID: 68695180
Größe: {2560, 1440}
Globale Position: {{1440, -540}, {4000, 900}}
Farbraum: NSCalibratedRGBColorSpace
BitsPerPixel: 32
Auflösung (dpi): {72, 72}
Aktualisierungsrate: 0
Verwendet Quarz Extreme: JA
$
Ausgabe von hmscreens -info
in einer gespiegelten Anordnung der Displays:
$ hmscreens -info
Bildschirm-ID: 68822100
Größe: {1440, 900}
Globale Position: {{0, 0}, {1440, 900}}
Farbraum: NSCalibratedRGBColorSpace
BitsPerPixel: 32
Auflösung (dpi): {144, 144}
Aktualisierungsrate: 0
Verwendet Quarz Extreme: JA
Bildschirm-ID: 68695180
Größe: {2560, 1440}
Globale Position: {{-2560, -540}, {0, 900}}
Farbraum: NSCalibratedRGBColorSpace
BitsPerPixel: 32
Auflösung (dpi): {72, 72}
Aktualisierungsrate: 0
Verwendet Quarz Extreme: JA
$
Wenn es für mich offensichtlich war, musste ich Informationen von Global Position:
verwenden, um die aktuelle Anordnung der Displays zu bestimmen. Ich habe -2560
sofort als eindeutig zwischen der Ausgabe und einer Möglichkeit zur Bestimmung der aktuellen Anordnung gesehen. Wenn ich grep
nach -2560
gesucht und gefunden habe, befand ich mich in der gespiegelten Anordnung , nicht in der normalen Anordnung . Dies ist also das, was ich verwendet habe, um die aktuelle Anordnung zu bestimmen und damit zwischen den beiden Anordnungen umzuschalten. (Hinweis: -2560
war nicht das einzige Einzigartige, sondern nur das, worauf ich mich zuerst konzentrierte und eine einfache Möglichkeit fand, die Informationen zu analysieren, um ein Umschaltflag zu setzen.)
Speichern Sie den folgenden AppleScript -Code als Anwendung und platzieren Sie eine Kopie der binären ausführbaren Datei hmscreens
in der Datei <appname>.app/Contents/Resources
Ordner. Auf diese Weise kann die App, z. / Applications / Toggle Displays Arrangements.app
ist in sich geschlossen und hängt nicht von einem externen Speicherort der binären ausführbaren Datei hmscreens
ab.
Natürlich müssen Sie festlegen, wofür grep
verwendet werden soll, oder eine andere Methode verwenden, um das Umschaltflag zu setzen und den Code unten zu ändern entsprechend Ihren speziellen Anforderungen (falls anders als dieser Anwendungsfall oder ein anderer Anwendungsfall).
AppleScript Code :
setze hms auf (Pfad zu mir als Text) & "Inhalt: Ressourcen: hmscreens"
setze screenIDs auf Absätze von (mache Shell-Skript zitierte Form des POSIX-Pfades von hms & "-screenIDs")
Wenn (Anzahl der Bildschirm-IDs) größer als 1 ist, dann
setze normalOrentation auf "1"
Versuchen
setze normalOrentation, um das Shell-Skript in Anführungszeichen des POSIX-Pfads von hms & zu setzen.
Ende versuchen
Wenn normalOrentation "1" ist, dann
setze OthersPosition auf "left"
sonst
setze otherPosition auf "rechts"
ende wenn
Setzen Sie secondScreen auf Punkt 1 der screenIDs
Shell-Skript zitierte Form des POSIX-Pfads von hms & "-setMainID" & secondScreen & "-othersStartingPosition" & OthersPosition
sonst
sagen Sie mir
aktivieren Sie
Anzeigedialog "Nur ein Bildschirm ist an Ihren Computer angeschlossen!" Tasten {"OK"} Standardtaste 1 mit Symbolnotiz
Ende erzählen
ende wenn
Das folgende Bild zeigt die syntaktische Hervorhebung des AppleScript -Codes .