JNIEXPORT jint JNICALL Java_org_jetbrains_skiko_SystemThemeHelper_getCurrentSystemTheme()

in skiko/src/awtMain/cpp/linux/theme.cc [212:238]


    JNIEXPORT jint JNICALL Java_org_jetbrains_skiko_SystemThemeHelper_getCurrentSystemTheme(JNIEnv *env, jobject topLevel)
    {
        int systemTheme = 0;

        DBusError error;
        if(!dbus_error_init_dynamic(&error)) return 2; // Unknown.

        DBusConnection *connection = dbus_bus_get_dynamic(DBUS_BUS_SESSION, &error);
        if(!connection) return 2; // Unknown.

        if (dbus_error_is_set_dynamic(&error)) return 2; // Unknown.

        DBusMessage *valueMessage = getSetting(connection, "org.freedesktop.appearance", "color-scheme");
        if (!valueMessage) return 2; // Unknown.

        parseSettingValue(valueMessage, DBUS_TYPE_UINT32, &systemTheme);
        if(!dbus_message_unref_dynamic(valueMessage)) return 2; // Unknown.

        switch (systemTheme) {
            case 1:
                return 1; // Dark.
            case 2:
                return 0; // Light.
            default:
                return 2; // Unknown.
        }
    }