Files
MontaukOS/programs/include/gui/mtk/settings.hpp
T

44 lines
1.2 KiB
C++

/*
* settings.hpp
* Montauk Toolkit helpers for loading desktop appearance settings
* Copyright (c) 2026 Daniel Hammer
*/
#pragma once
#include <cstdint>
#include <montauk/config.h>
#include <montauk/syscall.h>
#include "gui/gui.hpp"
namespace gui::mtk {
inline Color color_from_rgb_int(int64_t rgb, Color fallback = colors::ACCENT) {
if (rgb < 0) return fallback;
return Color::from_rgb((uint8_t)((rgb >> 16) & 0xFF),
(uint8_t)((rgb >> 8) & 0xFF),
(uint8_t)(rgb & 0xFF));
}
inline Color load_system_accent(Color fallback = colors::ACCENT) {
char user[64] = {};
if (montauk::getuser(user, sizeof(user)) > 0 && user[0]) {
auto doc = montauk::config::load_user(user, "desktop");
int64_t accent = doc.get_int("appearance.accent_color", -1);
if (accent >= 0) {
Color color = color_from_rgb_int(accent, fallback);
doc.destroy();
return color;
}
doc.destroy();
}
auto doc = montauk::config::load("desktop");
int64_t accent = doc.get_int("appearance.accent_color", -1);
Color color = color_from_rgb_int(accent, fallback);
doc.destroy();
return color;
}
} // namespace gui::mtk