From 6b16eae7783ad6ef578ee32c970c19b71ad82060 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Jun 2025 14:55:28 +0800 Subject: clip --- src/protocols/DataDeviceWlr.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/protocols/DataDeviceWlr.cpp') diff --git a/src/protocols/DataDeviceWlr.cpp b/src/protocols/DataDeviceWlr.cpp index d29106e0..262bc109 100644 --- a/src/protocols/DataDeviceWlr.cpp +++ b/src/protocols/DataDeviceWlr.cpp @@ -1,6 +1,8 @@ #include "DataDeviceWlr.hpp" #include +#include #include "../managers/SeatManager.hpp" +#include "../managers/permissions/DynamicPermissionManager.hpp" #include "core/Seat.hpp" using namespace Hyprutils::OS; @@ -23,6 +25,16 @@ CWLRDataOffer::CWLRDataOffer(SP resource_, SPclient(); + const auto PERM = g_pDynamicPermissionManager->clientPermissionMode(CLIENT, PERMISSION_TYPE_CLIPBOARD_READ); + if (PERM == PERMISSION_RULE_ALLOW_MODE_DENY) { + LOGM(Log::LOG, "Clipboard read denied by permission manager for client {:x}", (uintptr_t)CLIENT); + return; + } else if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING) { + LOGM(Log::LOG, "Clipboard read permission pending for client {:x}", (uintptr_t)CLIENT); + return; + } + LOGM(Log::DEBUG, "Offer {:x} asks to send data from source {:x}", (uintptr_t)this, (uintptr_t)m_source.get()); m_source->send(mime, std::move(sendFd)); @@ -118,6 +130,16 @@ CWLRDataDevice::CWLRDataDevice(SP resource_) : m_resou return; } + const auto CLIENT = r->client(); + const auto PERM = g_pDynamicPermissionManager->clientPermissionMode(CLIENT, PERMISSION_TYPE_CLIPBOARD_WRITE); + if (PERM == PERMISSION_RULE_ALLOW_MODE_DENY) { + LOGM(Log::LOG, "Clipboard write denied by permission manager for client {:x}", (uintptr_t)CLIENT); + return; + } else if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING) { + LOGM(Log::LOG, "Clipboard write permission pending for client {:x}", (uintptr_t)CLIENT); + return; + } + if (source && source->used()) LOGM(Log::WARN, "setSelection on a used resource. By protocol, this is a violation, but firefox et al insist on doing this."); @@ -135,6 +157,16 @@ CWLRDataDevice::CWLRDataDevice(SP resource_) : m_resou return; } + const auto CLIENT = r->client(); + const auto PERM = g_pDynamicPermissionManager->clientPermissionMode(CLIENT, PERMISSION_TYPE_CLIPBOARD_WRITE); + if (PERM == PERMISSION_RULE_ALLOW_MODE_DENY) { + LOGM(Log::LOG, "Clipboard write denied by permission manager for client {:x}", (uintptr_t)CLIENT); + return; + } else if (PERM == PERMISSION_RULE_ALLOW_MODE_PENDING) { + LOGM(Log::LOG, "Clipboard write permission pending for client {:x}", (uintptr_t)CLIENT); + return; + } + if (source && source->used()) LOGM(Log::WARN, "setSelection on a used resource. By protocol, this is a violation, but firefox et al insist on doing this."); -- cgit v1.2.3