Support muted icons for pulseaudio devices/ports

This commit is contained in:
Oliver Locke 2024-06-12 17:03:39 +10:00
parent 0251e25f23
commit 892042eb92
1 changed files with 14 additions and 2 deletions

View File

@ -42,14 +42,26 @@ static const std::array<std::string, 9> ports = {
};
const std::vector<std::string> waybar::modules::Pulseaudio::getPulseIcon() const {
std::vector<std::string> res = {backend->getCurrentSinkName(), backend->getDefaultSourceName()};
std::vector<std::string> res;
auto sink_muted = backend->getSinkMuted();
if (sink_muted) {
res.emplace_back(backend->getCurrentSinkName() + "-muted");
}
res.push_back(backend->getCurrentSinkName());
res.push_back(backend->getDefaultSourceName());
std::string nameLC = backend->getSinkPortName() + backend->getFormFactor();
std::transform(nameLC.begin(), nameLC.end(), nameLC.begin(), ::tolower);
for (auto const &port : ports) {
if (nameLC.find(port) != std::string::npos) {
res.push_back(port);
return res;
if (sink_muted) {
res.emplace_back(port + "-muted");
}
res.push_back(port);
break;
}
}
if (sink_muted) {
res.emplace_back("default-muted");
}
return res;
}