Skip to content

Instantly share code, notes, and snippets.

@twlz0ne
Last active August 22, 2023 12:42
Show Gist options
  • Select an option

  • Save twlz0ne/4708084 to your computer and use it in GitHub Desktop.

Select an option

Save twlz0ne/4708084 to your computer and use it in GitHub Desktop.
Rotate Display using AppleScript for MacOSX 10.6.8
tell application "System Preferences"
quit
delay 1
launch
activate
tell application "System Events"
key down {option, command}
end tell
reveal pane id "com.apple.preference.displays"
tell application "System Events"
key up {option, command}
tell process "System Preferences"
tell window "Color LCD"
click pop up button "Rotation:" of group 1 of tab group 1
keystroke "90" & return
set success to 0
repeat until success is equal to 1
delay 1
try
tell sheet 1
click button "Confirm"
set success to 1
end tell
on error errText
log errText
delay 1
end try
end repeat
end tell
end tell
end tell
end tell
tell application "System Preferences"
quit
delay 1
launch
activate
tell application "System Events"
key down {option, command}
end tell
reveal pane id "com.apple.preference.displays"
tell application "System Events"
key up {option, command}
tell process "System Preferences"
tell window "Color LCD"
click pop up button "Rotation:" of group 1 of tab group 1
keystroke "Standard" & return
-- If "Standard" is selected, no confirmation dialog is displayed.
end tell
end tell
end tell
end tell
@alchemistake
Copy link
Copy Markdown

Does your computer forget that there is a vertical monitor, too?
Thanks dude will add this to my login routine

Copy link
Copy Markdown

ghost commented Aug 4, 2020

Thank you!! This was really helpful for me as well. FWIW I added a time out for the confirm loop and updated some of the UI stuff to what my preference pane is giving me today.

tell application "System Preferences"
quit
delay 1
launch
activate
tell application "System Events"
key down {option, command}
end tell
reveal pane id "com.apple.preference.displays"
tell application "System Events"
key up {option, command}
tell process "System Preferences"
tell first window
--set elems to entire contents as list
--repeat with el in elems
-- log name of el
--end repeat

			delay 1
			click pop up button "Rotation:" of tab group 1
			--				key code 125  --down arrow
			keystroke "270" & return
			set success to 10
			repeat until success is equal to 1
				delay 1
				try
					tell sheet 1
						click button "Confirm"
						set success to 1
					end tell
				on error errText
					set success to (success - 1)
					delay 1
				end try
			end repeat
		end tell
	end tell
end tell

end tell

@twlz0ne
Copy link
Copy Markdown
Author

twlz0ne commented Aug 22, 2023

Use https://github.com/CdLbB/fb-rotate instead.

List the display id's with other information, e.g.

$ ./fb-rotate -i
#  Display_ID  Resolution  ____Display_Bounds____  Rotation
0  0x19156030  1280x800       0     0  1280   800      0    [main][internal]
1  0x76405c2d  1344x1008   1280     0  2624  1008      0
Mouse Cursor Position:  (   528 ,   409 )

Rotate screen with by d (display) and r (rotate) options:

fb-rotate -d 0 -r 180

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment