注意:Termuxのファイルシステムは一般的なLinuxと違いがあり、パッケージ数も少ないため、私はLinux prootコンテナを入れてからデスクトップ環境を動かすことが多いです。速度は遅くなりますが、使い勝手はよくなります。
Termuxは標準ではテキストだけの画面です。ユーザーが自分でデスクトップ環境(desktop environment)をインストールし、VNCまたはTermux X11で接続すれば、デスクトップPCに近い使用感を得られます。
現在、Termuxのパッケージリポジトリにあるデスクトップ環境は、XFCE、LXQT、MATE、OpenBox、i3wm、Westonなどです。
またTermuxはAndroid GELSで音声を出力できるので、PulseAudioサーバーを動かせば、デスクトップ環境から音声を出せます。
この記事では、XFCEデスクトップのインストールとPulseAudioサーバーの設定方法を紹介します。
1. 事前準備#
デスクトップ環境を動かすなら、スマートフォンのRAMは少なくとも6GB以上を推奨します。
先にTermuxをインストールし、Termuxがバックグラウンドでシステムに終了されないよう、Phantom Process Killingを無効化しておいてください。
2. XFCEデスクトップ環境をインストール#
Termuxで利用できるデスクトップ環境は多くありません。軽量で機能も少なすぎないXFCEを選ぶのが無難です。
XFCE4、Firefoxブラウザ、VIMエディタをインストールします。
pkg install x11-repo
pkg install xfce xfce4-goodies pulseaudio pavucontrol vim firefox3. グラフィカル画面へ接続#
次のどちらかを選びます。両方を共存させることもできます。VNCより性能がよいのでTermux X11を推奨しますが、リモート接続にはあまり向きません。
Termux X11#
Termux X11とvirglrendererを設定します。
後でデスクトップ環境を起動しやすいように、スクリプトを追加します。
vim ~/startxfce4.sh- 次の内容を入力します。
#!/bin/bash
# GPUアクセラレーションを起動
virgl_test_server_android &
# 音声サーバーを起動
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
# デスクトップ環境を起動
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session" &- 実行権限を付与します。
chmod +x ~/startxfce4.sh- Termuxを終了します。
exitTermux X11アプリを起動します。
Termuxに戻ってデスクトップ環境を起動すると、Termux X11アプリの画面にXFCE4デスクトップが表示されます。
./startxfce4.shVNCサーバー#
スマートフォンにAVNCクライアントをインストールします。
TigerVNCのパッケージをインストールします。執筆時点のバージョンは1.13.0です。
pkg install tigervnc- VNCサーバーのパスワードを設定します。
vncpasswd- VNCサーバー起動後に実行するプログラムを追加します。
~/.vnc/xstartupを編集します。
mkdir ~/.vnc/
vim ~/.vnc/xstartup- 次の内容を入力します。
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS
# PulseAudio音声サーバーを起動。音声はTermuxから出力される
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
# デスクトップ環境を実行。ここではXFCE
exec startxfce4- xstartupに実行権限を付与します。
chmod +x ~/.vnc/xstartup- VNCサーバーの設定ファイルを定義します。
~/.vnc/tigervnc.confを編集します。
vim ~/.vnc/tigervnc.conf- 次の内容を入力します。
# 現在のセッションはXFCE
$session="xfce-session";
# 解像度。高いほど帯域幅を多く使う
$geometry="1920x1080";
# ビット深度。値は8/16/24/32で、数字が大きいほど画質はよいが帯域幅を消費する
$depth="32";
# 外部ネットワークから接続できるようにする
$localhost="no";Termuxで
tigervncserverまたはvncserverコマンドを入力し、VNCサーバーを起動します。画面に出力されるポート番号を確認します。通常は1から始まります。VNCサーバーのポートは5900から数えるため、この場合のポートは5901です。AVNCアプリを開き、ホスト接続を追加します。アドレスに
localhost、ポートに5901を入力します。
4. デスクトップ環境をワンタップで起動するスクリプト#
デスクトップ環境を起動するたびにコマンドを打つのは面倒です。Termux Widgetのホーム画面ショートカットを使い、Termux + Termux X11 + virglserverの起動処理をワンタップで実行し、デスクトップ環境を自動起動します。
Termux Widgetをインストールします。
システム設定を開き、Termuxに「他のアプリの上に重ねて表示を許可」権限を与えます。
Termuxを開き直し、次のコマンドでショートカットを作成します。
mkdir .shortcuts
vim .shortcuts/start_xfce.sh- 次の内容を入力します。
#!/bin/bash
# 古いプロセスをすべて終了
killall -9 termux-x11 pulseaudio virgl_test_server_android termux-wake-lock
# Termux X11を起動
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR}
termux-x11 :0 -ac &
sleep 3
# PulseAudioを起動
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
# GPUアクセラレーション付きのvirglserverを起動
virgl_test_server_android &
# XFCE4デスクトップ環境を起動
export DISPLAY=:0
export PULSE_SERVER=tcp:127.0.0.1
dbus-launch --exit-with-session startxfce4 &- 実行権限を付与します。
chmod +x .shortcuts/start_xfce.shスマートフォンのホーム画面に移動し、ウィジェットを追加してTermux Widgetを選択します。先ほど作成したショートカットが一覧に表示されます。
ボタンをタップすると、Termuxが自動で開き、デスクトップにログインします。

