Bug: /copy still fails on GNOME/Mutter Wayland in 1.0.80 — xclip fallback wrongly gated on WAYLAND_DISPLAY being unset
還沒有人認領這個 Issue。
- 主要語言
- Shell
- 星號
- 11.2k
- 分支
- 1.9k
- 平均合併
- 14 小時 16 分鐘
- 30 天內合併 PR
- 6
描述
Describe the bug
/copy fails on GNOME/Mutter Wayland sessions with:
Failed to copy to clipboard: Error: Failed to set text: Failed to write clipboard content:
A required Wayland protocol (ext-data-control, or wlr-data-control version 1) is not
supported by the compositor
This was previously reported in #3395, #3414, #3467, #3483, #3586 and closed as fixed in 1.0.69 ("Make /copy fall back to wl-copy on Wayland", agent-runtime PR #12146). That fix does not resolve the issue for GNOME/Mutter users, because:
- GNOME/Mutter (all versions up to and including Mutter 46, shipped in Ubuntu 24.04 LTS) does not implement
wlr-data-control, and only gained (opt-in)ext-data-control-v1support in Mutter 47+. So the newwl-copyfallback still fails with the same underlying error on GNOME 46. - Inspecting the bundled CLI JS (
v1.0.80,linux-x64), thexclipfallback path is gated by:
This requiresfunction SUe(){return process.platform==="linux"&&!!process.env.DISPLAY&&!process.env.WAYLAND_DISPLAY}WAYLAND_DISPLAYto be unset, which is never true in a native Wayland session — even thoughxclip(via XWayland) works correctly and is already installed on the system. As a result, the CLI never attempts the one fallback that actually works on GNOME.
Affected version
GitHub Copilot CLI 1.0.80 (bug present since at least 1.0.49; the 1.0.69 changelog fix did not address it).
Environment
- OS: Ubuntu 24.04.4 LTS
- Desktop: GNOME Shell 46.0 (Mutter 46), Wayland session
DISPLAY=:0,WAYLAND_DISPLAY=wayland-0xclipinstalled and confirmed working manually (echo test | xclip -selection clipboardsucceeds and is readable)wl-copy(wl-clipboard) fails as expected, since Mutter 46 lacks the required protocol
Steps to reproduce
- Run Copilot CLI on Ubuntu 24.04 in the default GNOME Wayland session.
- Run
/copy(or select text and try to copy). - Observe the error above; nothing is copied to the clipboard.
Expected behavior
/copy should successfully copy to the clipboard. Since the compositor-level Wayland protocols are unavailable, the CLI should fall back to xclip/xsel (which work via XWayland regardless of WAYLAND_DISPLAY being set) before giving up, or fall back further to OSC 52.
Workaround found
Launching the CLI with WAYLAND_DISPLAY unset (env -u WAYLAND_DISPLAY copilot) causes the xclip fallback to trigger and /copy works correctly. This confirms the fix is simply to stop gating the xclip fallback on the absence of WAYLAND_DISPLAY.
Suggested fix
In the clipboard-writing logic, attempt xclip/xsel as a fallback whenever the executable is present and DISPLAY is set, regardless of WAYLAND_DISPLAY. Reserve WAYLAND_DISPLAY checks only for deciding whether to also try wl-copy/native Wayland protocols first.
Additional context
This is a regression/gap that has been reported and closed multiple times without a working fix for GNOME/Mutter users specifically (a large fraction of Linux desktop users, since GNOME is Ubuntu's default). Please consider reopening rather than closing as duplicate, since the root cause (the xclip gating logic) has not actually been changed in any release through 1.0.80.
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
從 /copy 入口開始,追蹤由隨附的 CLI JS 所表示的剪貼簿寫入邏輯,尤其是檢查 DISPLAY 和 WAYLAND_DISPLAY 的 fallback 條件。在已安裝 xclip 的 GNOME/Mutter Wayland 工作階段中驗證其行為,然後確認剪貼簿複製成功,同時 Wayland 原生協定仍不可用。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- javascript, linux
- 領域
- cli, operating-systems
- Issue 類型
- 缺陷
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 活躍
- 描述清晰度
- 基本清楚
- 新手友好度
- 64/100