summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2025-06-18 22:42:52 +0200
committerVaxry <vaxry@vaxry.net>2025-06-18 22:43:04 +0200
commit0fb63c68e9c5112815d168cb283324dd9136e691 (patch)
tree1418bde3053e42a33f8d4daa7fc3f3d136f6a5b2 /src/plugins
parent83a4c610489eefab13066f56b17b1907b9c6d9a6 (diff)
permissions: properly print config requests for plugins
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/PluginSystem.cpp8
-rw-r--r--src/plugins/PluginSystem.hpp3
2 files changed, 6 insertions, 5 deletions
diff --git a/src/plugins/PluginSystem.cpp b/src/plugins/PluginSystem.cpp
index bfa3710f..cd36702e 100644
--- a/src/plugins/PluginSystem.cpp
+++ b/src/plugins/PluginSystem.cpp
@@ -14,15 +14,15 @@ CPluginSystem::CPluginSystem() {
g_pFunctionHookSystem = makeUnique<CHookSystem>();
}
-SP<CPromise<CPlugin*>> CPluginSystem::loadPlugin(const std::string& path) {
+SP<CPromise<CPlugin*>> CPluginSystem::loadPlugin(const std::string& path, eSpecialPidTypes pidType) {
pid_t pid = 0;
if (g_pHyprCtl->m_currentRequestParams.pid > 0)
pid = g_pHyprCtl->m_currentRequestParams.pid;
- return CPromise<CPlugin*>::make([path, pid, this](SP<CPromiseResolver<CPlugin*>> resolver) {
- const auto PERM = g_pDynamicPermissionManager->clientPermissionModeWithString(pid, path, PERMISSION_TYPE_PLUGIN);
+ return CPromise<CPlugin*>::make([path, pid, pidType, this](SP<CPromiseResolver<CPlugin*>> resolver) {
+ const auto PERM = g_pDynamicPermissionManager->clientPermissionModeWithString(pidType != SPECIAL_PID_TYPE_NONE ? pidType : pid, path, PERMISSION_TYPE_PLUGIN);
if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING) {
Debug::log(LOG, "CPluginSystem: Waiting for user confirmation to load {}", path);
@@ -220,7 +220,7 @@ void CPluginSystem::updateConfigPlugins(const std::vector<std::string>& plugins,
changed = true;
- loadPlugin(path)->then([path](SP<CPromiseResult<CPlugin*>> result) {
+ loadPlugin(path, SPECIAL_PID_TYPE_CONFIG)->then([path](SP<CPromiseResult<CPlugin*>> result) {
if (result->hasError()) {
const auto NAME = path.contains('/') ? path.substr(path.find_last_of('/') + 1) : path;
Debug::log(ERR, "CPluginSystem::updateConfigPlugins: failed to load plugin {}: {}", NAME, result->error());
diff --git a/src/plugins/PluginSystem.hpp b/src/plugins/PluginSystem.hpp
index 816569d2..7d062a9b 100644
--- a/src/plugins/PluginSystem.hpp
+++ b/src/plugins/PluginSystem.hpp
@@ -3,6 +3,7 @@
#include "../defines.hpp"
#include "../helpers/defer/Promise.hpp"
#include "PluginAPI.hpp"
+#include "../managers/permissions/DynamicPermissionManager.hpp"
#include <csetjmp>
#include <expected>
@@ -32,7 +33,7 @@ class CPluginSystem {
public:
CPluginSystem();
- SP<CPromise<CPlugin*>> loadPlugin(const std::string& path);
+ SP<CPromise<CPlugin*>> loadPlugin(const std::string& path, eSpecialPidTypes pidType = SPECIAL_PID_TYPE_NONE);
void unloadPlugin(const CPlugin* plugin, bool eject = false);
void unloadAllPlugins();
void updateConfigPlugins(const std::vector<std::string>& plugins, bool& changed);