diff --git a/include/modules/mpris/mpris.hpp b/include/modules/mpris/mpris.hpp index ea5f7de6..3f2a6a63 100644 --- a/include/modules/mpris/mpris.hpp +++ b/include/modules/mpris/mpris.hpp @@ -80,6 +80,7 @@ class Mpris : public ALabel { std::string lastPlayer; util::SleeperThread thread_; + std::chrono::time_point last_update_; }; } // namespace waybar::modules::mpris diff --git a/src/modules/mpris/mpris.cpp b/src/modules/mpris/mpris.cpp index e4346941..7e8efee3 100644 --- a/src/modules/mpris/mpris.cpp +++ b/src/modules/mpris/mpris.cpp @@ -31,7 +31,8 @@ Mpris::Mpris(const std::string& id, const Json::Value& config) ellipsis_("\u2026"), player_("playerctld"), manager(), - player() { + player(), + last_update_(std::chrono::system_clock::now() - interval_) { if (config_["format-playing"].isString()) { format_playing_ = config_["format-playing"].asString(); } @@ -559,6 +560,10 @@ bool Mpris::handleToggle(GdkEventButton* const& e) { } auto Mpris::update() -> void { + const auto now = std::chrono::system_clock::now(); + if (now - last_update_ < interval_) return; + last_update_ = now; + auto opt = getPlayerInfo(); if (!opt) { event_box_.set_visible(false);