If you’ve upgraded to Mojave, you’ve probably tried out Dark Mode. Maybe you love it. I got over the whole idea years ago, back when you had to run hacks just to change the menu bar background. I like my light interface.

I’m not grumpy about it, but it means I have to test any UIs I create in both modes now, so obviously that needs some automation.

Dark Mode can be toggled with AppleScript via System Events.

tell application "System Events"
	tell appearance preferences
		set dark mode to true
	end tell
end tell

You can use the read value of “dark mode” as a condition (negated boolean) to create a toggle, turning it off if it’s on, on if it’s off.

tell application "System Events"
	tell appearance preferences
		set dark mode to not dark mode
	end tell
end tell

All of this can be condensed to a one-liner for use with osascript from any script or as an alias for your shell:

osascript -e 'tell app "System Events" to tell appearance preferences to set dark mode to not dark mode'

With these examples you can include a Dark Mode switcher in a script, an automated test, an Alfred/Launchbar action, a Keyboard Maestro shortcut, or create a Script Editor applet for a double-clickable mode switcher.

I’m assuming normal citizens won’t have a need to toggle between the two modes frequently, but for those who do, enjoy.