backgroundbackground
Termux-X11使用教程

Termux-X11使用教程

Termux / X11 / Android

教程

2024-04-05 04:00

一、Termux-X11介绍

项目Github官网

官方介绍:Termux:X11 是一款成熟的 X 服务器。它采用 Android NDK 构建,并针对 Termux 进行了优化。

简单来说,这款软件实现了安卓上的X11服务端,能让Linux的图形软件显示在安卓系统上,比VNC更高效。

X11是Linux的主流显示协议,设计为C/S架构,其中显示服务直接控制硬件,如显示器等,客户端是各类图形软件,包括桌面系统,如KDE、Gnome、XFCE等

二、安装

安装分为两个部分,一个是Termux-X11主程序,第二个是Termux上的控制软件包

主程序直接在Github的Release页面下载安装即可,一般选arm64-v8a

Termux上执行apt update && apt install x11-repo -y && apt install termux -y,等待安装完成即可

三、启动X11服务

就像和普通的X服务命令一样使用Termux-X11。

先看看Termux-X11的Help,Termux终端执行

termux-x11 -help

结果:

use: X [:<display>] [option]
-a #                   default pointer acceleration (factor)
-ac                    disable access control restrictions
-audit int             set audit trail level
-auth file             select authorization file
-br                    create root window with black background
+bs                    enable any backing store support
-bs                    disable any backing store support
-c                     turns off key-click
c #                    key-click volume (0-100)
-cc int                default color visual class
-nocursor              disable the cursor
-core                  generate core dump on fatal error
-displayfd fd          file descriptor to write display number to when ready to connect
-dpi int               screen resolution in dots per inch
-dpms                  disables VESA DPMS monitor control
-deferglyphs [none|all|16] defer loading of [no|all|16-bit] glyphs
-f #                   bell base (0-100)
-fakescreenfps #       fake screen default fps (1-600)
-fp string             default font path
-help                  prints message with these options
+iglx                  Allow creating indirect GLX contexts
-iglx                  Prohibit creating indirect GLX contexts (default)
-I                     ignore all remaining arguments
-ld int                limit data space to N Kb
-lf int                limit number of open files to N
-ls int                limit stack space to N Kb
-nolock                disable the locking mechanism
-maxclients n          set maximum number of clients (power of two)
-nolisten string       don't listen on protocol
-listen string         listen on protocol
-noreset               don't reset after last client exists
-background [none]     create root window with no background
-reset                 reset after last client exists
-p #                   screen-saver pattern duration (minutes)
-pn                    accept failure to listen on all ports
-nopn                  reject failure to listen on all ports
-r                     turns off auto-repeat
r                      turns on auto-repeat
-render [default|mono|gray|color] set render color alloc policy
-retro                 start with classic stipple and cursor
-s #                   screen-saver timeout (minutes)
-seat string           seat to run on
-t #                   default pointer threshold (pixels/t)
-terminate [delay]     terminate at server reset (optional delay in sec)
-tst                   disable testing extensions
ttyxx                  server started from init on /dev/ttyxx
v                      video blanking for screen-saver
-v                     screen-saver without video blanking
-wr                    create root window with white background
-maxbigreqsize         set maximal bigrequest size
java.net.BindException: bind failed: EADDRINUSE (Address already in use)
        at libcore.io.IoBridge.bind(IoBridge.java:108)
        at java.net.PlainSocketImpl.socketBind(PlainSocketImpl.java:162)
+xinerama              Enable XINERAMA extension
-xinerama              Disable XINERAMA extension
-dumbSched             Disable smart scheduling and threaded input, enable old behavior
-schedInterval int     Set scheduler interval in msec
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:427)-sigstop               Enable SIGSTOP based startup
+extension name        Enable extension
-extension name        Disable extension
 Only the following extensions can be run-time enabled/disabled:
        Generic Event Extension
        MIT-SHM
        XTEST
        XINERAMA
        XFIXES
        RENDER

        RANDR
        COMPOSITE
        DAMAGE
        MIT-SCREEN-SAVER
        DOUBLE-BUFFER
        RECORD
        DPMS
        X-Resource
        XVideo
        XVideo-MotionCompensation
        GLX
-query host-name       contact named host for XDMCP
-broadcast             broadcast for XDMCP
-multicast [addr [hops]] IPv6 multicast for XDMCP
-indirect host-name    contact named host for indirect XDMCP
-port port-num         UDP port number to send messages to
-from local-address    specify the local address to connect from
-once                  Terminate server after one session
-class display-class   specify display class to send in manage
        at java.net.ServerSocket.bind(ServerSocket.java:377)-cookie xdm-auth-bits  specify the magic cookie for XDMCP
-displayID display-id  manufacturer display ID for request
[+-]accessx [ timeout [ timeout_mask [ feedback [ options_mask] ] ] ]

                       enable/disable accessx key sequences
-ardelay               set XKB autorepeat delay
-arinterval            set XKB autorepeat interval
-xstartup "command"    start `command` after server startup
-legacy-drawing        use legacy drawing, without using AHardwareBuffers
-force-bgra            force flipping colours (RGBA->BGRA)

AI翻译后:

使用方法:X [:<显示器>] [选项]

-a #                   默认指针加速(倍数)
-ac                   禁用访问控制限制
-audit int             设置审计跟踪级别
-auth file             选择授权文件
-br                   创建具有黑色背景的根窗口
+bs                   启用任何背景存储支持
-bs                   禁用任何背景存储支持
-c                    关闭键盘响声
c #                   键盘响声音量(0-100)
-cc int                默认色彩视觉类
-nocursor              禁用光标
-core                  发生致命错误时生成核心转储
-displayfd fd          写入显示器号的文件描述符,准备连接时
-dpi int               屏幕分辨率(每英寸点数)
-dpms                  禁用VESA DPMS监控器控制
-deferglyphs [none|all|16] 延迟加载[无|全部|16位]字形
-f #                   铃声基数(0-100)
-fakescreenfps #       伪屏幕默认帧速率(1-600)
-fp string             默认字体路径
-help                  打印这些选项的消息
+iglx                  允许创建间接GLX上下文
-iglx                  禁止创建间接GLX上下文(默认)
-I                     忽略所有剩余的参数
-ld int                限制数据空间为N Kb
-lf int                限制打开文件的数量为N
-ls int                限制堆栈空间为N Kb
-nolock                禁用锁定机制
-maxclients n          设置最大客户端数量(2的幂)
-nolisten string       不在协议上侦听
-listen string         在协议上侦听
-noreset               最后一个客户端退出后不重置
-background [none]     创建没有背景的根窗口
-reset                 最后一个客户端退出后重置
-p #                   屏保模式持续时间(分钟)
-pn                    侦听所有端口失败时接受
-nopn                  侦听所有端口失败时拒绝
-r                     禁用自动重复
r                      启用自动重复
-render [default|mono|gray|color] 设置渲染颜色分配策略
-retro                 启动时带有经典点阵和光标
-s #                   屏保超时时间(分钟)
-seat string           运行在指定座位上
-t #                   默认指针阈值(像素/t)
-terminate [delay]     服务器重置时终止(可选延迟秒)
-tst                   禁用测试扩展
ttyxx                  从init启动的服务器在/dev/ttyxx上
v                      屏保期间使用视频空白
-v                     不使用视频空白的屏保
-wr                    创建具有白色背景的根窗口
-maxbigreqsize         设置最大bigrequest大小
java.net.BindException: bind failed: EADDRINUSE (Address already in use)
        在libcore.io.IoBridge.bind(IoBridge.java:108)中
        在java.net.PlainSocketImpl.socketBind(PlainSocketImpl.java:162)中
+xinerama              启用XINERAMA扩展
-xinerama              禁用XINERAMA扩展
-dumbSched             禁用智能调度和线程输入,启用旧行为
-schedInterval int     设置调度器间隔(毫秒)
        在java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:427)中
-sigstop               启用基于SIGSTOP的启动
+extension name        启用扩展
-extension name        禁用扩展
只能在运行时启用/禁用以下扩展:
        通用事件扩展
        MIT-SHM
        XTEST
        XINERAMA
        XFIXES
        RENDER

        RANDR
        COMPOSITE
        DAMAGE
        MIT-SCREEN-SAVER
        DOUBLE-BUFFER
        RECORD
        DPMS
        X-Resource
        XVideo
        XVideo-MotionCompensation
        GLX
-query host-name       联系命名主机进行XDMCP
-broadcast             广播XDMCP
-multic

最简单的启动命令:

termux-x11 :1

执行后将会监听本地的Unix域套接字端口

也可监听TCP连接:

termux-x11 -listen tcp :1

执行后将会监听6001端口(X11服务默认从6000开始计数)

四、使用

在控制台指定X服务:

export DISPLAY=:1

如果是TCP服务:

export DISPLAY=<IP地址>:1

这里的:1改成你启动X11服务指定的号码,<IP地址>改为X11服务地址

然后就可以启动一个图形程序来测试了,例如konsole,然后就能在Termux-X11的上看到一个无窗口的图形界面了

可以启动一个完整的图形界面:startx,执行后应该能看到完整的Linux桌面环境在Termux-X11上显示了

(图片待续)