mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-10-31 07:52:42 +01:00 
			
		
		
		
	refactor: proper modules destruction
This commit is contained in:
		| @@ -10,33 +10,31 @@ | ||||
| namespace waybar::modules::sway { | ||||
|  | ||||
| class Ipc { | ||||
|   public: | ||||
|     Ipc(); | ||||
|     ~Ipc(); | ||||
| public: | ||||
|   Ipc(); | ||||
|   ~Ipc(); | ||||
|  | ||||
| 		struct ipc_response { | ||||
| 			uint32_t size; | ||||
| 			uint32_t type; | ||||
| 			std::string payload; | ||||
| 		}; | ||||
|   struct ipc_response { | ||||
|     uint32_t size; | ||||
|     uint32_t type; | ||||
|     std::string payload; | ||||
|   }; | ||||
|  | ||||
| 		void connect(); | ||||
| 		struct ipc_response sendCmd(uint32_t type, | ||||
| 			const std::string& payload = "") const; | ||||
| 		void subscribe(const std::string& payload) const; | ||||
| 		struct ipc_response handleEvent() const; | ||||
|   protected: | ||||
| 		static inline const std::string ipc_magic_ = "i3-ipc"; | ||||
| 		static inline const size_t ipc_header_size_ = ipc_magic_.size() + 8; | ||||
|   struct ipc_response sendCmd(uint32_t type, const std::string &payload = "") const; | ||||
|   void subscribe(const std::string &payload) const; | ||||
|   struct ipc_response handleEvent() const; | ||||
|  | ||||
| 		const std::string getSocketPath() const; | ||||
| 		int open(const std::string&) const; | ||||
| 		struct ipc_response send(int fd, uint32_t type, | ||||
| 			const std::string& payload = "") const; | ||||
| 		struct ipc_response recv(int fd) const; | ||||
| protected: | ||||
|   static inline const std::string ipc_magic_ = "i3-ipc"; | ||||
|   static inline const size_t ipc_header_size_ = ipc_magic_.size() + 8; | ||||
|  | ||||
| 		int fd_; | ||||
| 		int fd_event_; | ||||
|   const std::string getSocketPath() const; | ||||
|   int open(const std::string &) const; | ||||
|   struct ipc_response send(int fd, uint32_t type, const std::string &payload = "") const; | ||||
|   struct ipc_response recv(int fd) const; | ||||
|  | ||||
|   int fd_; | ||||
|   int fd_event_; | ||||
| }; | ||||
|  | ||||
| } | ||||
| } // namespace waybar::modules::sway | ||||
|   | ||||
| @@ -3,30 +3,30 @@ | ||||
| #define event_mask(ev) (1u << (ev & 0x7F)) | ||||
|  | ||||
| enum ipc_command_type { | ||||
| 	// i3 command types - see i3's I3_REPLY_TYPE constants | ||||
| 	IPC_COMMAND = 0, | ||||
| 	IPC_GET_WORKSPACES = 1, | ||||
| 	IPC_SUBSCRIBE = 2, | ||||
| 	IPC_GET_OUTPUTS = 3, | ||||
| 	IPC_GET_TREE = 4, | ||||
| 	IPC_GET_MARKS = 5, | ||||
| 	IPC_GET_BAR_CONFIG = 6, | ||||
| 	IPC_GET_VERSION = 7, | ||||
| 	IPC_GET_BINDING_MODES = 8, | ||||
| 	IPC_GET_CONFIG = 9, | ||||
| 	IPC_SEND_TICK = 10, | ||||
|   // i3 command types - see i3's I3_REPLY_TYPE constants | ||||
|   IPC_COMMAND = 0, | ||||
|   IPC_GET_WORKSPACES = 1, | ||||
|   IPC_SUBSCRIBE = 2, | ||||
|   IPC_GET_OUTPUTS = 3, | ||||
|   IPC_GET_TREE = 4, | ||||
|   IPC_GET_MARKS = 5, | ||||
|   IPC_GET_BAR_CONFIG = 6, | ||||
|   IPC_GET_VERSION = 7, | ||||
|   IPC_GET_BINDING_MODES = 8, | ||||
|   IPC_GET_CONFIG = 9, | ||||
|   IPC_SEND_TICK = 10, | ||||
|  | ||||
| 	// sway-specific command types | ||||
| 	IPC_GET_INPUTS = 100, | ||||
| 	IPC_GET_SEATS = 101, | ||||
|   // sway-specific command types | ||||
|   IPC_GET_INPUTS = 100, | ||||
|   IPC_GET_SEATS = 101, | ||||
|  | ||||
| 	// Events sent from sway to clients. Events have the highest bits set. | ||||
| 	IPC_EVENT_WORKSPACE = ((1<<31) | 0), | ||||
| 	IPC_EVENT_OUTPUT = ((1<<31) | 1), | ||||
| 	IPC_EVENT_MODE = ((1<<31) | 2), | ||||
| 	IPC_EVENT_WINDOW = ((1<<31) | 3), | ||||
| 	IPC_EVENT_BARCONFIG_UPDATE = ((1<<31) | 4), | ||||
| 	IPC_EVENT_BINDING = ((1<<31) | 5), | ||||
| 	IPC_EVENT_SHUTDOWN = ((1<<31) | 6), | ||||
| 	IPC_EVENT_TICK = ((1<<31) | 7), | ||||
|   // Events sent from sway to clients. Events have the highest bits set. | ||||
|   IPC_EVENT_WORKSPACE = ((1 << 31) | 0), | ||||
|   IPC_EVENT_OUTPUT = ((1 << 31) | 1), | ||||
|   IPC_EVENT_MODE = ((1 << 31) | 2), | ||||
|   IPC_EVENT_WINDOW = ((1 << 31) | 3), | ||||
|   IPC_EVENT_BARCONFIG_UPDATE = ((1 << 31) | 4), | ||||
|   IPC_EVENT_BINDING = ((1 << 31) | 5), | ||||
|   IPC_EVENT_SHUTDOWN = ((1 << 31) | 6), | ||||
|   IPC_EVENT_TICK = ((1 << 31) | 7), | ||||
| }; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include <fmt/format.h> | ||||
| #include "bar.hpp" | ||||
| #include "client.hpp" | ||||
| #include "util/chrono.hpp" | ||||
| #include "util/sleeper_thread.hpp" | ||||
| #include "util/json.hpp" | ||||
| #include "ALabel.hpp" | ||||
| #include "modules/sway/ipc/client.hpp" | ||||
| @@ -13,6 +13,7 @@ namespace waybar::modules::sway { | ||||
| class Mode : public ALabel { | ||||
|   public: | ||||
|     Mode(const std::string&, const waybar::Bar&, const Json::Value&); | ||||
|     ~Mode() = default; | ||||
|     auto update() -> void; | ||||
|   private: | ||||
|     void worker(); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| #include <tuple> | ||||
| #include "bar.hpp" | ||||
| #include "client.hpp" | ||||
| #include "util/chrono.hpp" | ||||
| #include "util/sleeper_thread.hpp" | ||||
| #include "util/json.hpp" | ||||
| #include "ALabel.hpp" | ||||
| #include "modules/sway/ipc/client.hpp" | ||||
| @@ -14,6 +14,7 @@ namespace waybar::modules::sway { | ||||
| class Window : public ALabel { | ||||
|   public: | ||||
|     Window(const std::string&, const waybar::Bar&, const Json::Value&); | ||||
|     ~Window() = default; | ||||
|     auto update() -> void; | ||||
|   private: | ||||
|     void worker(); | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| #include <fmt/format.h> | ||||
| #include "bar.hpp" | ||||
| #include "client.hpp" | ||||
| #include "util/chrono.hpp" | ||||
| #include "util/sleeper_thread.hpp" | ||||
| #include "util/json.hpp" | ||||
| #include "IModule.hpp" | ||||
| #include "modules/sway/ipc/client.hpp" | ||||
| @@ -14,6 +14,7 @@ namespace waybar::modules::sway { | ||||
| class Workspaces : public IModule { | ||||
|   public: | ||||
|     Workspaces(const std::string&, const waybar::Bar&, const Json::Value&); | ||||
|     ~Workspaces() = default; | ||||
|     auto update() -> void; | ||||
|     operator Gtk::Widget &(); | ||||
|   private: | ||||
| @@ -27,14 +28,14 @@ class Workspaces : public IModule { | ||||
|  | ||||
|     const Bar& bar_; | ||||
|     const Json::Value& config_; | ||||
|     Json::Value workspaces_; | ||||
|     waybar::util::SleeperThread thread_; | ||||
|     Gtk::Box box_; | ||||
|     util::JsonParser parser_; | ||||
|     Ipc ipc_; | ||||
|     std::mutex mutex_; | ||||
|     bool scrolling_; | ||||
|     std::unordered_map<std::string, Gtk::Button> buttons_; | ||||
|     Json::Value workspaces_; | ||||
|     Ipc ipc_; | ||||
| }; | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alexis
					Alexis