How to change the appearance of volume & brightness overlay in dark mode

dark modedockmenu barmojave

As you all know, in MacOS Mojave Apple has released a thing called Dark Mode. My problem is that I got used to the previous appearance of dark mode, when there were only dark Dock and Menu Bar. I've found out that I can type a command in Terminal to get back that previous view:

defaults write -g NSRequiresAquaSystemAppearance -bool Yes

That worked fine, BUT there is one trouble. Not everything turned white correctly. For example, language switcher stayed as white text above white background, which is not really legible. Brightness and volume regulators stayed as dark cells above dark background, which is similarly illegible. Pictures below:

Illegible volume regulator
Illegible brightness regulator
Illegible language switcher

Appearance of language switcher was fixed by typing:

defaults write com.apple.TextInputSwitcher NSRequiresAquaSystemAppearance -bool No

After this, it turned fully black (like for regular dark theme), that's fine by me.

Legible language switcher

I believe, that I can do the same thing to the audio & brightness overlay. The problem is that I don't know the specific name of this UI element to address it using that command. I would like to change its appearance to light one. It there a way to do that?

One more thing – is it possible to change the color of Notification Center and notifications themselves? They also stayed fully dark. I prefer seeing in dark only menubar and dock. I would be very grateful if there is a solution to my problem. Thanks in advance!

Best Answer

I tried to use bundle id com.apple.OSDUIHelper to exclude OSD from the aqua-appearance fixup, but with no luck – like it ignores per-app defaults.

However I've got what I wanted with following steps:

  1. killall -9 OSDUIHelper; defaults write -g NSRequiresAquaSystemAppearance -bool NO
  2. Perform some action to show OSD, so it will started in normal configuration
  3. defaults write -g NSRequiresAquaSystemAppearance -bool YES

After that OSD becomes normal until reboot.

I didn't find any way to trigger OSD from a shell script to automate these steps, so I made the app: https://github.com/dstd/osdui-aqua-fix/releases/tag/v1