coder / coder/code-server

Terminal loses text selection whenever a TUI enables mouse reporting — no way to opt out in the browser

Đang mở
#7,938 3 bình luận 2 reaction 0 người được giao Xem trên GitHub
bug code-server needs-investigation
Ngôn ngữ chính
TypeScript
Star
79.3k
Fork
6.8k
Merge trung bình
2 ngày 6 giờ
Pull request đã merge (30 ngày)
41

Mô tả

### What happens

Any TUI that enables mouse reporting (`CSI ? 1000 h`) takes the click away from xterm.js, so a plain drag in the terminal no longer creates a selection. On the desktop that is annoying; in `code-server` it removes the last reliable path to the OS clipboard, because the DOM selection is what the browser's own copy relies on — the VS Code copy commands go through an async IPC hop that loses the clipboard user-gesture.

Concretely: with a full-screen TUI running (e.g. Claude Code with `tui: fullscreen`), users cannot copy terminal text out of the browser at all, unless they know that `Shift`+drag forces a selection.

### Measured

Loaded the exact `@xterm/xterm` build shipped by code-server (6.1.0-beta.291) standalone and drove it with real mouse events:

| Mouse tracking armed | plain drag | `Shift` + drag |
|---|---|---|
| none | selection | selection |
| `?1000h ?1006h` | nothing | selection |
| `?1000h ?1002h ?1003h ?1006h` | nothing | selection |

### Ask

xterm.js already has the option that solves this — `mouseEventsRequireAlt`, which keeps tracking armed but only claims the click while a modifier is held. It is not referenced anywhere in the VS Code build that code-server ships, so it stays at its default.

I have opened an upstream request for VS Code to expose it as a terminal setting: https://github.com/microsoft/vscode/issues/330052. Filing here as well because the browser case is materially worse than the desktop one, and because code-server may want to set the option (or surface a preference) ahead of upstream.

At minimum, documenting `Shift`+drag as the escape hatch in the terminal FAQ would already help.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách lần theo phần tích hợp terminal của code-server và việc sử dụng bản build @xterm/xterm 6.1.0-beta.291 được đóng gói sẵn, sau đó so sánh cách có thể cấu hình mouseEventsRequireAlt. Kiểm tra terminal FAQ để xem cách thoát bằng Shift+drag. Được xem là hoàn tất khi người dùng trình duyệt có thể giữ nguyên vùng chọn trong terminal trong khi tính năng báo cáo chuột vẫn khả dụng, hoặc khi giới hạn và workaround được ghi lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript, vscode
Lĩnh vực
developer-experience, frontend, web-dev
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.