Deskflow 1.26.0.285
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
PortalClipboard.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2026 Synergy App Ltd
4 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
5 */
6
7#pragma once
8
10
11#include <QByteArray>
12
13#include <libportal/portal.h>
14
15namespace deskflow {
16
17class EiClipboard;
18
20{
21public:
23 {
24 const char *mime;
26 };
27
28 // Listed in preference order: richer formats first.
29 static constexpr SupportedMime kSupportedMimes[] = {
30 {"image/png", IClipboard::Format::Bitmap},
31 {"text/plain;charset=utf-8", IClipboard::Format::Text},
32 {"text/plain", IClipboard::Format::Text},
33 };
34
35 static constexpr int kReadTimeoutMs = 200;
36 static constexpr int kWriteTimeoutMs = 200;
37 static constexpr qint64 kChunkBytes = 64 * 1024;
38
39 static QByteArray formatMimeTypes(const char *const *mimeTypes);
40 static const SupportedMime *findSupportedMime(const char *mime);
41 static const SupportedMime *pickSupportedMime(const char *const *available);
42 static QByteArray encodeFormat(IClipboard::Format format, const QByteArray &data);
43 static QByteArray decodeFormat(IClipboard::Format format, const QByteArray &bytes);
44 static QByteArray readSelectionBytes(XdpSession *session, const char *mime, qint64 maxBytes);
45
47 static void claimOwnership(EiClipboard *cache, XdpSession *session);
48
51 static void serveSelectionTransfer(EiClipboard *cache, XdpSession *session, const char *mime, uint32_t serial);
52
55 static bool
56 readSelectionIntoCache(EiClipboard *cache, XdpSession *session, const char *const *mimeTypes, qint64 maxBytes);
57
58private:
59 static QByteArray dibToBmp(const QByteArray &dib);
60 static QByteArray bmpToDib(const QByteArray &bmp);
61};
62
63} // namespace deskflow
static int void FAR * data
Definition ArchNetworkWinsock.cpp:35
Format
Clipboard formats.
Definition IClipboard.h:50
@ Bitmap
Bitmap format, BMP 24/32bpp, BI_RGB.
Definition IClipboard.h:53
@ Text
Text format, UTF-8, newline is LF.
Definition IClipboard.h:51
EI/Portal clipboard implementation.
Definition EiClipboard.h:21
Definition PortalClipboard.h:20
static bool readSelectionIntoCache(EiClipboard *cache, XdpSession *session, const char *const *mimeTypes, qint64 maxBytes)
Definition PortalClipboard.cpp:277
static constexpr int kWriteTimeoutMs
Definition PortalClipboard.h:36
static constexpr int kReadTimeoutMs
Definition PortalClipboard.h:35
static const SupportedMime * findSupportedMime(const char *mime)
Definition PortalClipboard.cpp:44
static QByteArray formatMimeTypes(const char *const *mimeTypes)
Definition PortalClipboard.cpp:33
static constexpr qint64 kChunkBytes
Definition PortalClipboard.h:37
static constexpr SupportedMime kSupportedMimes[]
Definition PortalClipboard.h:29
static QByteArray readSelectionBytes(XdpSession *session, const char *mime, qint64 maxBytes)
Definition PortalClipboard.cpp:159
static void claimOwnership(EiClipboard *cache, XdpSession *session)
Advertise the cache's formats to the portal selection.
Definition PortalClipboard.cpp:190
static QByteArray decodeFormat(IClipboard::Format format, const QByteArray &bytes)
Definition PortalClipboard.cpp:134
static void serveSelectionTransfer(EiClipboard *cache, XdpSession *session, const char *mime, uint32_t serial)
Definition PortalClipboard.cpp:213
static QByteArray encodeFormat(IClipboard::Format format, const QByteArray &data)
Definition PortalClipboard.cpp:103
static const SupportedMime * pickSupportedMime(const char *const *available)
Definition PortalClipboard.cpp:57
Definition DaemonApp.h:18
Definition PortalClipboard.h:23
IClipboard::Format format
Definition PortalClipboard.h:25
const char * mime
Definition PortalClipboard.h:24