#pragma once #include #include "bar.hpp" #include "client.hpp" #include "util/chrono.hpp" #include "util/json.hpp" #include "IModule.hpp" namespace waybar::modules::sway { class Workspaces : public IModule { public: Workspaces(waybar::Bar&, Json::Value); ~Workspaces(); auto update() -> void; operator Gtk::Widget &(); private: void addWorkspace(Json::Value); std::string getIcon(std::string); bool handleScroll(GdkEventScroll*); int getPrevWorkspace(); int getNextWorkspace(); Bar& bar_; Json::Value config_; waybar::util::SleeperThread thread_; Gtk::Box box_; util::JsonParser parser_; std::mutex mutex_; bool scrolling_; std::unordered_map buttons_; Json::Value workspaces_; int ipcfd_; int ipc_eventfd_; }; }