No description
Find a file
Peter Hutterer d7d3f8d4c8 feat: inputcapture clipboard support
Send the clipboard over the libportal InputCapture portal. Only built
if the installed libportal has clipboard support.

AI disclosure: Claude was used on both sides of this work.
- Peter Hutterer: "The second commit was purely written by Claude
  after I stared at this for too long without seeing any hope of
  getting started. Turns out Claude wrote something that at least
  looks correct and it does work. It needs review but also needs
  knowledge of deskflow's internals that I don't have..."
- Nick Bolton: Claude also assisted with the follow-up work listed
  below (image copy/paste, session re-request, race fixes, size/mime
  validation, and CMake detection).

Server side (Wayland host, Peter Hutterer):
- Initial scaffolding for inputcapture clipboard support, guarded so it
  only builds when the portal exposes the clipboard API.
- Integrate clipboard data into the inputcapture session so the host
  clipboard can be offered to the remote (the Claude-written commit
  referenced above).

Client side (Wayland receiver, KoljaFrahm):
- Receive clipboard data from the server and feed it into the local
  clipboard through libportal. Built on the reference code by Peter:
  https://github.com/whot/libportal-clipboard-test/tree/main

Build integration and rebase (Chris Rizzitello, sithlord48):
- Add the original CMake check for libportal/clipboard.h to define
  HAVE_LIBPORTAL_CLIPBOARD, and guard the libportal clipboard use on
  it.
- Update the code style and rebase onto the updated input capture
  session persistence: https://github.com/deskflow/deskflow/pull/9415

Image support and reliability fixes (Nick Bolton):
- Support image copy/paste in addition to text, so screenshots and
  other image clipboard contents work both ways through inputcapture.
- Re-request the input capture session when it comes up without a
  clipboard, so new testers with existing sessions can get clipboard
  functionality without needing to clear the session.
- Defer clipboard reads until the input capture session is active,
  avoiding races where reads happen before the portal is ready.
- Fix assorted style issues in original commit to match conventions.
- Check the configured clipboard size limit and validate incoming
  mime types before forwarding inputcapture clipboard data.
- Switch the CMake clipboard probe to check_symbol_exists so detection
  matches what the compiler actually sees in the headers.

Co-authored-by: Nick Bolton <nick@symless.com>
Co-authored-by: KoljaFrahm <GitHub.Kolja@dfgh.net>
Co-authored-by: Chris Rizzitello <sithlord48@gmail.com>
2026-06-18 22:06:37 +01:00
.github ci: update sonar-cube-action/install-build-action to v8 2026-06-10 06:52:25 +01:00
cmake build(macos): remove unneeded setting for sysroot 2026-04-27 10:38:52 -04:00
deploy chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
docs refactor(Settings): move defaultLockToScreenState to general settings 2026-06-16 09:59:51 +01:00
LICENSES build: do not ship vc msm file, link the redist in the readme 2025-03-06 19:17:53 +00:00
src feat: inputcapture clipboard support 2026-06-18 22:06:37 +01:00
translations feat: add AltGr modifier override to Screen Settings Dialog 2026-05-19 10:50:47 +01:00
.clang-format chore: Adjust Clang-format linter rules 2024-10-17 21:38:29 +01:00
.editorconfig docs: Add .editorconfig file 2024-10-15 23:08:28 +01:00
.gitattributes Force LF in gitattributes 2024-10-15 18:02:20 +01:00
.gitignore chore: update 'Synergy App Ltd' copyright (company renamed) 2026-06-09 00:06:11 -04:00
CMakeLists.txt build: Replace WINAPI_MSWINDOWS with Q_OS_WIN 2026-03-06 08:57:31 -05:00
cspell.json docs(build): Fix minor nits in build docs 2025-11-20 08:15:34 -05:00
LICENSE Revert "chore: move LICENSE -> docs/LICENSE" 2026-02-23 17:26:19 -05:00
REUSE.toml chore: move doc dir to docs 2026-02-23 17:02:05 -05:00
sonar-project.properties feat: support translation generation 2025-10-27 17:54:32 -04:00

Deskflow

Deskflow is a free and open source keyboard and mouse sharing app. Use the keyboard, mouse, or trackpad of one computer to control nearby computers, and work seamlessly between them.

Homepage Code

Getting help online

  • View the wiki Online resource

Chat with us

Reporting security issues

Check Security to find out how to report security issues.