Langsung ke konten utama

Running proot program over termux xorg

 


# Running xorg and xvfb on Termux

pkg add tur-repo

apt update -y && apt upgrade -y

pkg install x11-repo


# Mempermudah nantinya

apt install fish starship pulseaudio tmux -y

chsh -s fish

exit

# Kembali ke termux dan ini hasilnya:



# Beri akses ke internal storage

termux-setup-storage


# Install xorg-server

apt install xorg-server xorg-server-xvfb -y


# Sampai sini harusnya akan ada error muncul jika mencoba menjalankannya:



# Fix error dengan cara install mesa zink

apt install mesa-zink/tur-packages


# Install xwayland untuk termux-x11

apt install libwayland-protocols libepoxy xwayland


# Download termux-x11 .zip dari github lalu extract file zip-nya dan install file termux-x11.apk dan .deb-nya (dengan cara dpkg -i file.deb)

# Kenapa install dari github? Karna termux-x11-nightly dari repo termux bermasalah

# Setelah semua selesai, tinggal install program yg membutuhkan X server, misalkan xterm (30MB) atau openbox (700MB)


apt install xterm -y


# Jalankan X11

DISPLAY=:0 termux-x11


# Oia, jika ingin mempermudah pindah2 terminal bisa gunakan tmux

apt install tmux -y

tmux 

# Quick tips penggunaan tmux

# Ctrl-bc untuk membuka terminal baru

# Ctrl-bd untuk menutup terminal sekarang

# Ctrl-bN (N adalah angka terminal yg muncul; ubah sesuai urutan terminal) untuk pindah2 terminal atau sentuh saja tab nama terminal-nya


# Jalankan X :0 atau Xvfb :0 -ac 

Xvfb :0 -ac



# Terakhir, jalankan program yg diinginkan

DISPLAY=:0 xterm


# Lalu buka aplikasi x11 termux dan selesai




# Tambahan jika ingin mencoba di proot via virgl

apt install proot-distro vulkan-loader-android/stable virglrenderer-android -y

# Jalankan virgl server-nya

MESA_NO_ERROR=1 MESA_GL_VERSION_OVERRIDE=4.0 GALLIUM_DRIVER=zink virgl_test_server_android --use-egl-surfaceless --use-gles

# atau

virgl_test_server_android


# Install proot

proot-distro install manjaro


# Untuk mempermudah proot

mkdir ~/var/binds

touch ~/var/binds/fbindprocpcidevices

alias manjaro='proot-distro login manjaro --shared-tmp --bind /data/data/com.termux/files/home/var/binds/fbindprocpcidevices:/proc/bus/pci/devices'


# Masuk ke Manjaro

manjaro


# Update & upgrade seperti biasa

pacman -Syu


# Install package yg membutuhkan Display seperti openbox & xterm & mesa-utils untuk mencoba

pacman -Sy openbox xterm mesa-utils


# verifikasi path agar tau tidak bentrok dengan package dari termux

which openbox # harusnya muncul /usr/bin/openbox


# Jika terjadi masalah karna user root, maka coba buat user biasa lalu login dan jalankan dari sana

# Jalankan xterm

DISPLAY=:0 GALLIUM_DRIVER=virpipe xterm

# atau

DISPLAY=:0 __GLX_VENDOR_LIBRARY_NAME=mesa MESA_LOADER_DRIVER_OVERRIDE=virpipe GALLIUM_DRIVER=virpipe xterm

# Jika sesuai, seharusnya muncul xterm di aplikasi termux-x11

# Lalu ketik di xterm glxgears

glxgears # cek termux bagian virgl maka akan muncul log yg berarti berhasil menggunakan virglrenderer


# Mencoba glmark2

pacman -Sy glmark2

# Ketik di xterm

glmark2


# Hasilnya adalah object kuda dkk ditampilkan dengan baik :)



# untuk menghentikan animasinya, kita harus Ctrl-c pada xterm yg ada di proot

# Coba buka openbox dgn cara: DISPLAY=:0 GALLIUM_DRIVER=virpipe openbox-session

# Lalu di app termux x11 buka menu openbox dengan cara ketuk dua jari 


# Mencoba browser chromium

pacman -Sy chromium


# Buka menu openbox seperti cara di atas dan cari opsi terminal xterm lalu ketik:

chromium --no-sandbox # Login-lah sebagai user biasa agar bisa sandbox




# Mencoba browser firefox

pacman -Sy firefox

firefox




# Kenapa menggunakan virgl? Sayangnya program yg membutuhkan X display di proot tidak bisa menggunakan zink secara langsung, jadi harus virgl atau softpipe (Opengl 3.3) atau llvmpipe (Opengl 4.5) (keduanya software rendering, bukan hardware accelerated)




# Lanjut kita coba hardware rendering melalu VNC

# Install x11vnc

pkg install x11vnc

# Jalankan dan jangan lupa pass argument port Xorg dan optional autoport

x11vnc -display :0 -autoport 5900 # cari port yg tersedia mulai dari 5900


# Buka aplikasi VNC client, disini kita gunakan saja bVnc dari Playstore

# Isi alamat localhost:5900 (sesuaikan dengan port Xorg)

# Lalu hubungkan, dan di termux jalankan openbox seperti sebelumnya kita menjalankannya yaitu: DISPLAY=:0 GALLIUM_DRIVER=virpipe openbox-session


# Maka openbox akan berjalan di VNC, untuk mengeceknya sentuh dengan dua jari di layar dan akan terbuka menu openbox

# Coba jalankan xterm dan program lain dari VNC seperti kita menjalankannya dari aplikasi termux x11



# Kelebihan VNC adalah bisa copas clipboard android ke proot dengan mudah (ketuk 3 jari untuk paste clipboard android); Juga Special key seperti Ctrl, Alt, Shift tidak sekaku di app termux x11; Selain itu juga kita bisa zooming jadi bisa melihat detail2 secara visual :)


# Kelebihan dari program proot daripada termux menurut saya adalah ringan (opini pribadi saat menggunakan firefox termux via zink dan membandingkan dengan chromium di proot manjaro menggunakan vnc dan termux x11)

# Mungkin karna GALLIUM_DRIVER=zink berat atau program X yg jalan di termux berat, siapa tahu?

# Sekaligus juga proot lebih banyak support package linux daripada termux yg beberapa sudah mulai didukung namun masih tidak bekerja merata di semua device

# Btw, xorg-server-xvfb hasil display-nya lebih mengikuti layar hape daripada xorg-server yg cenderung stretch


# Kalian juga bisa mengganti windowing-nya selain openbox yaitu i3 (tiling based), atau awesome (windowing seperti openbox) dan masih banyak lagi

# Tambahan bisa install tint2 sebagai panel penampung ketika window openbox di-minimize


# Kreasikan sendiri Linux on Android (proot) kalian dengan berbagai dotfiles di internet dan hal lainnya

# Selamat mencoba!


# Dari berbagai sumber 




Komentar

Postingan populer dari blog ini

How to export Godot game to Android from Linux

1.Go to Editor -> Manage export template -> Download and install ->Close. 2.Download command-tools cli for linux at https://developer.android.com/studio/ # command-tools .  Scroll down until you see the Command line tools  section. Then add `export ANDROID_HOME="/path/to/android-sdk"`  to your  `.bashrc`  or  `.zshrc` (for other shell, try to edit it accordingly), and unzip the file to: `/path/to/android-sdk/` Example: `$HOME/Android/android-sdk` 3.Download Openjdk latest version. Set JAVA _HOME  to your `.bashrc` : `export JAVA_ HOME=$(which java|rev|cut -d'/' -f3-|rev)` Install required tools&packages from sdkmanager: `$ANDROID _HOME/cmdline-tools/bin/sdkmanager --sdk_ root=$ANDROID_HOME "platform-tools" "build-tools;34.0.0" "platforms;android-34" "cmdline-tools;latest"` "cmake;3.10.2.4988404" "ndk;23.2.8568313" You can also choose which version you want to download, just playing around wi...

What is Declaration, Expression, and Statement

Declaration simply means initialization without value. for example: let x; Expression is the operation being used to some primitive data types and will return a value result, like: Numerical expression (10+30)  String expression ("Hello" + "World!") Boolean expression (a > b) Conditional expression (age > 18 ? "allow":"exit") while Statement is just a fancy word to combine both, like: let x = "Hello" + "World!" // this whole line is called statement