termux/termux-x11

GitHub: termux/termux-x11

Termux:X11 是一个专为 Android 优化的完整 X11 服务器,让移动设备能够运行 Linux 图形化应用和桌面环境。

Stars: 3590 | Forks: 498

# Termux:X11 [![Nightly build](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/706e745e17181130.svg)](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml) [![Join the chat at https://gitter.im/termux/termux](https://badges.gitter.im/termux/termux.svg)](https://gitter.im/termux/termux) [![Join the Termux discord server](https://img.shields.io/discord/641256914684084234?label=&logo=discord&logoColor=ffffff&color=5865F2)](https://discord.gg/HXpF69X) 一个 [Termux](https://termux.com) X11 服务器附加应用。 ## 关于 Termux:X11 是一个功能齐全的 X 服务器。它使用 Android NDK 构建并经过优化,适合与 Termux 配合使用。 ## 子模块注意事项 此仓库使用了子模块。请使用 ``` git clone --recurse-submodules https://github.com/termux/termux-x11 ``` 或 ``` git clone https://github.com/termux/termux-x11 cd termux-x11 git submodule update --init --recursive ``` ## 它是如何工作的? 就像其他任何 X 服务器一样。 ## 安装说明 Termux:X11 需要 Android 8 或更高版本。它由一个 Android 应用和一个配套的 termux 软件包组成,您必须同时安装这两者。 Android 应用可通过本仓库的 [nightly release tag](https://github.com/termux/termux-x11/releases/tag/nightly) 获取。下载并安装与您的设备 CPU 架构匹配的 `app-$ARCHITECTURE-debug.apk`。(如果您不确定选择哪个架构,可以选择 `app-universal-debug.apk`,它会占用稍多几 MB 的存储空间。) 配套的 termux 软件包可从 termux 图形仓库获取。您可以通过运行 `pkg i x11-repo && pkg i termux-x11-nightly` 来确保其已启用并安装此软件包。如果需要,您也可以从上文提到的同一个 nightly release tag 处下载 `.deb` 或 `*.tar.xz` 文件。 最后,大多数人会希望在 Termux:X11 中使用桌面环境。如果您不知道这意味着什么,或者不知道该选哪个,请运行 `pkg i xfce`(同样来自 `x11-repo`)来安装一个不错的入门环境。接下来的说明将假设您的目标是运行 XFCE 桌面,或者您能够在跟随操作时根据实际目标修改指令。 ## 运行图形应用程序 您可以通过以下方式启动所需的图形应用程序: ``` termux-x11 :1 -xstartup "dbus-launch --exit-with-session xfce4-session" ``` 或 ``` termux-x11 :1 & env DISPLAY=:1 dbus-launch --exit-with-session xfce4-session ``` 如果您使用的不是 Xfce,可以替换 `xfce4-session` `dbus-launch` 对某些用户不起作用,因此您可以使用以下命令启动会话 ``` termux-x11 :1 -xstartup "xfce4-session" ``` 您也可以这样做 ``` export TERMUX_X11_XSTARTUP="xfce4-session" termux-x11 :1 ``` 在这种情况下,您可以将 TERMUX_X11_XSTARTUP 保存到 `.bashrc` 或其他脚本中的某处,而不必在每次调用 termux-x11 时都输入它。 如果您使用完 Termux:X11,只需展开 Termux:X11 的通知,然后点击“Exit”通过其通知抽屉退出即可。 但您应注意 `termux-x11` 命令仍在运行,并且无法通过这种方式终止。 出于某些原因,某些设备仅输出带有光标的黑屏而不是正常输出,因此您应该传递 `-legacy-drawing` 选项。 ``` termux-x11 :1 -legacy-drawing -xstartup "xfce4-session" ``` 出于某些原因,某些设备显示的屏幕颜色交换了,在这种情况下您应该传递 `-force-bgra` 选项。 ``` termux-x11 :1 -force-bgra -xstartup "xfce4-session" ``` ## 在 proot 环境中使用 如果您计划在 proot 中使用该程序,请记住您需要使用 --shared-tmp 选项启动 proot/proot-distro。 如果无法传递此选项,请将 TMPDIR 环境变量设置为指向目标容器中对应于 /tmp 的目录。 如果您正在使用 proot-distro,您应该知道可以从 proot 容器内部启动 `termux-x11` 命令。 ## 在 chroot 环境中使用 如果您计划将程序与 chroot 或 unshare 一起使用,您必须以 root 身份运行它,并将 TMPDIR 环境变量设置为指向目标容器中对应于 /tmp 的目录。 该目录必须可以从您启动 termux-x11 的 shell 访问,即它必须处于相同的 SELinux 上下文、相同的挂载命名空间等。 此外,您必须将 `XKB_CONFIG_ROOT` 环境变量指向容器的 `/usr/share/X11/xkb` 目录,否则您将遇到与 `xkbcomp` 相关的错误。 您可以从 [last successful build](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml) 的构件中获取 nightly 版本的加载器。 不要忘记禁用 SELinux ``` setenforce 0 export TMPDIR=/path/to/chroot/container/tmp export CLASSPATH=$(/system/bin/pm path com.termux.x11 | cut -d: -f2) /system/bin/app_process / --nice-name=termux-x11 com.termux.x11.CmdEntryPoint :0 ``` ### 强制停止 X 服务器(在 termux 后台运行,而非 activity) termux-x11 的 X 服务器运行在名为 "termux-x11" 的进程中。您可以通过以下方式终止它 ``` pkill termux-x11 ``` ### 关闭 Android activity(在前台运行,而非 X 服务器) ``` am broadcast -a com.termux.x11.ACTION_STOP -p com.termux.x11 ``` ### 日志 如果您需要从 `com.termux.x11` 应用程序获取日志, 请将 `TERMUX_X11_DEBUG` 环境变量设置为 1,如下所示: `TERMUX_X11_DEBUG=1 termux-x11 :0` 以这种方式获取的日志可能会相当长。 最好立即将命令的输出重定向到文件。 ### 通知 在 Android 13 中,发布通知受到限制,因此您应该明确允许 Termux:X11 向您显示通知。
视频 [img_enable-notifications.webm](https://user-images.githubusercontent.com/9674930/227760411-11d440eb-90b8-451e-9024-d5a194d10b16.webm)
首选项: 您可以通过三种方式访问首选项菜单:
当没有客户端连接时,点击主屏幕上的“PREFERENCES”按钮。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e62675ee81181131.jpg)
点击通知中的“Preferences”按钮(如果可用)。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b501279d1c181132.jpg)
点击“Preferences”应用快捷方式(在启动器中长按 `Termux:X11` 图标)。 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2485638c2a181133.jpg)
## 切换键盘 只需按下“Back”按钮。 ## 触摸手势 ### 触控板模拟模式 在触控板模拟模式下,您可以使用以下手势: * 单击以点击 * 双击以双击 * 双指点击以右键点击 * 三指点击以中键点击 * 双指垂直滑动以垂直滚动 * 双指水平滑动以水平滚动 * 三指向下滑动以显示/隐藏附加按键栏。 ### 模拟触摸屏模式 在模拟触摸屏模式下,您可以使用以下手势: * 单击以左键点击。 * 长按以按住鼠标。 * 双击以双击 * 双指点击以右键点击 * 三指点击以中键点击 * 双指垂直滑动以垂直滚动 * 双指水平滑动以水平滚动 * 三指向下滑动以显示/隐藏附加按键栏。 ## 字体或缩放太大! 某些应用程序可能存在与 X 服务器 DPI 相关的问题。请参阅 https://wiki.archlinux.org/title/HiDPI 了解如何覆盖特定于应用程序的 DPI 或缩放。 您可以在窗口管理器设置中修复此问题(对于 xfce4 和 lxqt,通过应用程序菜单 > 设置 > 外观)。查找 DPI 值,如果它被禁用则启用它,并调整其值直到字体大小合适。
截图 ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/79759b99fc181134.png)
您也可以使用 `-dpi` 选项启动 `termux-x11`。 ``` termux-x11 :1 -xstartup "xfce4-session" -dpi 120 ``` ## 从命令行更改、导出和恢复首选项 可以从命令行更改 termux-x11 的首选项。 `termux-x11-nightly` 软件包包含 `termux-x11-preference` 工具,其用法如下 ``` termux-x11-preference [list] {key:value} [{key2:value2}]..." ``` 使用 `termux-x11-preference list` 导出当前首选项。 使用 `termux-x11-preference list > file` 将当前首选项导出到文件。 使用 `termux-x11-preference < file` 从文件恢复首选项。 使用 `termux-x11-preference "fullscreen"="false" "showAdditionalKbd"="true"` 禁用全屏并启用附加按键栏。您可以使用 `termux-x11-preference list` 命令查看可修改的完整首选项列表。您可以在此处指定一个或多个首选项。 Termux:X11 activity 必须在后台或前台可用,否则 `termux-x11-preference` 工具将无限期挂起。 如果启用了 `Store preferences for secondary displays separately` 首选项,`termux-x11-preference` 将使用/修改当前打开 Termux:X11 activity 的显示器的首选项。 ## 与第三方应用配合使用 Termux:X11 可以与第三方应用配合使用。 查看 `shell-loader/src/main/java/com/termux/x11/Loader.java` 的工作原理。 # 许可证 根据 [GPLv3 license](https://www.gnu.org/licenses/gpl-3.0.html) 发布。
标签:Android NDK, GUI, JS文件枚举, Linux环境, Termux, UML, X11服务器, XFCE, X Window System, 二进制发布, 图形界面, 安卓, 客户端加密, 客户端加密, 客户端加密, 开源工具, 本地显示, 移动开发, 系统工具, 虚拟化, 远程桌面