#pragma once #include #include #include #include "ALabel.hpp" namespace waybar::modules { class SystemdFailedUnits : public ALabel { public: SystemdFailedUnits(const std::string&, const Json::Value&); virtual ~SystemdFailedUnits() = default; auto update() -> void override; private: struct FailedUnit { std::string name; std::string description; std::string load_state; std::string active_state; std::string sub_state; std::string scope; }; bool hide_on_ok_; std::string format_ok_; std::string tooltip_format_; std::string tooltip_format_ok_; std::string tooltip_unit_format_; bool update_pending_; std::string system_state_, user_state_, overall_state_; uint32_t nr_failed_system_, nr_failed_user_, nr_failed_; std::string last_status_; Glib::RefPtr system_props_proxy_, user_props_proxy_; Glib::RefPtr system_manager_proxy_, user_manager_proxy_; std::vector failed_units_; void notify_cb(const Glib::ustring& sender_name, const Glib::ustring& signal_name, const Glib::VariantContainerBase& arguments); void RequestFailedUnits(); void RequestFailedUnitsList(); void RequestSystemState(); std::vector LoadFailedUnitsList(const char* kind, Glib::RefPtr& proxy, const std::string& scope); std::string BuildTooltipFailedList() const; void updateData(); }; } // namespace waybar::modules