Ich verwende unterschiedliche Bildschirmauflösungen, je nach Aktivität, die ich tagsüber mache.
Wenn ich zum Beispiel codiere, bevorzuge ich es, mehr Platz zur Verfügung zu haben.
Ist es möglich, eine Tastenkombination zuzuweisen, um die skalierte Anzeigeauflösung zu ändern?
(siehe beigefügten Screenshot)
Ja, Sie können dies vollständig erreichen, ohne zusätzliche Apps auszuführen. Auf meinem System habe ich zwei verschiedene Skripte erstellt. Ein Skript zum Anpassen der Bildschirmauflösung höher und eines zum Anpassen der Bildschirmauflösung niedriger. Auf meinem System habe ich gerade beide Skripte als Diktierbefehle aktiviert, aber wenn Sie einen neuen Dienst über Automator erstellen, können Sie diesen Diensten Tastenkombinationen zuweisen.
Hier sind zunächst die beiden Skripte, mit denen ich begonnen habe.
Dieser dient dazu, die Bildschirmauflösung zu erhöhen: wenn sich meine Bildschirmauflösung bereits in der Standardposition befindet
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
click radio button "Scaled" of radio group 1 of tab group 1
click radio button 4 of radio group 1 of group 1 of tab group 1
end tell
quit application "System Preferences"
Das Ausführen dieses Skripts führt zu folgendem Ergebnis:
Dieses nächste Skript dient dazu, die Bildschirmauflösung zu verringern: wenn meine Bildschirmauflösung nicht auf die Standardeinstellung eingestellt ist
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
click radio button "Scaled" of radio group 1 of tab group 1
click radio button 3 of radio group 1 of group 1 of tab group 1
end tell
quit application "System Preferences"
Nachdem ich sichergestellt hatte, dass beide Skripte korrekt funktionieren, öffnete ich Automator und erstellte einen neuen Dienst für die höhere Anzeigeauflösung und fügte das entsprechende Skript hinzu, wie in der folgenden Abbildung gezeigt. Ich habe diese Datei als rez_higher.workflow gespeichert
Von hier aus habe ich Systemeinstellungen / Tastatur / Verknüpfungen / Dienste geöffnet. Ich habe diesen neuen Dienst, den ich erstellt habe, gefunden und ihm eine Tastenkombination zugewiesen
Befolgen Sie danach einfach die gleichen Verfahren, um einen neuen Workflow und Dienst für die niedrigere Anzeigeauflösung zu erstellen
error "System Events got an error: Can’t get tab group 1 of window \"Built-in Retina Display\" of process \"System Preferences\". Invalid index.
Wird es durch ein OSX-Update beschädigt?delay 1
wie wch1zpink Shows (im Gegensatz zu @Zade). Außerdem bemerkte ich später in Catalina 10.15.7, dass meine Tastenkombinationen nicht funktionierten, je nachdem, welche Anwendung fokussiert war, als ich sie eingab. Ich musste Berechtigungen in Systemeinstellungen > Sicherheit & Datenschutz > Automatisierung (und auch Eingabehilfen) erteilen. Ich wünschte, ich wüsste einen Weg, dies zu umgehen, da ich unmöglich alle Apps, die ich möglicherweise geöffnet habe, im Voraus kennen kann, wenn ich die Verknüpfung verwenden möchte. Aber das ist immer noch super nützlich! Danke.Ich habe das kostenlose Befehlszeilentool displayplacer geschrieben , um Auflösungen/Drehungen für Desktops mit einem oder mehreren Monitoren zu ändern. Sie können ein "Profil" (Beispiel unten) über eine Tastenkombination mit Automator wie wch1zpink erklärt, BetterTouchTool usw. auslösen.
displayplacer 'id:69731906 res:1440x900 scaling:on origin:(0,0) degree:0'
Behebung der Antwort von wch1zpink auf macOS 13.0.1 dank der UI-Browser-App:
do shell script "open x-apple.systempreferences:com.apple.preference.displays"
tell application "System Events"
tell application process "System Settings"
repeat until (exists UI element 1 of group 1 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1 of window "Displays")
delay 0.1
end repeat
tell window "Displays"
set displayOptions to UI element 1 of group 1 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1
set theButton to (first button of displayOptions whose value of attribute "AXAttributedDescription" contains "Selected")
if help of theButton is "2560 × 1440" then
click button 1 of displayOptions
else
click button 3 of displayOptions
end if
end tell
end tell
end tell
quit application "System Settings"
Fix unter macOS 12.0.1:
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events"
tell application process "System Preferences"
repeat until (exists radio button "Scaled" of radio group 1 of group 1 of window "Displays")
delay 0.1
end repeat
tell window "Displays"
set isScaled to value of radio button "Scaled" of radio group 1 of group 1
if isScaled = 0 then
click radio button "Scaled" of radio group 1 of group 1
click button 1 of UI element 3 of group 1
else
click radio button "Default for display" of radio group 1 of group 1
end if
end tell
end tell
end tell
quit application "System Preferences"
Fix unter macOS 10.15.4:
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "Built-in Retina Display"
set isScaled to value of radio button "Scaled" of tab group 1
if isScaled = 0 then
click radio button "Scaled" of tab group 1
click radio button 1 of radio group 1 of group 1 of tab group 1
else
click radio button "Default for display" of tab group 1
end if
end tell
quit application "System Preferences"
System Events got an error: Can’t get radio button \"Scaled\" of tab group 1 of window \"Built-in Retina Display\" of process \"System Preferences\"." number -1728 from radio button "Scaled" of tab group 1 of window "Built-in Retina Display" of process "System Preferences"
Mit dem vorherigen Code ist die Nummer 1719. Habe gerade die Nummer geändertHinzufügen einer weiteren Lösung zur Liste. Die Lösung von Imron Gamidli brachte mich mit dem Toggle-Verhalten am nächsten an das heran, was ich wollte.
Hier ist mein Skript, das ich als Raycast-Befehl hinzugefügt habe, damit ich von Raycast auslösen oder eine Tastenkombination zuweisen kann.
#!/usr/bin/osascript
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Toggle Resolution
# @raycast.mode silent
# Optional parameters:
# @raycast.icon 🤖
set monitor to 2
tell application "System Preferences"
activate
set the current pane to pane id "com.apple.preference.displays"
delay 2
tell application "System Events"
tell window "Displays" of application process "System Preferences"
click button "Display Settings…"
delay 2
click row monitor of outline 1 of scroll area 1 of sheet 1
click radio button "Scaled" of radio group 1 of sheet 1
try
set selected_button to button "Resolution5, Selected" of UI element 6 of sheet 1
click button "Resolution1" of UI element 6 of sheet 1
on error
click button "Resolution5" of UI element 6 of sheet 1
end try
delay 0.5
click button "Done" of sheet 1
end tell
end tell
end tell
# The next line is optional and could be commented out by prepending with a hash (#).
delay 2
quit application "System Preferences"
So haben Sie eine einzelne Tastenkombination, die zwischen 2 Auflösungen umschaltet:
/Users/your_username/Library/Services/toggle_display_resolution.workflow
in Automator).Übrigens müssen Sie möglicherweise Ihre "Sicherheit & Datenschutz" > Barrierefreiheit bearbeiten. Siehe Antwort .
on run {input, parameters}
# https://apple.stackexchange.com/a/436069/53510
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events"
tell application process "System Preferences"
repeat until (exists radio button "Scaled" of radio group 1 of group 1 of window "Displays")
delay 0.1
end repeat
tell window "Displays"
set isScaled to value of radio button "Scaled" of radio group 1 of group 1
if isScaled = 0 then
click radio button "Scaled" of radio group 1 of group 1
# button '5' means highest resolution (smalled font):
click button 5 of UI element 3 of group 1
else
click radio button "Default for display" of radio group 1 of group 1
end if
end tell
end tell
end tell
# The next line is optional and could be commented out by prepending with a hash (#).
quit application "System Preferences"
return input
end run
PS Vielen Dank an wch1zpink und Zade , deren Antworten zu meinen geführt haben. Bewerten Sie auch ihre.
PPS Ich bin neugierig zu erfahren, ob ich diese Schnellaktion / diesen Service einfacher teilen könnte.
Ab macOS 12.2.1 mit der Einführung von Shortcuts benötigen Sie keine Tastenkombination mehr. Wie auch immer, vielen Dank an Ryan , der die Grundlage meines Codes bereitgestellt hat. Hier kommt's:
on run {input, parameters}
# https://apple.stackexchange.com/a/436069/53510
tell application "System Preferences"
activate
reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
delay 2 #Make longer if needed
tell application "System Events"
tell application process "System Preferences"
tell window 1
click button 1 #Monitor settings
delay 0.7 #Make longer if needed
select row 2 of outline 1 of scroll area 1 of sheet 1 #Row=monitor number
click radio button 2 of radio group 1 of sheet 1 #Select "Scaled"
click button 2 of UI element 6 of sheet 1 #Select resolution
click button 2 of sheet 1 #Done
click button 4 #Close System Preferences
end tell
end tell
end tell
end tell
return input
end run
Verzögerungen werden wegen der Fensteröffnungszeit benötigt, sonst bricht die Indizierung ab. Wenn es immer noch kaputt geht, verlängern Sie einfach die Verzögerungen. Wenn Sie zB Ihren 3. Monitor beeinflussen wollen, schreiben Sie für die Zeilennummer stattdessen "Zeile 3". Wenn Sie eine zweite Zeile erstellen, um Ihre Auflösung zu erhöhen, und skaliert daher bereits ausgewählt ist, können Sie diese Zeile entfernen.
BEARBEITEN: Ändern Sie für MacOS 12.3 Taste 4 in Taste 5
Dies funktionierte für mich auf Monterey 12.3.1, um die Auflösung auf meinem 2. Monitor aus der Liste zu ändern. Ich werde dieses Skript an Automator übertragen, um die Auflösung mit der Tastatur zu ändern
set res to 3
set monitor to 2
tell application "System Preferences"
activate
set the current pane to pane id "com.apple.preference.displays"
delay 2
tell application "System Events"
tell window "Displays" of application process "System Preferences"
click button "Display Settings…"
delay 2
click row monitor of outline 1 of scroll area 1 of sheet 1
click radio button "Scaled" of radio group 1 of sheet 1
click button res of UI element 6 of sheet 1
end tell
end tell
end tell
Sie können diese App namens SwitcherResX ( http://www.madrau.com/srx_download/download.html ) verwenden , wo sie die Möglichkeit haben, die Auflösung mit der Tastenkombination oder basierend auf der von Ihnen verwendeten Anwendung zu ändern. Sie haben eine Prüfung zu versuchen.
Die Anwendung EasyRes (kostenlos im Apple App Store) hat es für mich getan. Ich hatte eine Stunde damit verbracht, das NVRAM zurückzusetzen und verzweifelt versucht, mein 30-Zoll-Apple Cinema-Display aus dem Jahr 2006 wieder auf die volle Auflösung zu bringen, ohne Erfolg. Ich muss 25 Mal neu gestartet haben. EasyRes hat sich darum gekümmert. Vielen Dank, EasyRes, das war ich verrückt werden!
Update: Dies ist nicht "klebrig" - wenn ich neu starte, bin ich wieder auf 1280 x 800 und muss EasyRes erneut verwenden, aber ich starte nur alle paar Monate neu, daher ist dies praktikabel.
Hat jemand ein AppleScript für Ventura? Ich habe versucht, Keyboard Maestro zu verwenden, und bekomme das irgendwie nicht zum Laufen. Ich habe ein paar Apps, die keine Option zum Ändern der Schriftgröße haben, und ich würde gerne eine schnelle Möglichkeit haben, dies zu tun und sie schnell auf die Standardeinstellung zurückzusetzen.
Beachten Sie, dass die Antwort von @ wch1zpink hervorragend funktioniert, aber Big Sur nimmt einige grundlegende Änderungen daran vor und erfordert Überarbeitungen. Dies hat bei mir mit einem externen Display funktioniert, also ersetzen Sie einfach LG ULTRAWIDE durch den Titel im Fenster.
on run {input, parameters}
activate application "System Preferences"
tell application "System Events"
tell process "System Preferences"
click button "Displays" of scroll area 1 of window "System Preferences"
delay 0.5
tell tab group 1 of window "LG ULTRAWIDE"
click radio button "Scaled"
delay 0.5
select row 4 of table 1 of scroll area 1
end tell
end tell
delay 1
quit application "System Preferences"
end tell
return input
end run
on run {input, parameters}
activate application "System Preferences"
tell application "System Events"
tell process "System Preferences"
click button "Displays" of scroll area 1 of window "System Preferences"
delay 0.5
tell tab group 1 of window "LG ULTRAWIDE"
click radio button "Default for Display"
end tell
end tell
delay 0.5
quit application "System Preferences"
end tell
return input
end run
Rinogo
/path/to/display_manager.py res 1920 1080 60
)