From 45b8b2a8950f0fccd99f71045e8d0d91638a9c18 Mon Sep 17 00:00:00 2001 From: bbedward Date: Sun, 28 Dec 2025 11:13:34 -0500 Subject: [PATCH] clipboard: don't store sensitive mime types in history fixes #1185 --- core/internal/server/clipboard/manager.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/core/internal/server/clipboard/manager.go b/core/internal/server/clipboard/manager.go index 5eb613b0..359d5b4a 100644 --- a/core/internal/server/clipboard/manager.go +++ b/core/internal/server/clipboard/manager.go @@ -11,14 +11,16 @@ import ( "io" "os" "path/filepath" + "slices" "strings" "syscall" "time" + "hash/fnv" + "github.com/fsnotify/fsnotify" _ "golang.org/x/image/bmp" _ "golang.org/x/image/tiff" - "hash/fnv" bolt "go.etcd.io/bbolt" @@ -28,6 +30,11 @@ import ( wlclient "github.com/AvengeMedia/DankMaterialShell/core/pkg/go-wayland/wayland/client" ) +// These mime types wont be stored in history +var sensitiveMimeTypes = []string{ + "x-kde-passwordManagerHint", +} + func NewManager(wlCtx wlcontext.WaylandContext, config Config) (*Manager, error) { if config.Disabled { return nil, fmt.Errorf("clipboard disabled in config") @@ -253,6 +260,10 @@ func (m *Manager) setupDataDeviceSync() { return } + if m.hasSensitiveMimeType(mimes) { + return + } + preferredMime := m.selectMimeType(mimes) if preferredMime == "" { return @@ -492,6 +503,12 @@ func extractHash(data []byte) uint64 { return binary.BigEndian.Uint64(data[len(data)-8:]) } +func (m *Manager) hasSensitiveMimeType(mimes []string) bool { + return slices.ContainsFunc(mimes, func(mime string) bool { + return slices.Contains(sensitiveMimeTypes, mime) + }) +} + func (m *Manager) selectMimeType(mimes []string) string { preferredTypes := []string{ "text/plain;charset=utf-8",