diff options
| author | outfoxxed <outfoxxed@outfoxxed.me> | 2023-05-01 07:10:53 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-01 15:10:53 +0100 |
| commit | 3a631e40db78f98ab82bb600d7cf9d7428bc2b02 (patch) | |
| tree | 9d43696e1fcd6ed24110513c67a600c001638558 /src/plugins/PluginSystem.hpp | |
| parent | dc469dc4c18732b534c3d9f46678a6e53379abd6 (diff) | |
Declarative plugin management (#2180)
* Declarative plugin management
Allow declaring `plugin` entries in the hyprland configuration.
Plugins will be loaded if an entry is added and unloaded if that entry
is removed.
* Replace pointers with copying in updateconfigPlugins
* Include which plugin was declared twice in error
Diffstat (limited to 'src/plugins/PluginSystem.hpp')
| -rw-r--r-- | src/plugins/PluginSystem.hpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/plugins/PluginSystem.hpp b/src/plugins/PluginSystem.hpp index 5d1a1532..0ef30bab 100644 --- a/src/plugins/PluginSystem.hpp +++ b/src/plugins/PluginSystem.hpp @@ -15,6 +15,8 @@ class CPlugin { std::string path = ""; + bool m_bLoadedWithConfig = false; + HANDLE m_pHandle = nullptr; std::vector<IHyprLayout*> registeredLayouts; @@ -27,14 +29,15 @@ class CPluginSystem { public: CPluginSystem(); - CPlugin* loadPlugin(const std::string& path); - void unloadPlugin(const CPlugin* plugin, bool eject = false); - void unloadAllPlugins(); - CPlugin* getPluginByPath(const std::string& path); - CPlugin* getPluginByHandle(HANDLE handle); - std::vector<CPlugin*> getAllPlugins(); + CPlugin* loadPlugin(const std::string& path); + void unloadPlugin(const CPlugin* plugin, bool eject = false); + void unloadAllPlugins(); + std::vector<std::string> updateConfigPlugins(const std::vector<std::string>& plugins, bool& changed); + CPlugin* getPluginByPath(const std::string& path); + CPlugin* getPluginByHandle(HANDLE handle); + std::vector<CPlugin*> getAllPlugins(); - bool m_bAllowConfigVars = false; + bool m_bAllowConfigVars = false; private: std::vector<std::unique_ptr<CPlugin>> m_vLoadedPlugins; |
