一、Termux-X11介绍
官方介绍: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上显示了
(图片待续)