Termux X11は、Androidスマホ上でXサーバーを動かせるアプリです。これは何を意味するのでしょうか。Firefox、Chromium、GIMP、Blender、Visual Studio Codeなど、X11の表示画面に依存するLinuxデスクトップアプリを実行できるということです。AndroidはLinuxカーネルをベースに開発されていますが、グラフィック表示プロトコルは一般的なデスクトップLinuxディストリビューションとは異なります。Linuxのアプリケーションフレームワーク(GTK & QT)は多くがX11またはWayland向けに設計されているため、AndroidではそのままLinuxアプリを動かせません。
Termux X11はAndroid上で動くXサーバーを提供し、Termux上のLinuxアプリがその中にグラフィカル画面を表示できるようにします。

原理図は以下の通りです。これはGNU/LinuxデスクトップにおけるX Serverの動作方式です。

Termux X11はX ServerをAndroidへ移植し、X11アプリがAndroid上に画面を出力できるようにしています。

Termux X11があれば、virglrendererによる3Dハードウェアアクセラレーションを簡単に実現できます。グラフィック性能はVNCより優れています。
Termux X11はX11プロトコルを使います。Xディスプレイサーバーは単一アプリの表示にも、完全なLinuxデスクトップ環境の表示にも使えます。
Termux X11は外付けマウスやキーボードを使えるほか、スマホのタッチ操作でも扱えます。適切なデスクトップ解像度を指定すれば、スマホのキーボードでデスクトップ環境とやり取りできます。

1. Termux X11をインストールする#
Termux X11の開発はSparkleから着想を得ています。以前はXWaylandで実現されていましたが、後にxcbへ変更されました。
現在、Termux X11のシステム要件はAndroid 8以上の端末です。
Termuxをインストールします
Termux-x11のGithub ReleasesからAPKファイルをダウンロードします。ほとんどの端末では、
arm64-v8aアーキテクチャ版をダウンロードします。Termux-x11 APKファイルをインストールします。
Termuxを開き、x11-repo、termux-x11-nightlyパッケージをインストールします
pkg update
pkg upgrade
pkg install x11-repo
pkg install termux-x11-nightly2. 利用シナリオ1:Termuxで直接使う#
Termuxのパッケージはかなり改造されており、グラフィカルアプリのパッケージは少なめです。そのため、Termux X11はProot-distroと組み合わせて使うほうが選択肢が多く、おすすめです。
Termux X11アプリを開くと、この画面が表示されます

Termuxを開き、XFCE4とGIMPをインストールします
pkg install xfce gimp- Termux X11を実行し、dbusでXFCE4を起動します
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"Make sure an X server isn't already running(EE)というエラーが出た場合は、Termuxを終了し、TermuxとTermux X11のアプリを強制停止してキャッシュを消去してから、もう一度試してください。
するとTermux-x11の画面にXFCE4デスクトップが表示されます
デスクトップ環境を表示せず、Termux端末から直接
gimpを実行することもできます。一部アプリのフォントが大きすぎる場合は、XFCE4のシステム設定 → Appearance → Cutsom DPIをクリックします。Termux X11のPreferences設定でも解像度を設定できます。通知欄にあるTermux X11のPreferencesをタップすると、「タッチモード」から「模擬タッチパッド」へ切り替えられます。

終了するにはTermuxに戻ってCTRL+Cでプロセスを終了し、ステータスバーを下へスワイプして
Exitをタップします。
3. 利用シナリオ2:Proot-distroと組み合わせて使う#
Termux本体のパッケージは不足しがちなので、ProotディストリビューションとTermux X11を組み合わせるほうが便利です。
まずProot-distroをインストールします。例としてDebianがあります。
Termux X11アプリを開き、Termuxへ戻ります。
インストール済みのProot-distroへ一般アカウント
userでログインします。ここでprootへログインするときは、--shared-tmpパラメータを追加します。これはTermuxの$TMPDIRディレクトリをprootの/tmpディレクトリへマウントするという意味です。
proot-distro login --user user debian --shared-tmp- その後はTermuxで直接Termux X11を使う場合と同じように、XFCE4デスクトップを起動します。
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"起動後、戻るボタンを押すとスマホのキーボードを呼び出せます。ショートカットキーを打ちやすくするため、Hacker’s Keyboardの利用をおすすめします。
Proot-distroには利用できる既成パッケージがより多いため、実行できるデスクトップアプリも大幅に増えます。
4. 利用シナリオ3:chrootと組み合わせて使う#
XFCE4デスクトップ付きのchroot Ubuntuを設定します
Termux X11アプリを起動します
Termuxへ戻り、Termux X11サーバーを実行します。
termux-x11 :0 -ac &- Termuxのtmpをchroot Ubuntuのtmpへマウントします
sudo busybox mount --bind $PREFIX/tmp /data/local/tmp/ubuntu/tmp- chroot Ubuntuにログインします
sh /data/local/tmp/startu.sh- XFCE4を起動します
sudo chmod -R 777 /tmp
export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1:4713
dbus-launch --exit-with-session startxfce4 &5. Termux X11で本物のWaylandセッションを起動する#
Termux X11はXサーバーですが、WestonというWaylandの参照実装を利用すれば、Xサーバー環境下でネストされたWaylandセッション(nested Wayland session)を起動できます。
パッケージマネージャーでwestonをインストールした後、端末から起動します。
weston6. Termux X11のGPUハードウェアアクセラレーション#
Termux virglrenderer GPU 3Dを参照してください。
7. Termux X11でスマホのキーボードを使って中国語を入力する#
Preferences → Keyboardをタップし、“Workaround to enable CJK Gboard"を有効にします。
スマホの戻るボタンを押してキーボードを呼び出します。
下部ツールバーを左へスワイプすると入力欄が表示され、Androidのキーボードで文字を入力できます。


