■ Android端末にDebian+Xfceを入れる
簡単に言えば「Android端末をパソコンにする」ということ。
使用するアプリは以下の通り。
Androidというのは、そもそもLinux上で動いているOSであるため、
ユーザーはターミナルを開くことで「制限の多いLinux」としても使うことができる。
Termuxは、その制限の中でも動作するようにしたパッケージ郡が用意されたターミナルエミュレータで、
ある程度普通のLinuxとしても使うことができる。
そして、うまく設定することでデスクトップ環境を用意することができ、
Android端末だけでGUIなパソコンとしても使うことができる。
必要なアプリのインストール
まず、この手のアプリはGooglePlayStoreを頼りにしないこと。
Googleが拒否したりするために、まともなものが公開できないから。apk直インストールが基本。
なお、物理キーボードだけ使うなら、ソフトウェアキーボードは要らない。
「AndroidベースのBlackBerry系」「Cosmo Communicator系」「Unihertz Titan系」とかの、物理キーボード付き端末でも大体は要らない。
必須: Termux (ターミナルエミュレータ+パッケージ郡)
ダウンロードURL(F-Droid):
https://f-droid.org/ja/packages/com.termux/
ダウンロードURL(GitHub):
https://github.com/termux/termux-app/releases
F-Droidからapkを落とすのが確実。
他アーキテクチャ・Android7.0未満対応のパッケージは、GitHubからダウンロードできる。
必須: Termux:X11 (X11クライアント)
ダウンロードURL:
https://github.com/termux/termux-x11/releases/tag/nightly
「app-アーキテクチャ名-debug.apk」をダウンロードしてくる。
最近のAndroid端末の多くは「app-arm64-v8a-debug.apk」になると思う。
なお、Termuxには「バッテリー最適化の無効化」「ファントムプロセスの無効化」を行わないと、
バックグラウンドで動かしてる間に落とされるので、無効化設定を行うこと。
特に、Android12はこの辺めんどくさいです。できれば避けたいバージョン。
(PCと繋いでUSBデバッグで「adb shell settings put global settings_enable_monitor_phantom_procs false」)
オプション: Unexpected Keyboard (ソフトウェアキーボード)
ダウンロードURL:
https://f-droid.org/ja/packages/juloo.keyboard2/
Linuxユーザーにとって、キーボードは命綱。PC配列の直接入力タイプのスクリーンキーボードでないと入力が辛い。
これはTermuxでの使用を想定して作っている様子で、斜めスワイプによる記号入力が便利。
通常のスマホサイズでも使えるし、キー配列は自由にカスタマイズ可能。
むしろカスタマイズしないと記号が全部スワイプ入力なのでちょっと不便。
オプション: Hacker's Keyboard (ソフトウェアキーボード)
ダウンロードURL:
https://f-droid.org/ja/packages/org.pocketworkstation.pckeyboard/
こっちは昔からある方で、長年更新されてないものの、Android15なスマホでも使える。
端末がちょっと横に長くできるなら、こっちのほうが使いやすい場合もあるかもしれない。
Termuxで環境構築
アプリをインストールしたら、Termuxで必要なパッケージを入れたり、設定を入れたりします。
Debian環境のインストール
$ pkg update ; pkg upgrade ; pkg i vim proot-distro x11-repo -y ; pkg i termux-x11-nightly -y ; proot-distro install debian
$ proot-distro login debian
パッケージを更新しつつ、proot-distroを入れ、それでdebian環境を作る。ついでにTermux:X11を使うためのパッケージとvimも入れておく。
作ったDebian環境には、「proot-distro login debian」で入る。(--user 【ユーザー名】 でログインするユーザーを指定可能)
proot-distro内のDebianは、Android内のLinuxと違って自由度が高く、大体のアプリケーションが動く。
デバイスは直接いじれないけど。
ちなみに、termux-x11-nightlyパッケージは、x11-repoを入れないと出てきません。一応メモ。
Debian内の環境構築
パッケージインストール
# apt update ; apt upgrade ; apt install xfce4 xfce4-goodies dbus-x11 -y
パスワード(root)の設定
# passwd
一般ユーザー追加
# adduser 【ユーザー名】
パッケージ更新後、Xfce4本体と、その標準ツールたち(xfce4-goodies)を入れる。dbus-x11も無いと立ち上がらない。
また、rootのパスワードも設定しておく。Xfce側でsuでrootにできないので。
そして、rootのままxfce4-session起動させるのもなんか気持ち悪いので、一般ユーザーを作っておく。
一般ユーザーのパスワードは対話式に聞かれる。
ここまでいけば、最低限のDebian+Xfce環境は出来上がっている。
Xfce起動
Termux立ち上げ後、以下を実行。
$ proot-distro login debian --user 【ユーザー名】
$ termux-x11 :1 -xstartup xfce4-session
この後、Android側でTermux:X11アプリを立ち上げると、Xfce4のデスクトップ画面がでてくる。
ここまでくれば、そのへんのLinux環境と大差ないので、これ以降の日本語化とかアプリの追加などは、
普通にLinuxをいじる要領で作業すれば良い。
自動起動
起動のたびにいちいちコマンドを打つのもめんどくさいので、
Termuxを立ち上げたら自動でデスクトップ表示までやるようにする。
ただし、TermuxのCUIで済む作業をしたい場合もあるので、選択できるようにする。
Termux立ち上げ直後状態で、以下を実行。
$ vim ~/.bashrc
echo -n "Use GUI?[y/N]:"
read zz
if [ "$zz" = 'y' ] ; then
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity &
proot-distro login debian --user 【ユーザー名】 -- termux-x11 :1 -xstartup xfce4-session
exit
fi
これで、Termuxを立ち上げるときにGUI起動にするかどうかを聞かれる。
yを選択した場合はXfce4セッションが起動する上に、
Android側では開いてるアプリがTermux:X11に勝手に切り替わり、
Termux側ではXfceログアウト時にアプリも終了される。
nなどを選択した場合はそのままCUI側の動作となる。
ちなみに、この自動起動スクリプトはXfce側で「/data/data/com.termux/files/home/.bashrc」から見える。
日本語の設定
…と、自分が英語圏の人間ならここまででいいのだが、やはり日本人は日本語入力までできないとPCとして使えない。
日本語フォントを入れる
まず、標準で日本語フォントすら入っていないので入れる。
以下、Xfce内ターミナルで入力。
# apt install fonts-vlgothic -y
Debian標準かつ自分がよく使ってるVLゴシック系を突っ込む。インストール後は、GUI側でこのフォントを使用するよう設定。
外観のフォント設定とか、Firefoxのデフォルトフォントとか。
日本語入力システムを入れる
Xfce標準設定と同じ感じに使えるようにする。
以下、Xfce内ターミナルで入力。
# apt install uim -y ; apt install uim-mozc mozc-server -y
uim-mozc→uimの順に入れたら変になったので、念の為uimを先に入れてから他を入れている。
その後、入力メソッド(青いサンダーアイコンの方)の設定ダイアログで、「標準の入力方式:ON:Mosc」と設定することで
有効になる。
サウンドの設定
やっぱ、音が出ないとつまらないよね。最低限の設定では、音が一切出ません。
Termux:X11はPulseAudioのクライアントは兼ねてないが、Termux側から音が出せる。
また、proot上のDebianのPulseAudioからでは音を出せない。
というわけで、proot上(つまりXfce上)のPulseAudio出力を、TCP接続でTermux直のPulseAudioに送り、
そこから鳴らすように設定する。というのがメジャーな手法。
Termux側にPulseAudioを入れる
以下、Xfce内ターミナルで入力。
インストール
$ pkg i pulseaudio -y
音声テスト
$ paplay --raw /dev/urandom
(これを実行する前に、音量を下げておくこと!音量がデカいままだと最悪耳やスピーカーを壊します!)
まず、PulseAudioを入れる。通常であれば、インストール後にサウンドが鳴る設定になっているので、
このまま使えるはずなのだが、「動作はするが音が鳴らない」といった場合もある。
後々トラブルが起きたときの原因追求が楽になるので、音声テストはしておこう。
で、この地点でどうあがいても音が鳴らない場合は、default.paの「load-module module-aaudio-sink」のコメントアウトを外して
有効にすると鳴るかもしれない。(手持ちのGalaxyZFold3で確認)
以下、Termux起動直後に入力。
設定変更
$ vim ../usr/etc/pulse/default.pa
#load-module module-aaudio-sink
↓
load-module module-aaudio-sink
Debian側のPulseAudioから音声を送る
Debian側のPulseAudioは、Xfce環境を入れた時に入っているはず。
・Debian側のPulseAudioでサウンドミキシングを行い、TCPネットワークに流す。
・Termux側がTCP接続でそれを受け、音声を流す。
という流れで、Debian・Xfce上のアプリケーションの音声を鳴らせるようにします。
で、自分は送信設定も受信設定も、Termux側の.bashrcに突っ込んでしまうことにしました。
以下、Termux起動直後に入力。
$ vim ~/.bashrc
echo -n "Use GUI?[y/N]:"
read zz
if [ "$zz" = 'y' ] ; then
pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=172.0.0.1 auth-anonymous=1" --exit-idle-time=-1
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity &
proot-distro login debian --user 【ユーザー名】 --env PULSE_SERVER=127.0.0.1 -- termux-x11 :1 -xstartup xfce4-session
exit
fi
これで、Firefoxのようつべの動画の音声が本体スピーカーから鳴ることを確認できました。
ここまでをまとめていっぺんにやるスクリプト
autoinst.txt
にまとめたので、内容を確認の上、以下のコマンドで動かして下さい。
最初に一般ユーザー名を聞かれますので、作成するユーザーアカウント名を入力して下さい。
以降も、パッケージインストール中に一部対話式に聞かれるところがあります。
基本的にそのままEnterキーで進めて大丈夫ですが、
最後のパスワードを入力するところだけはしっかり入れて下さい。
$ curl https://offgao.net/memo/debian13/termux/autoinst.txt >a.sh ; chmod 755 a.sh ; nano a.sh
$ ./a.sh
Unexpected Keyboardのカスタマイズ例
8インチタブレット用、標準キー配列ライク
なるべくPCのJISキーボードの配列に合うようにしたもの。
8インチぐらいのタブレットの縦持ち・横持ちぐらいが丁度いい。GalaxyなFoldのメインディスプレイも含む。
- カーソルキーは単独分離させたいし、vim使うからEscキーも単独化。
- Shift押しながらの記号は、上下スワイプで入力。アルファベットも上スワイプで大文字になる。
最上段は上スワイプがちょっときついので下スワイプにした。
- 「]キー」はちょっといびつな場所に行ったが、直感的な位置にはしてる。
- 右下にある「\_キー」はスペースの問題上除去。
バックスラッシュなら右上のキーで押せるし、「_」は空いてる0キーに持ってきた。
- カーソルの左スワイプで日本語入力ON/OFFをできるような割り当てをした。
なお、数字キー部分もカスタマイズしたかったので数字キー列も入れている。
そのため、設定で数字キーを追加すると二重になっちゃうので注意。
[前へ] [トップページへ]