Skip to content

[Bug]: Unable to use Termux-X11 with x86 proot distributions #495

@xNul

Description

@xNul

Problem description

Arch Linux aarch64 works perfectly on my device. I'm able to run Termux-X11 and run xfce4 with no issues. Arch Linux x86 however, I cannot for the life of me get to work. The same commands that work perfectly on Arch Linux aarch64, fail for x86. All I see in Termux-X11 is a black screen with the default X cursor. No clear errors in the logs from my untrained eye.

Device: Pixel 9
OS: Android 15 (GrapheneOS)
Version: proot-distro latest (v4.21.0)

Arch Linux aarch64 working startxfce4 log

Arch Linux aarch64 working Termux-X11 debug log

Arch Linux x86 not working startxfce4 log

Arch Linux x86 not working Termux-X11 log

What steps will reproduce the bug?

Arch Linux aarch64

Termux

pd install archlinux
pd login archlinux
[root@localhost ~]# nano /etc/pacman.conf # uncomment DisableSandbox
[root@localhost ~]# pacman -Sy
[root@localhost ~]# pacman -Syu
[root@localhost ~]# pacman -S sudo
[root@localhost ~]# pacman -S xfce4
[root@localhost ~]# exit
./startxfce4_arch.sh

startxfce4_arch.sh

#!/data/data/com.termux/files/usr/bin/bash

# Kill open X11 processes
kill -9 $(pgrep -f "termux.x11") 2>/dev/null

# Enable PulseAudio over Network
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1

# Prepare termux-x11 session
export XDG_RUNTIME_DIR=${TMPDIR}
TERMUX_X11_DEBUG=1 termux-x11 -ac -once -disable-dri3 :0 &> termux_x11.log &

# Wait a bit until termux-x11 gets started.
sleep 3

# Launch Termux X11 main activity
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity > /dev/null 2>&1
sleep 1

# Login in PRoot Environment. Do some initialization for PulseAudio, /tmp directory, vIPC
# and run XFCE4 as user root.
# See also: https://github.com/termux/proot-distro
# Argument -- acts as terminator of proot-distro login options processing.
# All arguments behind it would not be treated as options of PRoot Distro.
proot-distro login archlinux --no-sysvipc --shared-tmp -- /bin/bash -c  'export PULSE_SERVER=127.0.0.1 && export XDG_RUNTIME_DIR=${TMPDIR} && su - root -c "env DISPLAY=:0 LIBGL_ALWAYS_SOFTWARE=1 XDG_RUNTIME_DIR=${TMPDIR} startxfce4"' &> startxfce4.log

exit 0

Arch Linux x86

Termux

DISTRO_ARCH=x86_64 pd install --override-alias archlinuxx86 archlinux
pd login archlinuxx86
[root@localhost ~]# nano /etc/pacman.conf # uncomment DisableSandbox
[root@localhost ~]# pacman -Sy
[root@localhost ~]# pacman -Syu
[root@localhost ~]# pacman -S dhcpcd dnssec-anchors ldns less libedit nano net-tools netctl openresolv openssh vi which # for package-parity with aarch64. Termux-x11 still does not work, but it makes the logs easier to compare
[root@localhost ~]# pacman -S sudo
[root@localhost ~]# pacman -S xfce4
[root@localhost ~]# exit
./startxfce4_archx86.sh

startxfce4_archx86.sh

#!/data/data/com.termux/files/usr/bin/bash

# Kill open X11 processes
kill -9 $(pgrep -f "termux.x11") 2>/dev/null

# Enable PulseAudio over Network
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1

# Prepare termux-x11 session
export XDG_RUNTIME_DIR=${TMPDIR}
TERMUX_X11_DEBUG=1 termux-x11 -ac -once -disable-dri3 :0 &> termux_x11x86.log &

# Wait a bit until termux-x11 gets started.
sleep 3

# Launch Termux X11 main activity
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity > /dev/null 2>&1
sleep 1

# Login in PRoot Environment. Do some initialization for PulseAudio, /tmp directory, vIPC
# and run XFCE4 as user root.
# See also: https://github.com/termux/proot-distro
# Argument -- acts as terminator of proot-distro login options processing.
# All arguments behind it would not be treated as options of PRoot Distro.
proot-distro login archlinuxx86 --no-sysvipc --shared-tmp -- /bin/bash -c  'export PULSE_SERVER=127.0.0.1 && export XDG_RUNTIME_DIR=${TMPDIR} && su - root -c "env DISPLAY=:0 LIBGL_ALWAYS_SOFTWARE=1 XDG_RUNTIME_DIR=${TMPDIR} startxfce4"' &> startxfce4x86.log

exit 0

What is the expected behavior?

Able to see and use the xfce4 desktop environment in Termux-X11 on Arch Linux x86.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions