nosignal-shell/plugin/src/Caelestia/Config/monitorconfigmanager.hpp
2 * r + 2 * t 71f27bb45f feat: add per monitor configs
Per monitor configs go in a separate file in the monitor dir, e.g.
`monitors/<MONITOR_NAME>/shell.json`
2026-04-11 18:09:21 +10:00

38 lines
885 B
C++

#pragma once
#include <qhash.h>
#include <qobject.h>
#include <qqmlengine.h>
namespace caelestia::config {
class GlobalConfig;
class TokenConfig;
class MonitorConfigManager : public QObject {
Q_OBJECT
QML_ELEMENT
QML_SINGLETON
public:
static MonitorConfigManager* instance();
static MonitorConfigManager* create(QQmlEngine*, QJSEngine*);
[[nodiscard]] Q_INVOKABLE GlobalConfig* configForScreen(const QString& screen);
[[nodiscard]] Q_INVOKABLE TokenConfig* tokensForScreen(const QString& screen);
~MonitorConfigManager() override;
private:
explicit MonitorConfigManager(QObject* parent = nullptr);
struct ScreenOverlay {
GlobalConfig* config = nullptr;
TokenConfig* tokens = nullptr;
};
QHash<QString, ScreenOverlay> m_overlays;
static MonitorConfigManager* s_instance;
};
} // namespace caelestia::config