Termux安装GUI应用并启用虚拟GPU

目录

1.你知道吗,即使不用容器Termux也能运行桌面应用

1.使用VNC远程桌面

2.使用Termux-x11

2.没有桌面总感觉怪怪的,不是吗

1.安装桌面环境

2.VNC配置

3.Termux-x11配置

3.使用虚拟GPU驱动

1.安装 virglrenderer-android

2.启动virglrenderer-android

3.virglrenderer-android的缺陷

3.使用说明


1.你知道吗,即使不用容器Termux也能运行桌面应用

  • 启用X11仓库。
    pkg install x11-repo

    也可以添加一些其它有GUI应用的源,如tur源

    pkg install tur-repo

    然后我们就可以安装我们想要的软件了,提示,可以通过以下指令在当前目录生成目前apt 和pkg可以安装的应用的TXT列表。

    apt list >> aptlist.txt
    pkg list-all >> pkglist.txt

  • 安装应用并运行

1.使用VNC远程桌面

安装vncserver

pkg install tigervnc

安装完成配置一下密码

#输入密码不会显示
Passwork:
Verify:
#看到以下提示是问你要不要设置一个vnc只读密码,根据自己需要选择即可(如果选择y需要再为只读vnc设置一个密码)
Would you like to enter a view-only password  (y/n)? n

以Firefox为例,

安装

pkg install firefox

启动

export DISPLAY=:1 && vncserver :1 && firefox
                ^               ^
                |               |
                注意两处的数字要相同
#这部分代码必须要顺序执行,不能异步执行
#如果想将其存为sh文件执行,请使用source name.sh而不是./name.sh 或 sh name.sh

vnc的端口为‘590’+冒号(英符)后的数字,例如以上我们的端口是5901

输入ifconfig获取本机IP地址

ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)

rmnet_data5: flags=65<UP,RUNNING>  mtu 1432
        inet x.x.x.x  netmask 255.255.255.248
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)

wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.199.252  netmask 255.255.255.0  broadcast 192.168.199.255
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 3000  (UNSPEC)

 一般会有很多结果,我们找到wlan开头,192.168开头的就是我们的内网地址了,一般我们只需要内网地址即可。

其它软件也是同理,不过一些软件的名称和它们的启动命令并不相同。

另外可以运行的一些常用软件

chromium (tur-repo)
code-oss (tur-repo) #没有微软依赖的vscode
thunar (x11-repo)
vlc
wine (x11-repo)
...

提示;

要想启动chromium ,你不应该输入chromium来运行它,而是使用

chromium-browser

如果你不清楚某个软件的启动命令,列出bin目录的文件是个不错的选择。

ls /data/data/com.termux/files/usr/bin
#或者列出与程序名称相关的文件,以chromium为例
ls /data/data/com.termux/files/usr/bin/chromium*
#或更广泛一点
ls /data/data/com.termux/files/usr/bin/*chrom*

2.使用Termux-x11

这些应用当然也可以使用Termux-x11来显示

pkg install termux-x11-nightly #包含在x11-repo中,所以执行前别忘了pkg install x11-repo

安装完后执行

termux-x11 $prefix -xstartup "firefox"
                                 ^
                                 | 此处切换为你要启动的应用的启动命令

Termux-x11 Android apk下载Releases · termux/termux-x11

启动

2.没有桌面总感觉怪怪的,不是吗

1.安装桌面环境

pkg install xfce4

这样就可以安装xfce4的基础套件,如果你安装完后发现少了一些重要功能,可以使用

apt list xfce4*

查找需要安装的组件并自行补全,或者直接安装所有xfce4的组件

apt install xfce4*

Termux还支持以下桌面环境

LXQT MATE OpenBox i3wm Weston
...

现在我们需要配置一下我们的远程桌面环境了(以xfce4为例)

2.VNC配置

nano .vnc/xstartup
#xstartup的绝对路径是/data/data/com.termux/files/home/.vnc/xstartup

你应该会看到这样的配置文件

#!/data/data/com.termux/files/usr/bin/sh
## This files is executed during VNC server
## startup.
# Launch terminal emulator Aterm.
# Requires package 'aterm'.
aterm -geometry 80x24+10+10 -ls &

# Launch Tab Window Manager.
# Requires package 'xorg-tw'.
twm &

保存原始的配置文件对我们总没有坏处对吧?

我们需要在它的代码前加上几段,改成这样

#!/data/data/com.termux/files/usr/bin/sh
## This files is executed during VNC server
## startup.
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
# Launch terminal emulator Aterm.
# Requires package 'aterm'.
aterm -geometry 80x24+10+10 -ls &

# Launch Tab Window Manager.
# Requires package 'xorg-tw'.
twm &

当然如果你不想改配置文件的话,你也可以通过以下命令来启动xfce4及其组件

export DISPLAY=:1 && vncserver :1 && startxfce4

请注意,如果你选择通过把上述代码保存为.sh文件来运行它时你不应该通过./name.sh或sh name.sh来运行它,而是通过source name.sh来运行它。

在电脑上的tigervnc是可以自动调整分辨率的,看起来就像一台真正运行着Linux的电脑。

3.Termux-x11配置

unset SESSION_MANAGER & unset DBUS_SESSION_BUS_ADDRESS & termux-x11 $prefix -startup "xfce4-session"

或者你安装了xwayland则只需要使用

termux-x11 $prefix -startup "xfce4-session"

我记的termux-x11关闭时不会把xserver的锁给删掉,导致再运行vncserver或termux-x11时端口数字会不断的往后蹦,你也可以写一个小脚本让termux-x11关闭时把锁给删掉

#!/data/data/com.termux/files/usr/bin/bash
handle_interrupt() {
  num=$(echo $prefix | cut -d ':' -f 2)
  file1="/data/data/com.termux/files/usr/tmp/.X11-unix/X${num}"
  file2="/data/data/com.termux/files/usr/tmp/.X${num}-lock"
  rm "${file1}" "${file2}"
}

trap="$1"

if [[ $prefix =~ ^:+[0-9]+$ ]]; then
   (unset SESSION_MANAGER & unset DBUS_SESSION_BUS_ADDRESS & termux-x11 $prefix -startup "xfce4-session")
elif [ "$1" = "-kill" ]; then
   if [[ $2 =~ ^:+[0-9]+$ ]]; then
        num=$(echo $2 | cut -d ':' -f 2)
        file1="/data/data/com.termux/files/usr/tmp/.X11-unix/X${num}"
        file2="/data/data/com.termux/files/usr/tmp/.X${num}-lock"
        rm "${file1}" "${file2}"
   fi
else
   echo "Usage: $0"
   echo "          [:<number>]
   echo "          [-kill :<number>]"
fi
        

使用方法

<脚本名称> :<数字>        #启动服务
<脚本名称> -kill :<数字>  #停止服务

3.使用虚拟GPU驱动

软件是装上了,但是图像处理能力约等于没有呢

1.安装 virglrenderer-android

pkg install virglrenderer-android

2.启动virglrenderer-android

virgl_test_server_android & export DISPLAY=:1 GALLIUM_DRIVER=virpipe MESA_GL_VERSION_OVERRIDE=3.2

记住export DISPLAY=:1 <---这里的数字要和你的远程桌面的数字一致

如果你新开了一个会话,并打算在新会话中开启远程桌面服务,那么你得重新导入一遍环境变量

export DISPLAY=:1 GALLIUM_DRIVER=virpipe MESA_GL_VERSION_OVERRIDE=3.2

这是WebGL的测试结果,基本可以稳定在60fpsWebGL

你问我为什么没有前后对照?因为在此之前WebGL在Firefox上根本跑不了,在Chromium上倒是可以显示个位数的帧率,但是没有图像.....刷新网页会卡死。

说实话这个帧率已经很不错了,让我来告诉你我们学校机房电脑的运行这个测试的情况,即使把数量拉到一个,棱面拉到最多它还是只有20fps左右。(我知道这样对比多少有点不公平,对于那台装着英伟达的显卡,但是英伟达的驱动却不认它,右键快捷方式反而有AMD GPU驱动快捷方式残留(好吧,好像是核显))

3.virglrenderer-android的缺陷

为什么这一节不跟安装桌面那一节一块讲呢?看看使用这个虚拟GPU后Chromium出了什么问题吧当然,基于Chromium的应用也是,这可不仅仅只有浏览器code-oss

3.使用说明

进入桌面你会发现用户名为Termux 的UID,所以一些文件无法访问,你也不能像在Linux上那样用sudo来以root权限打开应用,要使用root权限打开应用,请使用tsu启动远程桌面服务。

pkg install tsu
#安装完成后
tsu

然后再通过以上任意一种方式运行你的应用即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值