coder / coder/code-server

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

未关闭
#7,938 3 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看
bug code-server needs-investigation
主要语言
TypeScript
星标
79.3k
派生
6.8k
平均合并
2 天 6 小时
30 天内合并 PR
41

描述

### 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.

贡献指南

打开贡献指南

调研方向

Start by tracing the code-server terminal integration and its use of the shipped @xterm/xterm 6.1.0-beta.291 build, then compare how mouseEventsRequireAlt could be configured. Check the terminal FAQ for the Shift+drag escape hatch. Done means browser users can preserve terminal selection while mouse reporting remains available, or the limitation and workaround are documented.

由索引模型根据 Issue 内容生成。

评估

技术栈
typescript, vscode
领域
developer-experience, frontend, web-dev
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。