# X11 in termux
祝您在termux中运行桌面环境  
生产力的提升就在此处
![gnome-shell --x11](../_img/termux/gnome-shell.png)
*Debian (Proot) + Gnome-shell + termux-x11*
![tde](../_img/termux/tde.png)
*Debian (Proot)+Trinity Desktop \[Dev]*
## 选择容器运行还是termux本体？
推荐选择容器。在termux中运行速度会快很多，但难免会发现经常杀后台等问题，可用软件少的可怜，且无法保证桌面和软件的兼容性。容器虽然运行速度慢（除非你是chroot或者你的CPU是跟骁龙8gen3差不多），但提升了软件防杀的稳定性（至少在我这台oppoa5就是这样），以及你还可以在上面运行各种各样的软件。  
如果你需要容器，建议先查看 proot-distro 和 容器初始化 这两个章节。
## 选择显示方案
由于termux本身没有自带可输出图像的功能，所以需要你选择怎么显示图像画面。  
目前有两类显示方案，一种借助 VNC 服务，另一种则借助 termux-x11。推荐您选择后者，因为 VNC 服务无法进行很好的图形加速效果（在看视频方面，烂机子的GPU无法带动720p+的画质加速），且如果配置不当，很有可能会将 VNC 服务公开到局域网，这时任何人都能连你的 VNC 服务。
## 运行环境安装
### termux本体
无需任何操作
### proot-distro
```bash
pkg install proot-distro
pd i ubuntu
# 进入ubuntu容器
pd sh ubuntu
```
更多详细内容请参考 proot-distro
## 桌面环境安装
接下来安装对应的桌面环境
### termux本体
需要先启用`x11-repo`  
```bash
# 启用 x11-repo
pkg install x11-repo
```
接下来你需要选择对应的桌面。由于兼容性问题，目前可用的桌面环境如下：
| 桌面环境 | 描述 | 安装 | 启动 | 截图 |
| --- | --- | --- | --- | --- |
| xfce4 | termux兼容性目前较好的轻量桌面环境 | `pkg install xfce4` | `xfce4-session` | ![来自termux wiki](https://wiki.termux.com/wiki/File:Termux_XFCE.png) |
| lxqt | lxde桌面环境下的另一个使用qt构建的桌面环境 |`pkg install lxqt` | `startlxqt` | 没找到 |
| mate | gnome桌面环境下的分支，gnome2的延续 | `pkg install marco mate-*` | `mate-session` | 没找到 |
  
注意：你可能需要自行手动安装一些x11的必要工具！（`pkg install dbus-x11`）
安装时使用上表的安装这一列里的代码安装即可，例如我要装xfce4
```bash
pkg install xfce4
```
等待安装完成即可  
安装完成后建议先去查看 启动 这一小节，否则出问题又别找我
### 容器
使用 `pd sh <alias>` 进入容器后便可以进行安装了  
容器由于软件丰富，所以有如下选择（只列出部分）：
| 桌面环境 | 描述 | 安装 | 启动 | 截图 |
| --- | --- | --- | --- | --- |
| xfce4 | termux兼容性目前较好的轻量桌面环境 | `apt install xfce4` | `xfce4-session` | ![来自termux wiki](https://wiki.termux.com/wiki/File:Termux_XFCE.png) |
| kde-plasma | 拉满炫酷的桌面环境（要你两个G，而且内置的kwin5.22.8及之后版本不能吃termux-x11加速） | `apt install plasma-desktop` | `startplasma-x11` | 无 |
| lxde | 目前最轻量的桌面环境 | `apt install lxde` | `lxde-session` | 无 |
| lxqt | lxde桌面环境下的另一个使用qt构建的桌面环境 |`apt install lxqt` | `startlxqt` | 无 |
| gnome | 网络对象模型环境，主打简洁美观（ubuntu默认，好像兼容性较差） | `apt install ubuntu-desktop-minimal` | `gnome-shell --x11` | 无 |
| mate | gnome桌面环境下的分支，gnome2的延续 | `apt install marco mate-*` | `mate-session` | 无 |
  
注意：你可能需要自行手动安装一些x11的必要工具！（`pkg install dbus-x11`）  
安装完成后建议先去查看 启动 这一小节，否则出问题又别找我
## 启动
安装完成后，接下来便要启动桌面环境了
### 准备
#### For VNC
使用 VNC 连接的你需要一个VNC客户端，此处以 AVNC 为例子展示  
仓库地址：[https://github.com/gujjwal00/avnc](https://github.com/gujjwal00/avnc) ![GitHub Repo stars](https://img.shields.io/github/stars/gujjwal00/avnc)  
接着参考下方的方案来启动桌面环境，启动完成后根据下方流程操作：  
![AVNC 流程](../_img/termux/avnc.jpg)  
#### For Termux-x11
用termux-x11的可以直接下载安装，无需后续配置流程  
仓库地址：[https://github.com/termux/termux-x11]([https://github.com/termux/termux-x11]) ![GitHub Repo stars](https://img.shields.io/github/stars/termux/termux-x11)  
下载可以转到termux-x11仓库里面的Action/build中下载最新构建的apk包（可能需要魔法）  
或者去这里下载：[https://pan.huang1111.cn/s/m78eS1?path=%2F%E5%AE%89%E5%8D%93APK%2Ftermux-x11](https://pan.huang1111.cn/s/m78eS1?path=%2F%E5%AE%89%E5%8D%93APK%2Ftermux-x11)
### termux本体 + VNC服务
准备vnc服务端：
```bash
# 安装
pkg install tigervncserver
# 设置密码
vncserver -localhost && vncserver -kill 0

# 配置方面：
vim ~/.vnc/xstartup
# 在 ~/.vnc/xstartup 里面添加桌面环境的启动命令
# 可参考上方桌面环境安装
# 例如用的是xfce4，那就添加 xfce4-session，然后保存退出

# 启动
vncserver :1
# 后面的 1 是屏幕序号，屏幕序号可以自行修改，但实际在连接时需要端口号，每一个屏幕序号所对应的端口号为 5900+<屏幕序号>，例如这里是1，那么端口号就是5901
# 列出所有服务器
vncserver -list
# 杀死对应序号的服务器
vncserver :<屏幕序号>
```
### termux本体 + termux-x11
```bash
# 安装 termux-x11 服务
pkg install termux-x11-nightly
# 启动 termux-x11
termux-x11 &
# 烂手机（例如战神A5）启动 termux-x11 服务需要再带一个 --legacy-drawer 的参数
termux-x11 --legacy-drawer &
# 启动对应的桌面环境
env DISPLAY=:0 <对应桌面环境启动命令>
# 例如 xfce4
env DISPLAY=:0 xfce4-session
```
### 容器 + termux-x11
```bash
# 安装 termux-x11 服务
pkg install termux-x11-nightly
# 启动 termux-x11
termux-x11 &
# 烂手机（例如战神A5）启动 termux-x11 服务需要再带一个 --legacy-drawer 的参数
termux-x11 --legacy-drawer &
# 启动容器（ubuntu-jammy 22.04）并共享tmp
pd sh ubuntu-oldlts --shared-tmp

# =============容器内===============
# 启动对应的桌面环境
env DISPLAY=:0 <对应桌面环境启动命令>
# 例如 xfce4
env DISPLAY=:0 xfce4-session
```