forked from quickshell/quickshell
feat: basic plugin system
The wayland plugin now uses it.
This commit is contained in:
parent
6c6272e523
commit
3bd587cfcc
8 changed files with 94 additions and 4 deletions
29
src/core/plugin.hpp
Normal file
29
src/core/plugin.hpp
Normal file
|
@ -0,0 +1,29 @@
|
|||
#pragma once
|
||||
|
||||
#include <qcontainerfwd.h>
|
||||
#include <qfunctionpointer.h>
|
||||
|
||||
class QuickshellPlugin {
|
||||
public:
|
||||
QuickshellPlugin() = default;
|
||||
virtual ~QuickshellPlugin() = default;
|
||||
QuickshellPlugin(QuickshellPlugin&&) = delete;
|
||||
QuickshellPlugin(const QuickshellPlugin&) = delete;
|
||||
void operator=(QuickshellPlugin&&) = delete;
|
||||
void operator=(const QuickshellPlugin&) = delete;
|
||||
|
||||
virtual bool applies() { return true; }
|
||||
virtual void init() {}
|
||||
virtual void registerTypes() {}
|
||||
|
||||
static void registerPlugin(QuickshellPlugin& plugin);
|
||||
static void initPlugins();
|
||||
};
|
||||
|
||||
// NOLINTBEGIN
|
||||
#define QS_REGISTER_PLUGIN(clazz) \
|
||||
[[gnu::constructor]] void qsInitPlugin() { \
|
||||
static clazz plugin; \
|
||||
QuickshellPlugin::registerPlugin(plugin); \
|
||||
}
|
||||
// NOLINTEND
|
Loading…
Add table
Add a link
Reference in a new issue