#pragma once #include #include #include #include #include #include "util/json.hpp" namespace waybar::modules::hyprland { class EventHandler { public: virtual void onEvent(const std::string& ev) = 0; virtual ~EventHandler() = default; }; class IPC { public: IPC() { startIPC(); } void registerForIPC(const std::string&, EventHandler*); void unregisterForIPC(EventHandler*); static std::string getSocket1Reply(const std::string& rq); Json::Value getSocket1JsonReply(const std::string& rq); private: void startIPC(); void parseIPC(const std::string&); std::mutex m_callbackMutex; util::JsonParser m_parser; std::list> m_callbacks; }; inline std::unique_ptr gIPC; inline bool modulesReady = false; }; // namespace waybar::modules::hyprland