view src/sys/glib/dark_theme.cc @ 234:8ccf0302afb1

dep/animia: convert xlib code to xcb I'm not *entirely* sure if this will work correctly for everything, but it works fine enough
author Paper <mrpapersonic@gmail.com>
date Tue, 16 Jan 2024 08:08:42 -0500
parents ff0061e75f0f
children 4d461ef7d424
line wrap: on
line source

#include <gio/gio.h>
#include <cstring>

#include <iostream>

namespace glib {

bool IsInDarkTheme() {
	GSettings* settings = g_settings_new("org.gnome.desktop.interface");
	if (!settings)
		return false;

	GVariant* val = g_settings_get_value(settings, "color-scheme");
	if (!val)
		return false;

	const gchar* str;
	g_variant_get(val, "&s", &str); /* should not be freed */
	if (!str) /* how */
		return false;

	bool success = !std::strcmp(str, "prefer-dark");

	/* unref these */
	g_variant_unref(val);
	g_object_unref(settings);

	return success;
}

}