mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-02-17 11:53:25 +08:00
SimpleRemoter Linux Client
SimpleRemoter 的 Linux 客户端,支持远程桌面、远程终端、文件管理和进程管理功能。
功能特性
- 远程桌面 - 实时屏幕截图传输,支持鼠标/键盘控制
- 远程终端 - 基于 PTY 的交互式 Shell
- 文件管理 - 远程文件浏览、上传、下载
- 进程管理 - 查看和管理远程进程
- 守护进程模式 - 支持后台运行 (
-d参数)
系统要求
显示服务器
| 类型 | 支持状态 | 说明 |
|---|---|---|
| X11 / Xorg | 支持 | 完全支持 |
| XWayland | 部分支持 | X11 应用可用,原生 Wayland 应用不可见 |
| Wayland (纯) | 不支持 | 无法工作 |
重要: 本客户端使用 X11 API 进行屏幕捕获,不支持纯 Wayland 环境。 如果你使用 GNOME/KDE 等桌面环境,请在登录时选择 "Xorg" 或 "X11" 会话。
依赖库
必需 (远程桌面功能)
| 库 | 包名 (Debian/Ubuntu) | 包名 (RHEL/Fedora) | 用途 |
|---|---|---|---|
| libX11 | libx11-6 |
libX11 |
X11 核心库,屏幕捕获 |
推荐 (完整远程控制)
| 库 | 包名 (Debian/Ubuntu) | 包名 (RHEL/Fedora) | 用途 |
|---|---|---|---|
| libXtst | libxtst6 |
libXtst |
XTest 扩展,模拟鼠标/键盘输入 |
可选
| 库 | 包名 (Debian/Ubuntu) | 包名 (RHEL/Fedora) | 用途 |
|---|---|---|---|
| libXss | libxss1 |
libXScrnSaver |
获取用户空闲时间 |
一键安装依赖
Debian / Ubuntu:
sudo apt update
sudo apt install libx11-6 libxtst6 libxss1
RHEL / CentOS / Fedora:
sudo dnf install libX11 libXtst libXScrnSaver
Arch Linux:
sudo pacman -S libx11 libxtst libxss
编译
编译依赖
# Debian/Ubuntu
sudo apt install build-essential cmake
# RHEL/Fedora
sudo dnf install gcc-c++ cmake make
编译步骤
cd linux
cmake .
make -j$(nproc)
编译成功后生成可执行文件 ghost。
使用方法
基本用法
./ghost [服务器IP] [端口]
守护进程模式
./ghost -d [服务器IP] [端口]
示例
# 前台运行,连接到 192.168.1.100:6543
./ghost 192.168.1.100 6543
# 后台守护进程模式
./ghost -d 192.168.1.100 6543
# 停止守护进程
kill $(cat ~/.config/ghost/ghost.pid)
常见问题
Q: 远程桌面功能不工作
检查项:
-
确认使用 X11 会话
echo $XDG_SESSION_TYPE # 应输出 "x11",如果是 "wayland" 则不支持 -
确认 DISPLAY 环境变量已设置
echo $DISPLAY # 应输出类似 ":0" 或 ":1" -
确认 X11 库已安装
ldconfig -p | grep libX11 # 应输出 libX11.so.6 的路径
Q: 鼠标/键盘控制不工作
安装 XTest 扩展库:
# Debian/Ubuntu
sudo apt install libxtst6
# RHEL/Fedora
sudo dnf install libXtst
Q: 警告 "MIT-SCREEN-SAVER missing"
这是一个无害警告,表示无法获取用户空闲时间。可以忽略,或安装 libXss:
# Debian/Ubuntu
sudo apt install libxss1
# RHEL/Fedora
sudo dnf install libXScrnSaver
Q: 如何在 Wayland 环境下使用?
目前不支持纯 Wayland。需要切换到 X11 会话。
方法1:登录时选择 X11 会话
- 在登录界面点击用户名后,右下角会出现齿轮图标 ⚙️
- 点击齿轮,选择 "Ubuntu on Xorg" 或 "GNOME on Xorg"
方法2:强制禁用 Wayland(推荐)
如果找不到齿轮图标,可以修改 GDM 配置强制使用 X11:
sudo nano /etc/gdm3/custom.conf
在 [daemon] 部分添加:
[daemon]
WaylandEnable=false
保存后重启系统:
sudo reboot
这样系统将始终使用 X11,无需每次手动选择。
KDE 桌面环境:
- 登录界面选择 "Plasma (X11)"
- 或编辑
/etc/sddm.conf设置默认会话
Q: 如何检查当前会话类型?
# 查看会话类型
echo $XDG_SESSION_TYPE
# 查看显示服务器信息
loginctl show-session $(loginctl | grep $(whoami) | awk '{print $1}') -p Type
配置文件
配置文件位于 ~/.config/ghost/config.ini,存储以下信息:
- 首次安装时间
- 公网 IP 缓存
- 地理位置缓存
技术细节
屏幕捕获流程
- 使用
XCopyArea将 root window 拷贝到离屏 Pixmap - 使用
XGetImage从 Pixmap 获取图像数据 - 转换为 BGRA 格式并翻转行序 (BMP 格式要求)
- 计算帧差异,仅传输变化区域
输入模拟
使用 XTest 扩展 (libXtst) 实现:
XTestFakeMotionEvent- 鼠标移动XTestFakeButtonEvent- 鼠标点击XTestFakeKeyEvent- 键盘输入
为何不支持 Wayland?
Wayland 出于安全考虑,禁止应用程序:
- 捕获其他应用的屏幕内容
- 模拟全局输入事件
这些限制使得传统远程桌面方案无法在纯 Wayland 下工作。