Terminal loses text selection whenever a TUI enables mouse reporting — no way to opt out in the browser
- 主要言語
- TypeScript
- スター
- 79.3k
- フォーク
- 6.8k
- 平均マージ
- 2日 6時間
- マージ済み PR(30日)
- 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