Skip to content

Fix Ctrl+V image paste on Linux (WebKit2GTK clipboard fallback)#327

Open
HassanRasoo98 wants to merge 1 commit into
andrewyng:mainfrom
HassanRasoo98:HassanRasoo98/fix-clipboard-image-paste-linux
Open

Fix Ctrl+V image paste on Linux (WebKit2GTK clipboard fallback)#327
HassanRasoo98 wants to merge 1 commit into
andrewyng:mainfrom
HassanRasoo98:HassanRasoo98/fix-clipboard-image-paste-linux

Conversation

@HassanRasoo98

Copy link
Copy Markdown

WebKit2GTK (Tauri's renderer on Linux) does not expose clipboard images as kind="file" items in paste events, unlike WebView2 on Windows. As a result, pasting a screenshot or copied image via Ctrl+V silently did nothing - the file picker was the only working path.

Fix: when the web paste API finds no image file items and there is no plain text in the clipboard, fall back to tauri-plugin-clipboard-manager to read the image natively, then convert the raw RGBA data through a canvas to a PNG File before handing it to the existing addFiles() path.

The fallback is guarded by "__TAURI__" in window so it never runs in the browser dev build. Windows and macOS are unaffected (the web paste path already works on those renderers).

Changes:

  • src-tauri/Cargo.toml: add tauri-plugin-clipboard-manager dep
  • src-tauri/src/lib.rs: register the clipboard plugin
  • src-tauri/capabilities/default.json: add clipboard-manager:allow-read-image
  • package.json: add @tauri-apps/plugin-clipboard-manager
  • src/components/Composer.tsx: async onPaste with native clipboard fallback

WebKit2GTK (Tauri's renderer on Linux) does not expose clipboard images
as `kind="file"` items in paste events, unlike WebView2 on Windows.
As a result, pasting a screenshot or copied image via Ctrl+V silently
did nothing — the file picker was the only working path.

Fix: when the web paste API finds no image file items and there is no
plain text in the clipboard, fall back to `tauri-plugin-clipboard-manager`
to read the image natively, then convert the raw RGBA data through a
canvas to a PNG File before handing it to the existing addFiles() path.

The fallback is guarded by `"__TAURI__" in window` so it never runs in
the browser dev build. Windows and macOS are unaffected (the web paste
path already works on those renderers).

Changes:
- src-tauri/Cargo.toml: add tauri-plugin-clipboard-manager dep
- src-tauri/src/lib.rs: register the clipboard plugin
- src-tauri/capabilities/default.json: add clipboard-manager:allow-read-image
- package.json: add @tauri-apps/plugin-clipboard-manager
- src/components/Composer.tsx: async onPaste with native clipboard fallback

Co-Authored-By: Hassan Rasool <hassanrasool1057@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant