Files
crossdesk/apps/cli/README.md
T

6.1 KiB
Raw Blame History

CrossDesk CLI

CrossDesk 的终端主控客户端,源码位于本仓库的 apps/cli。通过真实 MiniRTC ID 会话观看远程桌面;默认只读、静音。包含 ANSI 象限字符画面、局部放大和平移、Kitty / Sixel 图形后端,以及 Pi 自定义 TUI 扩展。

画面预览

ANSI 字符画面 Kitty 协议像素画面
CrossDesk CLI 的 ANSI 全景输出,包含只读状态栏与快捷键提示 CrossDesk CLI 的 Kitty 像素全景输出,显示同一远程桌面

图示来自 2026-10-31 的实际只读连接,通过伪终端采集并渲染协议输出;来源与边界见 图示说明。默认 auto 依次选择 Kitty、Sixel、ANSI;普通终端可指定 --renderer ansi,支持对应协议的终端可指定 --renderer kitty 或 --renderer sixel。显式像素模式需要通过能力探测;增加 Sixel 输出不代表所有 Xshell 版本均可显示图片,终端本身也必须支持该协议。ANSI 全景适合查看桌面轮廓,阅读小字需进入细节模式。

安装与连接

通过 npm 安装

需要 Node.js 22 或以上和 npm。统一入口为 @chunkdash/crossdesk-cli,分发目标为 macOS / Linux(x64、arm64)和 Windows(x64)。安装时自动选择对应的原生程序,无需 Xmake 或 C++ 编译工具链:

npm install -g @chunkdash/crossdesk-cli@latest
crossdesk-cli doctor --json
crossdesk-cli 123456789

将示例 ID 替换为被控电脑的 9 位 ID,按提示隐藏输入密码。doctor 仅检查本机环境,不发起连接。更新到最新版时重新执行上述安装命令。

无需全局安装时,使用 npx,首次运行会下载对应平台包:

npx @chunkdash/crossdesk-cli@latest doctor --json
npx @chunkdash/crossdesk-cli@latest 123456789

安装后命令为 crossdesk-cli。五个平台依赖使用 @chunkdash/crossdesk-cli-*,由启动器自动选择;请保留 npm 的可选依赖,不要使用 --omit=optional。旧的无 scope 平台包不属于这套依赖,仅安装平台包不会注册命令。三端实机验收尚未全部完成;运行要求、旧包迁移、打包与发布步骤见 npm 分发。

从源码构建

在 CrossDesk 仓库根目录执行以下命令构建 CLI:

./apps/cli/scripts/prepare-deps.sh
xmake f -y --CROSSDESK_BUILD_DESKTOP=n --CROSSDESK_BUILD_CLI=y --USE_CUDA=n -m release
xmake build crossdesk-cli
xmake run crossdesk-cli doctor --json
xmake run crossdesk-cli 123456789 --quality high --zoom native

构建后可直接运行 build/<platform>/<arch>/release/crossdesk-cli,也可将对应目录加入 PATH;Windows 的文件名为 crossdesk-cli.exe。

常用连接命令

以下示例适用于 npm 全局安装,或已将原生程序加入 PATH 的环境。crossdesk-cli <设备ID> [选项] 为默认连接方式,view <设备ID> 保留为兼容别名。设备 ID 是格式示例,使用时替换为你有权访问的设备,密码通过隐藏提示输入:

crossdesk-cli 123456789 --renderer kitty
crossdesk-cli 123456789 --renderer sixel --fps 8
crossdesk-cli 123456789 --renderer ansi --zoom native
crossdesk-cli 123456789 --quality balanced --fps 8
crossdesk-cli 123456789 --display 1

默认请求 high 画质(最高 1920 × 1080)和清晰度优先策略,--display 的索引从 0 开始。交互 CLI 默认本地输出目标为 30 FPS,远端供帧会随输出耗时自适应;显式 --fps 固定目标和相应预览请求,各帧率下均优先保持分辨率,实际画质与帧率仍取决于设备、终端与链路。更多参数见 主 README 和 终端使用指南。

查看、控制与退出

操作 按键
开启远端控制 只读模式下按 c
缩放 只读或本地命令模式下用 + / = / - 以鼠标位置缩放;只读时也可用滚轮
回到全景 只读或本地命令模式下按 f,同时重置倍率、平移和细节模式
平移 只读或本地命令模式下用方向键或 i 上、j 左、k 下、l 右
原始细节 只读时点击目标位置,或以 --zoom native 启动
暂停远端输入并进入本地命令模式 Ctrl+]
选择返回后的控制状态 本地命令模式下按 c,再按 Esc / Ctrl+C 返回
退出连接 只读模式下按 q / Ctrl+C;控制模式下先按 Ctrl+],再按 q

缩放尽量保持鼠标下的画面内容原位;没有有效鼠标位置时沿用当前中心。底部提示随模式和窗口宽度调整,Zoom at mouse 表示鼠标锚点缩放,Full view / Full 表示恢复全景。

本地命令模式在缩放、平移和按 c 后持续保持,直到手动返回。此模式中鼠标仅更新缩放锚点,点击和滚轮不执行视图操作。控制模式中的 Ctrl+T、Ctrl+C 和普通按键均传给远端。再次按 Ctrl+] 也可离开本地命令模式,若返回控制模式则同时向远端发送该组合键。

更多文档与功能范围

CLI 仅作为控制端,每次连接通过服务端获得新的 cli-xxxxxxxxx 临时 ID。使用前须部署支持 cli 注册的 crossdesk-server;旧服务端不会回退为普通设备身份。

终端 I/O 包含 POSIX(Linux/macOS)和 Windows Console / ConPTY 实现。macOS arm64 已完整构建,之前已连接真实被控端验证 ANSI 观看与预览协商。Linux / Windows 全量构建和真实连接、SSH/Kitty/Sixel 实机显示及真实 Pi TUI 仍需验收;交叉编译检查不等于完整运行验证。此项目不创建被控端虚拟桌面,不提供音频播放、文件传输、剪贴板同步或 MCP 服务。