#pragma once #include #include #include #include #include "ALabel.hpp" #include "util/sleeper_thread.hpp" namespace waybar::modules { class JACK : public ALabel { public: JACK(const std::string&, const Json::Value&); ~JACK() = default; auto update() -> void; int bufSize(unsigned int size); int xrun(); void shutdown(); private: std::string JACKState(); jack_client_t* client_; jack_nframes_t bufsize_; jack_nframes_t samplerate_; unsigned int xruns_; std::string state_; util::SleeperThread thread_; }; } // namespace waybar::modules int bufSizeCallback(unsigned int size, void *obj); int xrunCallback(void *obj); void shutdownCallback(void *obj);