Skip to content

Commit abbcedd

Browse files
committed
gpui: improve clipboard compatibility for wayland
This commit adds UTF8_STRING and text/plain to wayland clipboard
1 parent 4b5158b commit abbcedd

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

crates/gpui/src/platform/linux/wayland/client.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ use crate::platform::linux::{
7575
LinuxClient, get_xkb_compose_state, is_within_click_distance, open_uri_internal, read_fd,
7676
reveal_path_internal,
7777
wayland::{
78-
clipboard::{Clipboard, DataOffer, FILE_LIST_MIME_TYPE, TEXT_MIME_TYPE},
78+
clipboard::{Clipboard, DataOffer, FILE_LIST_MIME_TYPE, TEXT_MIME_TYPES},
7979
cursor::Cursor,
8080
serial::{SerialKind, SerialTracker},
8181
window::WaylandWindow,
@@ -778,8 +778,10 @@ impl LinuxClient for WaylandClient {
778778
state.clipboard.set_primary(item);
779779
let serial = state.serial_tracker.get(SerialKind::KeyPress);
780780
let data_source = primary_selection_manager.create_source(&state.globals.qh, ());
781+
for mime_type in TEXT_MIME_TYPES {
782+
data_source.offer(mime_type.to_string());
783+
}
781784
data_source.offer(state.clipboard.self_mime());
782-
data_source.offer(TEXT_MIME_TYPE.to_string());
783785
primary_selection.set_selection(Some(&data_source), serial);
784786
}
785787
}
@@ -796,8 +798,10 @@ impl LinuxClient for WaylandClient {
796798
state.clipboard.set(item);
797799
let serial = state.serial_tracker.get(SerialKind::KeyPress);
798800
let data_source = data_device_manager.create_data_source(&state.globals.qh, ());
801+
for mime_type in TEXT_MIME_TYPES {
802+
data_source.offer(mime_type.to_string());
803+
}
799804
data_source.offer(state.clipboard.self_mime());
800-
data_source.offer(TEXT_MIME_TYPE.to_string());
801805
data_device.set_selection(Some(&data_source), serial);
802806
}
803807
}

crates/gpui/src/platform/linux/wayland/clipboard.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ use crate::{
1515
platform::linux::platform::read_fd,
1616
};
1717

18-
pub(crate) const TEXT_MIME_TYPE: &str = "text/plain;charset=utf-8";
18+
/// Text mime types that we'll offer to other programs.
19+
pub(crate) const TEXT_MIME_TYPES: [&str; 2] =
20+
["text/plain;charset=utf-8", "UTF8_STRING", "text/plain"];
1921
pub(crate) const FILE_LIST_MIME_TYPE: &str = "text/uri-list";
2022

2123
/// Text mime types that we'll accept from other programs.

0 commit comments

Comments
 (0)