#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& getDeviceAttachmentSpec() const { return deviceAttachmentSpec; } 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::DeviceAttachmentSpec& spec); std::shared_ptr deviceAttachmentSpec; WindowSelector windowSelector; std::string actualWindowName; std::shared_ptr xcbConnectionShared; }; } // namespace xcb_window #endif // XCB_WINDOW_SENSE_API_H