#pragma once #include "lumacs/window.hpp" #include "lumacs/layout_node.hpp" #include #include namespace lumacs { /// @brief Interface for accessing window management functionality. class IWindowManager { public: virtual ~IWindowManager() = default; /// @brief Get the currently active window. virtual std::shared_ptr active_window() const = 0; /// @brief Collect all windows in the layout tree. /// This is a helper to allow managers to iterate over all windows. virtual void collect_windows(LayoutNode* node, std::vector>& windows) = 0; /// @brief Get the root of the window layout tree. virtual std::shared_ptr root_layout() const = 0; }; } // namespace lumacs