📚 Termux 无 Root 学习开发系列
阶段一:环境搭建与终端基础 ✅ 已完成
01-05 Termux 安装 → 包管理 → 文件管理 → Vim/tmux
阶段二:编程开发环境 ✅ 已完成
06-09 Python → C/C++ → Node.js → Git
阶段三:网络与远程操作 ✅ 已完成
10-12 SSH → 网络工具 → 网络代理
阶段四:Termux:API 与自动化 ✅ 已完成
13-14 Termux:API → 定时任务与自动化
阶段五:proot-distro 完整 Linux
15 proot-distro:在手机上运行完整 Linux ✓
16 Jupyter Notebook 与数据科学环境 ✓
17 桌面环境与 VNC 远程(当前篇)
阶段六至九共 11 篇,后续持续更新

前两篇文章,我们通过命令行和 Jupyter Notebook 在手机上体验了 Linux 的强大。但如果你习惯了图形化界面,命令行多少有些门槛。这一篇,我们将在 proot Ubuntu 中安装完整的图形化桌面环境,通过 VNC 远程连接,让你的手机直接显示 Linux 桌面——窗口、图标、文件管理器、浏览器,一应俱全。

📋 目录
一、为什么要在手机上跑图形桌面?
二、桌面环境选择:XFCE vs LXDE vs Openbox
三、安装 XFCE 桌面环境
四、TigerVNC 服务器配置
五、手机端 VNC Viewer 连接与操作
六、桌面应用体验:从文件管理到浏览器
七、性能优化:让桌面更流畅
八、进阶:局域网远程访问与安全

一、为什么要在手机上跑图形桌面?

你可能会问:手机屏幕这么小,跑 Linux 桌面有什么实际意义?答案是:意义远比你想象的大。

首先,图形化文件管理远比命令行直观。拖拽复制、批量重命名、预览图片——这些在终端里需要敲好几条命令的操作,在图形界面里点几下就完成了。尤其是管理手机里的照片、文档时,Thunar 文件管理器的体验远胜命令行。

其次,大量 Linux 应用只有 GUI 版本。你想在手机上用 VS Code 写代码?用 GIMP 修图?用 Firefox 浏览器调试网页?这些都需要图形环境的支持。proot + VNC 的组合,让这些应用在手机上运行成为可能。

第三,远程桌面是生产力利器。手机上跑 VNC 服务端,电脑连接过去——等于随身携带了一台完整的 Linux 开发机。出差在外,随时掏出笔记本连回家中的手机,接着写代码、处理文档,无缝衔接。

📌 技术原理速览
proot:提供隔离的 Linux 文件系统和运行环境,桌面程序在其中正常运行
Xfce:轻量级桌面环境,负责渲染窗口、面板、图标等图形界面
TigerVNC:VNC 服务器,将 Xfce 的画面通过 VNC 协议传输到客户端显示,并回传鼠标键盘操作

整个架构可以这样理解:proot 是地基,Xfce 是房子,TigerVNC 是监控摄像头——你通过摄像头看到房子里的一切,也能通过摄像头遥控里面的操作。

二、桌面环境选择:XFCE vs LXDE vs Openbox

Linux 世界有几十种桌面环境可选,但在手机这种资源受限的设备上,轻量是第一要务。以下三种是最适合的选择。

桌面环境 内存占用 安装体积 完整度 推荐指数
Xfce 4.20 ~250 MB ~800 MB ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
LXDE / LXQt ~120 MB ~400 MB ⭐⭐⭐ ⭐⭐⭐⭐
Openbox + tint2 ~60 MB ~150 MB ⭐⭐ ⭐⭐⭐

Xfce 4.20是综合最佳选择。它的内存占用只有 250MB 左右(远比 GNOME 50 的 1GB+ 轻巧),同时提供了完整的桌面体验——面板、系统托盘、文件管理器、设置中心应有尽有。Xfce 4.20 是 2025 年底发布的大版本,新增了实验性 Wayland 支持和改进的显示设置,界面也更加现代化。

LXQt是极致轻量的选择,内存占用仅 120MB,但功能也更基础。适合手机配置较低、追求极致性能的用户。

Openbox是窗口管理器而非完整桌面,需要自己搭配面板(tint2)、文件管理器等组件。自由度最高,但配置也最复杂,适合高级玩家。

💡 推荐方案
本文以 Xfce 4.20 + TigerVNC 1.16 为标准配置进行讲解。如果你手机内存在 4GB 以下,可以考虑 LXQt 替代。

三、安装 XFCE 桌面环境

安装过程在 proot Ubuntu 容器内进行。如果你还没有 Ubuntu 容器,请先参考第 15 篇完成安装。

3.1 进入 Ubuntu 并安装 Xfce

Bash
1
2
3
4
5
6
7
# 进入 Ubuntu 容器
pd sh ubuntu
# 更新系统
apt update &&& apt upgrade -y
# 安装 Xfce 桌面 + 终端 + 中文字体
apt install -y xfce4 xfce4-terminal \
  fonts-noto-cjk dbus-x11

安装过程大约需要 10-15 分钟,会下载约 800MB 的包。Xfce 4.20 在 Ubuntu 26.04 仓库中是默认版本,直接安装即可。

⚠️ 注意
不要安装完整的 xubuntu-desktop 包,它会附带大量不必要的应用(办公套件、游戏等),占用空间高达 2GB+。用 xfce4 核心包即可。

3.2 安装常用桌面应用

Bash
# 文件管理器 + 图片查看器 + 文本编辑器
apt install -y thunar ristretto mousepad geany
# Firefox 浏览器(ARM64 版)
apt install -y firefox
# 截图工具 + 系统监视器
apt install -y xfce4-screenshooter xfce4-taskmanager

四、TigerVNC 服务器配置

Xfce 安装完成后,它还不能直接显示在手机屏幕上。我们需要一个 VNC 服务器来"捕捉"桌面画面,并通过网络传给 VNC 客户端显示。TigerVNC 是性能最好、最稳定的开源 VNC 实现。

4.1 安装 TigerVNC

Bash
# 安装 TigerVNC 服务器
apt install -y tigervnc-standalone-server
# 验证版本(应为 1.16.x)
vncserver -version

TigerVNC 1.16 是 2026 年的最新稳定版,新增了 w0vncserver 用于 Wayland 桌面共享,以及改进的键盘快捷键系统。不过在 proot 环境下,我们使用传统的 X11 + Xvnc 模式,兼容性最好。

4.2 设置 VNC 密码

Bash
1
2
3
4
# 设置 VNC 连接密码
vncpasswd
# 输入两次密码(密码长度 6-8 位)
# 提示是否设置 view-only 密码:选 n

密码会加密保存在 ~/.vnc/passwd 文件中。VNC 密码限制最多 8 位,超过部分会被截断。

4.3 配置 xstartup 启动脚本

VNC 启动时会执行 ~/.vnc/xstartup 脚本,我们需要在里面启动 Xfce 桌面。

Bash
1
2
3
4
5
6
7
8
# 创建 xstartup 脚本
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
export GTK_IM_MODULE=xim
startxfce4 &
EOF
Bash
# 添加执行权限
chmod +x ~/.vnc/xstartup
# 验证脚本内容
cat ~/.vnc/xstartup

4.4 启动 VNC 服务器

Bash
1
2
3
4
5
6
# 启动 VNC 服务器,显示号 :1,端口 5901
vncserver :1 -geometry 1280x720 -depth 24
# 查看运行状态
vncserver -list
# 停止 VNC 服务器
vncserver -kill :1

参数说明:

:1 — 显示号,对应端口 5901(显示号+5900)
-geometry 1280x720 — 桌面分辨率,手机推荐 720p,更清晰可用 1080p
-depth 24 — 色深,24 位真彩色,手机性能足够
-localhost — 仅允许本机连接(手机本地使用时推荐,更安全)

五、手机端 VNC Viewer 连接与操作

VNC 服务器启动后,我们需要在手机上安装一个 VNC 客户端 App 来连接并显示桌面。Android 平台上有多个选择。

5.1 推荐 VNC 客户端 App

App 名称 特点 费用 推荐
RealVNC Viewer 官方出品,稳定,支持加密 免费 ⭐⭐⭐⭐⭐
bVNC Pro 开源,功能丰富,支持多连接 免费/Pro版 ⭐⭐⭐⭐
VNC Viewer (TigerVNC) 与服务端同系列,兼容性最好 免费 ⭐⭐⭐⭐

推荐从 F-Droid 或 Google Play 安装 RealVNC Viewer,它是最稳定的选择,且完全免费。

5.2 建立连接

确保 VNC 服务器正在运行(用 vncserver -list 检查),然后在 VNC Viewer App 中添加连接:

连接设置
# 地址:
127.0.0.1:5901   (本机回环地址)
# 名称:
Ubuntu Xfce   (自定义,方便识别)
# 密码:
(之前用 vncpasswd 设置的密码)

连接成功后,你就能看到 Xfce 桌面了。第一次启动时,Xfce 会弹出欢迎向导,选择"使用默认配置"即可。

5.3 触屏操作技巧

在手机小屏幕上操作桌面环境,需要掌握一些触屏操作技巧:

📱 触屏操作指南
单击:单指轻点屏幕 = 鼠标左键单击
双击:快速双击 = 鼠标左键双击(打开文件/文件夹)
右键:长按屏幕 = 鼠标右键点击(弹出菜单)
拖拽:双指长按并移动 = 拖拽操作(移动窗口、选择文字)
滚动:双指上下滑动 = 鼠标滚轮
缩放:双指捏合/张开 = 缩放桌面画面
键盘:点击 App 工具栏的键盘图标调出虚拟键盘
全键盘:推荐安装 Hacker's Keyboard,带完整功能键和方向键
💡 小贴士
如果觉得屏幕太小看不清,可以在 VNC Viewer 设置中开启"适配屏幕"模式,让桌面自动缩放到屏幕宽度。也可以设置更高的分辨率(如 1920x1080),通过缩放来获得更精细的显示效果。

六、桌面应用体验:从文件管理到浏览器

Xfce 桌面就绪后,我们来体验几个最常用的桌面应用,看看它们在手机上的实际表现如何。

6.1 Thunar 文件管理器

Thunar 是 Xfce 默认的文件管理器,轻量快速。在桌面环境下管理文件,比命令行直观得多。手机的共享存储(/sdcard)可以直接在文件管理器中访问,实现手机文件与 Linux 环境的无缝互传。

Bash
# 在 Thunar 中访问手机存储
# 方法一:在地址栏输入 /sdcard
# 方法二:创建快捷方式到左侧边栏
ln -s /sdcard ~/手机存储

6.2 Firefox 浏览器

在 Linux 桌面中运行 Firefox 最大的好处是可以使用完整的桌面版扩展——uBlock Origin、Tampermonkey、开发者工具等,这些在手机版 Firefox 中往往受限。

Bash
# 启动 Firefox
firefox &
# 或者从桌面菜单:应用程序 → 网络 → Firefox
⚠️ 性能提示
Firefox 在 VNC 下的渲染性能一般,因为每帧画面都要通过 VNC 传输。建议关闭硬件加速(about:config 中设置 layers.acceleration.disabled = true),并降低 VNC 色深到 16 位以提升流畅度。

6.3 VS Code / Geany 代码编辑器

如果你需要一个图形化的代码编辑器,Geany 是轻量之选,而 VS Code 则提供了最完整的开发体验。VS Code 有官方 ARM64 版本,可以在 proot Ubuntu 中原生运行。

Bash
1
2
3
4
5
6
# 轻量选择:Geany
apt install -y geany
# 完整 IDE:VS Code(需手动下载 arm64 .deb)
wget https://code.visualstudio.com/sha/download\?build=stable\&os=linux-deb-arm64 -O code.deb
apt install -y ./code.deb
# 启动
code --no-sandbox &

VS Code 在手机上运行是一个很神奇的体验——完整的语法高亮、智能补全、Git 集成、扩展市场,应有尽有。当然,性能比电脑上要差一些,大项目加载会比较慢,但处理中等规模的代码完全够用。

七、性能优化:让桌面更流畅

手机的 CPU 和内存资源毕竟有限,通过一些优化手段,可以显著提升 VNC 桌面的流畅度。

7.1 VNC 参数优化

Bash
1
2
3
4
5
6
# 低延迟优化启动参数
vncserver :1 \
  -geometry 1024x600 \
  -depth 16 \
  -alwaysshared \
  -localhost
⚡ 性能优化清单
降低分辨率:从 1280x720 降到 1024x600,画面数据量减少 33%
降低色深:24 位 → 16 位,带宽需求减半,肉眼几乎看不出差异
关闭窗口合成器:Xfce 设置 → 窗口管理器微调 → 合成器 → 取消勾选
使用轻量主题:选择 Greybird 或 Adwaita-dark,避免复杂主题的渲染开销
减少开机自启:设置 → 会话和启动 → 应用程序自启动,只保留必要项
关闭桌面图标:桌面右键 → 桌面设置 → 图标 → 取消"显示图标"
VNC 客户端设置:画质设为"中"或"低",开启"自动画质"

7.2 内存优化

Bash
# 查看内存占用
free -h
# 清理 apt 缓存释放空间
apt clean
# 关闭不需要的后台服务
systemctl disable --now bluetooth cups avahi-daemon
💡 小贴士
proot 环境下无法使用 systemctl(因为没有真正的 init 进程)。如果需要管理服务,直接用 service 命令或直接 kill 进程即可。

八、进阶:局域网远程访问与安全

8.1 从电脑访问手机上的 Linux 桌面

VNC 最大的优势之一是远程访问。只要手机和电脑在同一局域网内,你就可以在电脑上用 VNC 客户端连接手机上的 Linux 桌面,获得大屏体验。

Bash
1
2
3
4
5
# 在 Termux 中查看手机 IP 地址
ifconfig wlan0 | grep inet
# 输出示例:inet 192.168.1.100
# 确保 VNC 监听所有网络接口(不加 -localhost)
vncserver :1 -geometry 1280x720

然后在电脑上打开 VNC Viewer,输入 192.168.1.100:5901(替换为你的手机 IP),输入密码即可连接。

8.2 通过 SSH 隧道加密 VNC

原生 VNC 协议不加密,在公共网络上使用有安全风险。通过 SSH 隧道转发 VNC 端口,可以获得端到端加密。

Bash
1
2
3
4
5
# 第一步:让 VNC 仅监听本机
vncserver :1 -geometry 1280x720 -localhost
# 第二步:在电脑上建立 SSH 隧道
ssh -L 5901:localhost:5901 -p 8022 user@手机IP
# 第三步:电脑 VNC 客户端连接 localhost:5901

这样 VNC 流量全部通过 SSH 加密隧道传输,即使在公共 WiFi 下也安全可靠。关于 SSH 服务器的配置,请参考第 10 篇文章。

8.3 开机自启配置

如果希望每次进入 Ubuntu 容器时 VNC 自动启动,可以写一个启动脚本:

Bash
1
2
3
4
5
6
# 创建启动脚本
cat > ~/start-desktop.sh << 'EOF'
#!/bin/bash
vncserver -kill :1 2>/dev/null
vncserver :1 -geometry 1280x720 -depth 24 -localhost
echo "VNC 已启动,端口 5901"
EOF
Bash
chmod +x ~/start-desktop.sh
# Termux 端一键启动桌面
pd sh ubuntu /root/start-desktop.sh

动手练习

🟢 基础练习
1. 安装 Xfce 桌面环境和 TigerVNC 服务器,成功启动 VNC 服务
2. 在手机上安装 VNC Viewer App,成功连接并看到 Xfce 桌面
3. 在桌面中打开 xfce4-terminal 和 Thunar 文件管理器,尝试访问 /sdcard
🟡 进阶练习
1. 安装 Firefox 和 Geany,在桌面环境中使用浏览器和代码编辑器
2. 优化 VNC 性能:降低分辨率/色深、关闭合成器,对比优化前后的流畅度
3. 配置 xstartup 脚本,实现启动 VNC 时自动打开终端和文件管理器
🔴 高级练习
1. 搭建 SSH 隧道加密 VNC 连接,从电脑端通过 SSH 访问手机上的 Linux 桌面
2. 安装 VS Code ARM64 版,配置扩展并实际编写运行一段代码
3. 编写启动脚本,配合 Termux 定时任务实现 VNC 服务定时启停

知识回顾

Xfce 4.20 桌面 TigerVNC 1.16 xstartup 配置 VNC Viewer 触屏操作 Thunar 文件管理 Firefox ARM64 VS Code ARM64 SSH 隧道加密 性能优化
🎉 阶段五完成
proot-distro 完整 Linux · 3 篇全部完成
恭喜!你已经完成了阶段五的全部 3 篇学习:从安装 proot-distro,到搭建 Jupyter 数据科学环境,再到运行完整的图形化桌面。现在你的手机已经是一台功能完备的 Linux 工作站了。下一阶段我们将进入 AI 与 AIGC 实战,探索在手机上运行大模型的可能。
下一篇预告 · 阶段六:AI 与 AIGC 实战
18 AI 大模型本地部署
想让 AI 在你的手机上运行吗?下一篇将介绍如何在 proot Linux 环境中部署轻量级大语言模型,实现离线 AI 对话、文本生成和代码补全。