palmoni5
f28ac38ccf
feat: optionally sync clipboard between connected sessions ( #15934 )
...
* feat(clipboard): optionally sync clipboard between connected sessions
Clipboard content received from a remote session is written to the local
clipboard with an owner marker, so the client clipboard loop deliberately
skips re-broadcasting it to avoid echo loops. As a result, text copied in
one remote window could not be pasted in another connected remote window.
Add an opt-in local option (allow-sync-clipboard-between-sessions) that
relays Clipboard/MultiClipboards messages received from one session to
all other connected sessions, excluding the source session. Per-session
clipboard permissions and view-only mode are still respected via the
existing send path, and the owner marker on the receiving peers prevents
any echo back.
Desktop (flutter) only; file clipboard is not affected.
* fix(lang): propagate sync-clipboard-between-sessions-tip to all locale files
Add the new key to template.rs and every locale file per the localization
convention, move the en.rs entry to the end of the list, and drop comments
that only restated the names next to them.
* fix(lang): add the 'Sync clipboard between sessions' label to the localization catalog
The checkbox label goes through translate(), so add it to template.rs
and every locale file so non-English locales can translate it. en.rs is
skipped since the English display text is identical to the key.
* fix(clipboard): check the source session's full clipboard permission before relaying
The relay was gated only by the incoming clipboard_allowed check
(!disable_clipboard && !view_only). Gate it with
is_text_clipboard_required() instead, which additionally respects the
source session's server_clipboard_enabled and server_keyboard_enabled
state, matching the predicate already applied to destination sessions.
A message arriving after the source permission was revoked (or from a
non-conforming peer) is no longer propagated to other sessions. The
existing local update_clipboard behavior is unchanged.
* fix(lang): translate the new clipboard sync entries in all locale files
Fill the 'Sync clipboard between sessions' label and its tooltip in
every locale file instead of leaving them blank, following each file's
existing terminology. template.rs keeps the empty master entries.
2026-09-01 10:47:26 +08:00
FrederickStempfle
b1fad7bbed
fix: validate RGBA clipboard dimensions ( #15672 )
2026-07-26 08:56:22 +08:00
fufesou
001848bf2f
fix(fuse): umount ( #15426 )
...
* fix(clipboard): clean up stale Linux FUSE mounts
Recover Linux file clipboard FUSE mount points before remounting and stop treating a cached
context as valid when the mount has already gone away.
This fixes the desktop file manager copy failure that shows dialogs such as
"Error while copying a" and "There was an error copying the file into xxx".
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(clipboard): fuse, reduce dups
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: clear Linux file clipboard before unmounting FUSE
Ensure Linux client teardown clears RustDesk file clipboard URLs while
the FUSE context is still available. Also prefer fusermount before
umount to avoid noisy unprivileged teardown attempts.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(clipboard): return and log errors
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-06-26 16:17:44 +08:00
fufesou
3c574a4182
fix(wayland): clipboard, support ext-data-control ( #15366 )
...
* fix(wayland): clipboard, support ext-data-control
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(clipboard): restart stale listener and log join panics
Signed-off-by: fufesou <linlong1266@gmail.com >
* update clipboard-master
Signed-off-by: fufesou <linlong1266@gmail.com >
* refactor(clipboard): remove redundant stale listener cleanup
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-06-21 17:09:41 +08:00
fufesou
3217125dd3
fix(keyboard): wayland clipboard input prompt ( #14700 )
...
* fix(keyboard): wayland clipboard input prompt
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): Simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): clipboard input, remove unused code
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): Simple refactor
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): dialog, better enableAndContinue
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input dialog consent
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): prompt text
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): text input
1. Use `keysym` for the installed version if possible.
2. Use the clipboard if the string cannot be fully handled by `keysym`.
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input prompt dialog
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): translations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): dialog, title type
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): better decode_utf8_prefix()
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): better process_chr()
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): unit tests
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input prompt dialog, no icon
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input dialog, Toast show the result
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input dialog, showToast() on persist failed
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input prompt, better dialog
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(wayland): input prompt dialog, translations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): better wayland clipboard input prompt
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): wayland clipboard, link external app
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): trivial changes
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): wayland clipboard input, dialog content
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): tranlsations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): translations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): translations
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix(input): translations
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2026-06-02 16:06:35 +08:00
Nicola Spieser Buiss
9345fb754a
fix: correct typos and improve code clarity ( #14341 )
...
- Fix 'clipbard' typos in clipboard.rs (function names, comments, strings)
- Fix 'seperate' typo in x11/server.rs comment
- Replace !is_ok() with idiomatic is_err() in updater.rs
- Fix double backtick typo in updater.rs comment
Co-authored-by: Ocean <ocean@Mac-mini-von-Ocean.local >
2026-02-17 14:29:50 +08:00
fufesou
b2dff336ce
fix: wayland controlled side, cursor misalignment ( #13537 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-11-18 00:37:15 +08:00
luzpaz
e14e850e10
fix: typos in src/ and subdirectories ( #11727 )
...
Found via codespell
2025-09-17 13:37:44 +08:00
fufesou
a22f2108c6
refact: suppress warns on macos ( #12449 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-08-18 15:09:11 +08:00
fufesou
fd4e0146e1
fix: replace sh with CMD_SH ( #12173 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-06-26 15:54:16 +08:00
fufesou
20fcddffbd
fix: build ( #11611 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-04-30 23:49:18 +08:00
fufesou
00293a9902
Feat/macos clipboard file ( #10939 )
...
* feat: macos, clipboard file
Signed-off-by: fufesou <linlong1266@gmail.com >
* Can't reuse file transfer
Signed-off-by: fufesou <linlong1266@gmail.com >
* handle paste task
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2025-02-28 00:46:46 +08:00
fufesou
fbba8f0b34
refact: file copy&paste, cross platform (no macOS) ( #10671 )
...
* feat: unix, file copy&paste
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: unix file c&p, check peer version
Signed-off-by: fufesou <linlong1266@gmail.com >
* Update pubspec.yaml
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com >
2025-02-04 20:33:02 +08:00
fufesou
8b710f62c8
feat: android clipboard, multi-formats ( #9950 )
...
* feat: android clipboard, multi-formats
Signed-off-by: fufesou <linlong1266@gmail.com >
* Chore
Signed-off-by: fufesou <linlong1266@gmail.com >
* Remove unused code
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-11-18 15:43:41 +08:00
fufesou
a2792d1527
comments ( #9297 )
...
* comments
Signed-off-by: fufesou <linlong1266@gmail.com >
* comments
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-08 23:07:42 +08:00
fufesou
2922ebe22a
Fix/clipboard retry if is occupied ( #9293 )
...
* fix: clipboard, retry if is occupied
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: clipboard service, hold runtime to cm ipc
Signed-off-by: fufesou <linlong1266@gmail.com >
* update arboard
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: log
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: get formats, return only not
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-08 21:13:05 +08:00
fufesou
dbbbd08934
fix: clipboard, support excel xml spreadsheet ( #9252 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-09-04 16:44:36 +08:00
fufesou
15404ecab4
fix: clipboard, windows, controlled side, formats ( #8885 )
...
* fix: clipboard, windows, controlled side, formats
Signed-off-by: fufesou <linlong1266@gmail.com >
* Clipboard, reuse ipc conn and send_raw()
Signed-off-by: fufesou <linlong1266@gmail.com >
* Clipboard, merge content buffer
Signed-off-by: fufesou <linlong1266@gmail.com >
* refact: clipboard service, ipc stream
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-30 11:35:39 +08:00
fufesou
0e98a51775
fix: clipboard, set formats and enable option ( #8873 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-29 15:40:02 +08:00
fufesou
541d9c6b86
feat: clipboard, multi formats ( #8733 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-28 17:26:54 +08:00
RustDesk
ef4d84657b
Revert "feat: clipboard, multi format ( #8672 )" ( #8673 )
...
This reverts commit 011647511c .
2024-07-11 00:36:29 +08:00
fufesou
011647511c
feat: clipboard, multi format ( #8672 )
...
* feat: clipboard, multi format
Signed-off-by: fufesou <linlong1266@gmail.com >
* inline
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-11 00:05:25 +08:00
fufesou
0511cdbb21
feat: clipboard svg ( #8615 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-05 09:30:59 +08:00
RustDesk
92d0fe1c3f
Revert "feat: clipboard svg ( #8608 )" ( #8612 )
...
This reverts commit a9015bcf70 .
2024-07-04 21:31:19 +08:00
fufesou
a9015bcf70
feat: clipboard svg ( #8608 )
...
* feat: clipboard svg
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: is_last_plain, reset on clipboard event
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-04 21:23:08 +08:00
fufesou
86ff768241
clear unwrap ( #8605 )
...
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-04 20:18:53 +08:00
fufesou
51db8e706d
fix: win, clipboard image ( #8561 )
...
The window must belong to the current thread for clipboard-master.
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmessage#:~:text=The%20window%20must%20belong%20to%20the%20current%20thread .
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-02 00:46:55 +08:00
fufesou
62a8349739
fix: clipboard data, decompress, buf too small ( #8556 )
...
* fix: clipboard data, decompress, buf too small
Signed-off-by: fufesou <linlong1266@gmail.com >
* fix: compress image
Signed-off-by: fufesou <linlong1266@gmail.com >
* decompress image, use default level
Signed-off-by: fufesou <linlong1266@gmail.com >
* chore
Signed-off-by: fufesou <linlong1266@gmail.com >
* decompress, zstd::decode_all
Signed-off-by: fufesou <linlong1266@gmail.com >
---------
Signed-off-by: fufesou <linlong1266@gmail.com >
2024-07-02 00:18:38 +08:00
rustdesk
e71d86c124
move clipboard in common.rs to clipboard.rs
2024-07-01 02:14:58 +08:00