1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Add support for system dark mode (Linux)

- Use `org.freedesktop.appearance color-scheme` to support system dark mode.
This commit is contained in:
Raul Santos
2022-08-30 17:04:17 +02:00
parent 6ccbc27093
commit 471c9c2969
7 changed files with 233 additions and 3 deletions

View File

@@ -349,6 +349,28 @@ void DisplayServerX11::tts_stop() {
#endif
#ifdef DBUS_ENABLED
bool DisplayServerX11::is_dark_mode_supported() const {
return portal_desktop->is_supported();
}
bool DisplayServerX11::is_dark_mode() const {
switch (portal_desktop->get_appearance_color_scheme()) {
case 1:
// Prefers dark theme.
return true;
case 2:
// Prefers light theme.
return false;
default:
// Preference unknown.
return false;
}
}
#endif
void DisplayServerX11::mouse_set_mode(MouseMode p_mode) {
_THREAD_SAFE_METHOD_
@@ -5009,6 +5031,8 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
#ifdef DBUS_ENABLED
screensaver = memnew(FreeDesktopScreenSaver);
screen_set_keep_on(GLOBAL_GET("display/window/energy_saving/keep_screen_on"));
portal_desktop = memnew(FreeDesktopPortalDesktop);
#endif
r_error = OK;
@@ -5094,6 +5118,7 @@ DisplayServerX11::~DisplayServerX11() {
#ifdef DBUS_ENABLED
memdelete(screensaver);
memdelete(portal_desktop);
#endif
}