# termux-x11 **Repository Path**: nmrs/termux-x11 ## Basic Information - **Project Name**: termux-x11 - **Description**: Termux X11附加应用程序。 Termux X11 add-on application. - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: https://github.com/termux/termux-x11 - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-08 - **Last Updated**: 2025-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Termux:X11 [![Nightly build](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml/badge.svg?branch=master)](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 使用进行了优化。 ## Submodules 警告 此仓库使用了子模块。使用 ``` ~ $ 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` 确保启用它并安装此软件包。如果需要,您也可以从上述相同的夜间发布标签下载 `.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 ``` 在这种情况下,您可以在 `.bashrc` 或其他脚本中保存 TERMUX_X11_XSTARTUP,每次调用 termux-x11 时不必输入。 如果您完成使用 Termux:X11,只需通过展开 Termux:X11 通知然后 "退出" 来简单地退出它。 但您应该注意 `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` 相关的错误。 您可以从 [上一次成功构建](https://github.com/termux/termux-x11/actions/workflows/debug_build.yml) 的工件中获取夜间构建的加载器。 不要忘记禁用 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 / com.termux.x11.CmdEntryPoint :0 ``` ### 强制停止 X 服务器(在 termux 后台运行,不是活动) termux-x11 的 X 服务器在名为 "app_process" 的进程中运行,而不是 "termux-x11"。但您可以通过命令行搜索 "com.termux.x11" 来杀死它。 所以杀死它看起来像 ``` pkill -f com.termux.x11 ``` ### 关闭 Android 活动(在前台运行,不是 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](./.github/static/1.jpg)
如果可用,在通知中单击 "Preferences" 按钮。 ![image](./.github/static/2.jpg)
通过单击 "Preferences" 应用程序快捷方式(在启动器上长按 `Termux:X11` 图标)。 ![image](./.github/static/3.jpg)
## 切换键盘 只需按 "Back" 按钮。 ## 触摸手势 ### 触摸板仿真模式。 在触摸板仿真模式下,您可以使用以下手势: * 点击为单击 * 双击为双击 * 两根手指点击为右键单击 * 三根手指点击为中键单击 * 两根手指垂直滑动为垂直滚动 * 两根手指水平滑动为水平滚动 * 三根手指向下滑动显示/隐藏附加键栏。 ### 模拟触摸屏模式。 在模拟触摸屏模式下,您可以使用以下手势: * 单击为左键单击。 * 长按为鼠标按住。 * 双击为双击 * 两根手指点击为右键单击 * 三根手指点击为中键单击 * 两根手指垂直滑动为垂直滚动 * 两根手指水平滑动为水平滚动 * 三根手指向下滑动显示/隐藏附加键栏。 ## 字体或缩放太大! 一些应用程序可能在 DPI 方面与 X 服务器存在问题。请参见 https://wiki.archlinux.org/title/HiDPI 了解如何覆盖特定应用程序的 DPI 或缩放。 您可以在窗口管理器设置中修复此问题(在 xfce4 和 lxqt 的情况下,通过应用程序菜单 > 设置 > 外观)。查找 DPI 值,如果它被禁用,请启用它并调整其值,直到字体大小合适。
屏幕截图 ./.github/static/dpi-scale.png
同时您可以使用 -dpi 选项启动 termux-x11 。 ``` ~ $ termux-x11 :1 -xstartup "xfce4-session" -dpi 120 ``` ## 从命令行更改、转储和恢复首选项 您可以从命令行更改 termux-x11 的首选项。 termux-x11-nightly 软件包包含 termux-x11-preference 工具,可以使用 ```shell termux-x11-preference [list] {key:value} [{key2:value2}]..." ``` 使用 termux-x11-preference 转储当前首选项。 使用 termux-x11-preference > file 将当前首选项转储到文件。 使用 termux-x11-preferences < file 从文件恢复首选项。 使用 termux-x11-preferences "fullscreen"="false" "showAdditionalKbd"="true" 禁用全屏并启用附加键栏。您可以使用 termux-x11-preference list 命令查看可以修改的完整首选项列表。您可以在这里指定一个或多个首选项。 Termux:X11 活动应该在后台或前台可用,否则 termux-x11-preferences 工具将无限期挂起。 如果存在 Store preferences for secondary displays separately 首选项活动 termux-x11-preference 将使用/修改 Termux:X11 活动当前打开的显示的首选项。 ## 与第三方应用程序一起使用 您可以与第三方应用程序一起使用 Termux:X11。 检查 `shell-loader/src/main/java/com/termux/x11/Loader.java` 的工作原理。 # 许可证 根据 [GPLv3 license](https://www.gnu.org/licenses/gpl-3.0.html) 发布。