#pragma once #include #include "common.hpp" // fwd struct _snd_mixer; struct _snd_mixer_elem; struct _snd_mixer_selem_id; typedef struct _snd_mixer snd_mixer_t; typedef struct _snd_mixer_elem snd_mixer_elem_t; typedef struct _snd_mixer_selem_id snd_mixer_selem_id_t; POLYBAR_NS namespace alsa { class mixer { public: explicit mixer(string mixer_control_name); ~mixer(); string get_name(); bool wait(int timeout = -1); int process_events(); int get_volume(); int get_normalized_volume(); void set_volume(float percentage); void set_normalized_volume(float percentage); void set_mute(bool mode); void toggle_mute(); bool is_muted(); private: std::mutex m_lock; string m_name; snd_mixer_selem_id_t* m_mixerid{nullptr}; snd_mixer_t* m_hardwaremixer{nullptr}; snd_mixer_elem_t* m_mixerelement{nullptr}; }; } POLYBAR_NS_END