Skip to content

Commit

Permalink
Merge pull request #1161 from xytovl/per-device-pulse-icon
Browse files Browse the repository at this point in the history
Support per-device icon in pulseaudio
  • Loading branch information
Alexays authored Jul 20, 2021
2 parents fa43072 + 9c2b5ef commit bb07267
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 8 deletions.
2 changes: 1 addition & 1 deletion include/ALabel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class ALabel : public AModule {
virtual ~ALabel() = default;
virtual auto update() -> void;
virtual std::string getIcon(uint16_t, const std::string &alt = "", uint16_t max = 0);
virtual std::string getIcon(uint16_t, std::vector<std::string> &alts, uint16_t max = 0);
virtual std::string getIcon(uint16_t, const std::vector<std::string> &alts, uint16_t max = 0);

protected:
Gtk::Label label_;
Expand Down
2 changes: 1 addition & 1 deletion include/modules/pulseaudio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Pulseaudio : public ALabel {
static void volumeModifyCb(pa_context*, int, void*);

bool handleScroll(GdkEventScroll* e);
const std::string getPortIcon() const;
const std::vector<std::string> getPulseIcon() const;

pa_threaded_mainloop* mainloop_;
pa_mainloop_api* mainloop_api_;
Expand Down
4 changes: 4 additions & 0 deletions man/waybar-pulseaudio.5.scd
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@ Additionally you can control the volume by scrolling *up* or *down* while the cu
# ICONS:

The following strings for *format-icons* are supported.

- the device name

If they are found in the current PulseAudio port name, the corresponding icons will be selected.

- *default* (Shown, when no other port is found)
Expand All @@ -131,6 +134,7 @@ If they are found in the current PulseAudio port name, the corresponding icons w
"format-bluetooth": "{volume}% {icon}",
"format-muted": "",
"format-icons": {
"alsa_output.pci-0000_00_1f.3.analog-stereo": "",
"headphones": "",
"handsfree": "",
"headset": "",
Expand Down
2 changes: 1 addition & 1 deletion src/ALabel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ std::string ALabel::getIcon(uint16_t percentage, const std::string& alt, uint16_
return "";
}

std::string ALabel::getIcon(uint16_t percentage, std::vector<std::string>& alts, uint16_t max) {
std::string ALabel::getIcon(uint16_t percentage, const std::vector<std::string>& alts, uint16_t max) {
auto format_icons = config_["format-icons"];
if (format_icons.isObject()) {
std::string _alt = "default";
Expand Down
12 changes: 7 additions & 5 deletions src/modules/pulseaudio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -194,15 +194,17 @@ static const std::array<std::string, 9> ports = {
"phone",
};

const std::string waybar::modules::Pulseaudio::getPortIcon() const {
const std::vector<std::string> waybar::modules::Pulseaudio::getPulseIcon() const {
std::vector<std::string> res = {default_sink_name_};
std::string nameLC = port_name_ + form_factor_;
std::transform(nameLC.begin(), nameLC.end(), nameLC.begin(), ::tolower);
for (auto const &port : ports) {
if (nameLC.find(port) != std::string::npos) {
return port;
res.push_back(port);
return res;
}
}
return port_name_;
return res;
}

auto waybar::modules::Pulseaudio::update() -> void {
Expand Down Expand Up @@ -252,7 +254,7 @@ auto waybar::modules::Pulseaudio::update() -> void {
fmt::arg("format_source", format_source),
fmt::arg("source_volume", source_volume_),
fmt::arg("source_desc", source_desc_),
fmt::arg("icon", getIcon(volume_, getPortIcon()))));
fmt::arg("icon", getIcon(volume_, getPulseIcon()))));
getState(volume_);

if (tooltipEnabled()) {
Expand All @@ -267,7 +269,7 @@ auto waybar::modules::Pulseaudio::update() -> void {
fmt::arg("format_source", format_source),
fmt::arg("source_volume", source_volume_),
fmt::arg("source_desc", source_desc_),
fmt::arg("icon", getIcon(volume_, getPortIcon()))));
fmt::arg("icon", getIcon(volume_, getPulseIcon()))));
} else {
label_.set_tooltip_text(desc_);
}
Expand Down

0 comments on commit bb07267

Please sign in to comment.