Fix Version/s: 14
Compatibility Risk Description:We will disable automatic usage of dark mode in macOS by Aqua. The user, if needed, has to opt-in this mode.
Interface Kind:System or security property
In jdk13 we started to use macOS SDK 10.14 to build JDK, which automatically opts-in to support of dark mode, but the Swing Aqua L&F does not work properly if dark mode is enabled on the macOS desktop.
- Dark mode is a desktop appearance that is primarily dark which is intended to reduce power consumption by the display.
- The macOS JavaRuntimeSupport (JRS) Framework which is used by the Swing Aqua L&F to draw the "native" appearance does not provide "dark mode" appearance, and a bug is filed with Apple : https://bugs.openjdk.java.net/browse/JDK-8228555.
- In a few places, we mix the "native" colors provided by the system (JRS) and default colors used by Swing. For example, we may use a transparent white selection "native" color which is invisible on top of white text fields.
Until the bugs above are fixed we should by default opt-out of dark mode, and provide a way for application developers to opt-in this mode if needed
A new system property is added: "apple.awt.application.appearance" to set the appearance of the whole java application.
- If no value is set then light mode will be used
- if "system" value is set then the current appearance of the macOS will be used
- Other possible values are "NSAppearanceNameAqua" (the same as light), or "NSAppearanceNameDarkAqua" (requesting dark) See https://developer.apple.com/documentation/appkit/nsappearancenameaqua?language=objc
- If an incorrect value is set then light mode will be used