[Share Experiences] 修复 Deepin V23 中 OpenCode 终端“假复制”问题
Tofloor
poster avatar
cloudguest
deepin
5 hours ago
Author

问题描述

在 Deepin V23 系统中运行 OpenCode (AI 编码代理工具)时,用鼠标在终端界面选中文字,UI 提示复制成功(英文提示 Copied to clipboard),但在其他地方粘贴时,发现实际系统剪贴板内没有任何内容,出现了“假复制”现象。

原因分析

OpenCode 是一个基于 Node.js 和 TypeScript 构建的 TUI(Terminal User Interface,终端用户界面)应用。出现该问题的原因在于:

  1. 事件劫持:选中文字时,OpenCode 前端接管了鼠标事件,试图调用 Node.js 底层的跨平台库来执行剪贴板写入操作,前端直接“乐观”地展示了复制成功的 UI 提示。
  2. 底层依赖缺失:Deepin V23 默认使用 Wayland 显示服务器协议。当 Node.js 在底层尝试调用系统的命令行剪贴板工具时,如果系统未安装 wl-clipboard(Wayland 剪贴板工具),该操作会静默失败。前端没有捕获到底层的失败异常,导致提示成功但实际写入失败。

解决方案

为 Deepin V23 系统补全 OpenCode 依赖的底层命令行剪贴板工具。

操作步骤:

  1. 打开 Deepin V23 自带的系统终端。
  2. 运行以下命令,更新软件源并安装对应的剪贴板依赖包:
    sudo apt update
    
    # 安装 Wayland 环境剪贴板工具(Deepin V23 必需)
    sudo apt install wl-clipboard
    
    # 建议同时安装 X11 兼容依赖作为后备保险
    sudo apt install xclip xsel
    
  3. 安装完成后,完全退出正在运行的 OpenCode 进程。
  4. 重新启动 opencode,此时直接在终端中选中文字,不仅会有复制成功提示,文字也能正常写入系统剪贴板了。

💡 备用技巧 (TUI 通用):
在修复依赖之前,或者在遇到其他 Linux 终端 TUI 工具(如 vim, tmux 等)劫持鼠标时,可以按住Shift 键的同时用鼠标拖拽选中文本,这会强制绕过 TUI 程序的接管,调用终端自身的原生复制功能。

Reply Favorite View the author
All Replies
一粒
deepin
2 hours ago
#1

写的有问题哦!23哪里来的wayland

Reply View the author