A macro which:
- toggles the inversion of screen colours (see
System Preferences > Accessibility > Display
) - optionally toggles Dark Mode at the same time, either:
- in tandem with any screen inversion, e.g.
{"darkMode":true, "inverted":true}
- or against the grain of any screen inversion e.g.
{"darkMode":false, "inverted":true}
- in tandem with any screen inversion, e.g.
I personally use it with the settings:
toggleDark = true
inversionFollowsDark = false
To toggle in and out of the all-dark app colours and menu bar shading which I happen to prefer when reading Kindle. (Kindle white paper setting, toggled to macOS light mode and inverted colours)
Toggle -- invert colours.kmmacros (8.8 KB)
Expand disclosure triangle to view preliminary JS Source
(sysPrefs => {
"use strict";
// Universal Access display panel opened.
sysPrefs.activate();
sysPrefs.panes
.byId("com.apple.preference.universalaccess")
.anchors.byName("Seeing_Display").reveal();
})(
Application("System Preferences")
);
Expand disclosure triangle to view main JS Source
(sysEvents => {
"use strict";
// kmBool :: String -> Bool
const kmBool = k =>
Boolean(JSON.parse(
Application("Keyboard Maestro Engine")
.getvariable(k)
));
const
toggleDark = kmBool("toggleDark"),
inversionFollowsDark = kmBool(
"inversionFollowsDark"
),
vizPrefs = sysEvents.appearancePreferences;
// Assuming an active Universal Access display panel:
return (
inverted => (
toggleDark && (
vizPrefs.darkMode = (
inversionFollowsDark ? (
inverted
) : !inverted
)
),
JSON.stringify({
darkMode: vizPrefs.darkMode(),
inverted: Boolean(inverted)
})
)
)(
(
checkBox => (
sysEvents.click(checkBox),
checkBox.value()
)
)(
sysEvents.applicationProcesses
.byName("System Preferences")
.windows.byName("Accessibility")
.groups.at(0)
.tabGroups.at(0)
.checkboxes.at(0)
)
);
})(
Application("System Events")
);