#ifndef XCB_WINDOW_SENSE_API_H #define XCB_WINDOW_SENSE_API_H #include #include #include #include #include #include namespace xcb_window { /** * @brief Window selector for X11 windows */ struct WindowSelector { xcb_xorg::window_search::MatchType matchType; int display; int screen; uint32_t windowId; std::string windowName; std::string stringify() const; }; /** * @brief Represents an attached X11 window device */ class AttachedWindow { public: AttachedWindow(const std::shared_ptr& spec); ~AttachedWindow(); const std::shared_ptr& getDeviceSpec() const { return deviceSpec; } const WindowSelector& getWindowSelector() const { return windowSelector; } const std::string& getActualWindowName() const { return actualWindowName; } void* getXcbConnection() const { return xcbConnectionShared.get(); } std::string stringify() const; private: void parseWindowSelector(const smo::device::SenseDeviceSpec& spec); int getRequiredParamAsInt( const smo::device::SenseDeviceSpec& spec, const std::string& paramName); std::shared_ptr deviceSpec; WindowSelector windowSelector; std::string actualWindowName; std::shared_ptr xcbConnectionShared; }; } // namespace xcb_window #endif // XCB_WINDOW_SENSE_API_H