Auflösung automatisch umschalten, wenn ein Programm gestartet wird
10.01.12 10:00 Kategorisiert in: Mac OS X | AppleScript
Wer SwitchResX schon kennt, wird sicherlich gleich auf eine Frage stoßen: "Wozu ein separates AppleScript? SwitchResX bietet doch von Haus aus die Möglichkeit die Auflösung bei der Ausführung eines Programms zu ändern."
Die einfache Antwort: Weil es nicht in allen Fällen zuverlässig funktioniert. Die lange Antwort: Um das automatische Umschalten der Auflösung zu realisieren, prüft SwitchResX permanent, ob eines der Programme läuft, bei denen die Auflösung automatisch umgeschaltet werden soll. SwitchResX hat leider keine Chance die Auflösung umzuschalten, ehe das gewünschte Programm gestartet wurde, sondern kann das immer erst dann machen, wenn das Programm bereits geladen wird. Besonders bei Programmen die im Vollbild laufen, kann es dabei zu diversen (Darstellungs-)Problemen kommen.
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2), SwitchResX
Zunächst sollte man sich in SwitchResX die benötigten Anzeige-Sets anlegen. In meinem Beispiel sind das zwei: Eine Auflösung für HD Ready, eine für Full HD.
Jetzt fehlt nur noch das AppleScript für die Umschaltung. Dabei muss man wissen das der SwitchResX Dämon genau den "Namen" des Anzeige-Sets verlangt. Im Beispiel wird zunächst automatisch die Auflösung umgeschaltet, ehe das Programm XBMC gestartet wird. Danach verharrt das AppleScript in einer Schleife und prüft alle 5 Sekunden, ob XBMC noch ausgeführt wird. Ist dies nicht mehr der Fall, wird wieder auf die bevorzugte Auflösung zurück gewechselt.
global ProcessStillRunning
set ProcessStillRunning to true
tell application "SwitchResX Daemon"
activate
use display set "BOSE - 1080p" -- Hier das gewünschte Display-Set eintragen
end tell
tell application "XBMC" -- hier das Programm eintragen, welches geöffnet werden soll
activate
end tell
delay 15 -- wait some time for XBMC to launch
repeat while ProcessStillRunning = true
processCheck()
delay 5
end repeat
tell application "SwitchResX Daemon"
activate
use display set "BOSE - 720p" -- hier eintragen auf welches Display-Set zurück geschaltet werden soll
end tell
on processCheck()
tell application "System Events" to get name of every process
if the result contains "XBMC" then -- hier das Programm ein zweites Mal eintragen, zur Prüfung ob es noch ausgeführt wird
set ProcessStillRunning to true
else
set ProcessStillRunning to false
end if
end processCheck
Die einfache Antwort: Weil es nicht in allen Fällen zuverlässig funktioniert. Die lange Antwort: Um das automatische Umschalten der Auflösung zu realisieren, prüft SwitchResX permanent, ob eines der Programme läuft, bei denen die Auflösung automatisch umgeschaltet werden soll. SwitchResX hat leider keine Chance die Auflösung umzuschalten, ehe das gewünschte Programm gestartet wurde, sondern kann das immer erst dann machen, wenn das Programm bereits geladen wird. Besonders bei Programmen die im Vollbild laufen, kann es dabei zu diversen (Darstellungs-)Problemen kommen.
Voraussetzungen: Mac OS X 10.x (sollte auf so ziemlich allen Versionen laufen, getestet auf Mac OS X 10.7.2), SwitchResX
Zunächst sollte man sich in SwitchResX die benötigten Anzeige-Sets anlegen. In meinem Beispiel sind das zwei: Eine Auflösung für HD Ready, eine für Full HD.
Jetzt fehlt nur noch das AppleScript für die Umschaltung. Dabei muss man wissen das der SwitchResX Dämon genau den "Namen" des Anzeige-Sets verlangt. Im Beispiel wird zunächst automatisch die Auflösung umgeschaltet, ehe das Programm XBMC gestartet wird. Danach verharrt das AppleScript in einer Schleife und prüft alle 5 Sekunden, ob XBMC noch ausgeführt wird. Ist dies nicht mehr der Fall, wird wieder auf die bevorzugte Auflösung zurück gewechselt.
global ProcessStillRunning
set ProcessStillRunning to true
tell application "SwitchResX Daemon"
activate
use display set "BOSE - 1080p" -- Hier das gewünschte Display-Set eintragen
end tell
tell application "XBMC" -- hier das Programm eintragen, welches geöffnet werden soll
activate
end tell
delay 15 -- wait some time for XBMC to launch
repeat while ProcessStillRunning = true
processCheck()
delay 5
end repeat
tell application "SwitchResX Daemon"
activate
use display set "BOSE - 720p" -- hier eintragen auf welches Display-Set zurück geschaltet werden soll
end tell
on processCheck()
tell application "System Events" to get name of every process
if the result contains "XBMC" then -- hier das Programm ein zweites Mal eintragen, zur Prüfung ob es noch ausgeführt wird
set ProcessStillRunning to true
else
set ProcessStillRunning to false
end if
end processCheck