#pragma once #include #include "common.hpp" #include "settings.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_selem_name, string&& soundcard_name); ~mixer(); mixer(const mixer& o) = delete; mixer& operator=(const mixer& o) = delete; const string& get_name(); const string& get_sound_card(); 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: snd_mixer_t* m_mixer{nullptr}; snd_mixer_elem_t* m_elem{nullptr}; string m_name; string s_name; }; } POLYBAR_NS_END