#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&); virtual ~JACK() = default; auto update() -> void override; int bufSize(jack_nframes_t size); int sampleRate(jack_nframes_t rate); int xrun(); void shutdown(); private: std::string JACKState(); jack_client_t* client_; jack_nframes_t bufsize_; jack_nframes_t samplerate_; unsigned int xruns_; float load_; bool running_; std::mutex mutex_; std::string state_; util::SleeperThread thread_; }; } // namespace waybar::modules int bufSizeCallback(jack_nframes_t size, void* obj); int sampleRateCallback(jack_nframes_t rate, void* obj); int xrunCallback(void* obj); void shutdownCallback(void* obj);