メインコンテンツへスキップ

Termux X11:スマホで使うXサーバーの使い方

·
カテゴリー スマートフォン Termuxチュートリアル
タグ X Window Wayland
目次

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以上の端末です。

  1. Termuxをインストールします

  2. Termux-x11のGithub ReleasesからAPKファイルをダウンロードします。ほとんどの端末では、arm64-v8aアーキテクチャ版をダウンロードします。

  3. Termux-x11 APKファイルをインストールします。

  4. Termuxを開き、x11-repo、termux-x11-nightlyパッケージをインストールします

pkg update

pkg upgrade

pkg install x11-repo

pkg install termux-x11-nightly

2. 利用シナリオ1:Termuxで直接使う
#

Termuxのパッケージはかなり改造されており、グラフィカルアプリのパッケージは少なめです。そのため、Termux X11はProot-distroと組み合わせて使うほうが選択肢が多く、おすすめです。

  1. Termux X11アプリを開くと、この画面が表示されます

  2. Termuxを開き、XFCE4とGIMPをインストールします

pkg install xfce gimp
  1. 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のアプリを強制停止してキャッシュを消去してから、もう一度試してください。

  1. するとTermux-x11の画面にXFCE4デスクトップが表示されます

  2. デスクトップ環境を表示せず、Termux端末から直接gimpを実行することもできます。一部アプリのフォントが大きすぎる場合は、XFCE4のシステム設定 → Appearance → Cutsom DPIをクリックします。Termux X11のPreferences設定でも解像度を設定できます。

  3. 通知欄にあるTermux X11のPreferencesをタップすると、「タッチモード」から「模擬タッチパッド」へ切り替えられます。

  4. 終了するにはTermuxに戻ってCTRL+Cでプロセスを終了し、ステータスバーを下へスワイプしてExitをタップします。

3. 利用シナリオ2:Proot-distroと組み合わせて使う
#

Termux本体のパッケージは不足しがちなので、ProotディストリビューションとTermux X11を組み合わせるほうが便利です。

  1. まずProot-distroをインストールします。例としてDebianがあります。

  2. Termux X11アプリを開き、Termuxへ戻ります。

  3. インストール済みのProot-distroへ一般アカウントuserでログインします。ここでprootへログインするときは、--shared-tmpパラメータを追加します。これはTermuxの$TMPDIRディレクトリをprootの/tmpディレクトリへマウントするという意味です。

proot-distro login --user user debian --shared-tmp
  1. その後はTermuxで直接Termux X11を使う場合と同じように、XFCE4デスクトップを起動します。
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"
  1. 起動後、戻るボタンを押すとスマホのキーボードを呼び出せます。ショートカットキーを打ちやすくするため、Hacker’s Keyboardの利用をおすすめします。

  2. Proot-distroには利用できる既成パッケージがより多いため、実行できるデスクトップアプリも大幅に増えます。

4. 利用シナリオ3:chrootと組み合わせて使う
#

  1. XFCE4デスクトップ付きのchroot Ubuntuを設定します

  2. Termux X11アプリを起動します

  3. Termuxへ戻り、Termux X11サーバーを実行します。

termux-x11 :0 -ac &
  1. Termuxのtmpをchroot Ubuntuのtmpへマウントします
sudo busybox mount --bind $PREFIX/tmp  /data/local/tmp/ubuntu/tmp
  1. chroot Ubuntuにログインします
sh /data/local/tmp/startu.sh
  1. 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をインストールした後、端末から起動します。

weston

6. Termux X11のGPUハードウェアアクセラレーション
#

Termux virglrenderer GPU 3Dを参照してください。

7. Termux X11でスマホのキーボードを使って中国語を入力する
#

Preferences → Keyboardをタップし、“Workaround to enable CJK Gboard"を有効にします。

スマホの戻るボタンを押してキーボードを呼び出します。

下部ツールバーを左へスワイプすると入力欄が表示され、Androidのキーボードで文字を入力できます。

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。