- linuxに関する基本的な知識があるソフトウェアエンジニアもしくはヘビーユーザで、Quest 3のlinuxをGUI環境で使いたい人
- apkのインストールとか説明しませんが、Quest 3に入れたやつは、アプリ一覧からカテゴリでUntrusted Sourcesみたいなのを選ぶと出てきます
- termuxの上にlinux distroを載せるのは、遅いのでやりません(下記ベンチマーク参照)。prefixed-rootだろうがシングルユーザだろうがmusl libcだろうが我々なら大丈夫だ!
- linuxアプリのインストールは特記事項ない限り省略します。勝手にpkg installとかして
Summary of SystemBenchmarks Index Score:
single-core | multi-core | |
---|---|---|
Oculus Quest 3 (termux) | 551.4 | 2086.0 |
Oculus Quest 3 (termux + proot(manjaro)) | 254.0 | 1197.9 |
Ryzen 4750G (ubuntu 22.04) | 2181.5 | 18262.5 |
MacBook Pro 16" 2019 (VMware Fusion + ubuntu 22.04) | 684.8 | 3142.1 |
詳細は https://gist.github.com/kazuho/f5e7aec2824167513cbeedd54f65fa46
- TermuxのレポのReleasesから最新のapkを取ってきて入れる
- Termux-x11のレポのActionsから、Build Artifactで最新のtermux-x11.apkを探して入れる
- Termux起動して
$ termux-change-repo
$ pkg upgrade
$ pkg install termux-tools
$ pkg install x11-repo termux-x11-nightly xfce4
$ termux-x11 :1 -xstartup xfce4-session
- AndroidのPhantom Process Killerを止めとかないと、X内でプロセスぱかぱか立ててTermux丸ごと死にます。なので下記を実行 (出典: https://github.com/Termux-Monet/termux-monet?tab=readme-ov-file#phantom-process-killer)
$ adb shell "/system/bin/device_config set_sync_disabled_for_tests persistent"
$ adb shell "/system/bin/device_config put activity_manager max_phantom_processes 2147483647"
$ adb shell settings put global settings_enable_monitor_phantom_procs false
- アプリをTermux-x11に切り替えるとXが起動してるはず
Termux User Repository (TUR)からOSS版入れる
% pkg install tur-repo
% pkg install code-oss
mozcはビルド環境作るのが大変そうなのでanthy。
まず fcitx5 入れて、
% pkg install fcitx5
anthy-unicode.termux.patchあててから
pkg install libtool wget autoconf build-essential make binutils-is-llvm
wget https://gist.githubusercontent.com/kazuho/453311b4fba9b4c987a7edc7fe0ae7e4/raw/e7a8bd967116acbb51fd8b38528c8c22dedb2857/anthy-unicode.termux.patch
git apply anthy-unicode.termux.patch
autoreconf --install
./configure --prefix=$PREFIX && make && make install
fcitx5-anthyはパッチあてる必要なくて
pkg install extra-cmake-modules gettext
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX && make && make install
で、 fcitx5 をコマンドラインから起動すると、/anthy.dicがないっていう。これはanthy-unicode.confを違うところに探しにいってるからなので
% cd $PREFIX/share/anthy-unicode && ln -s ../../etc/anthy-unicode.conf
して、fcitx5 コマンドラインから再実行してうまくいくこと確認。うまくいかないならstrace fcitx5 とかして、どこに何を探しにいってるか確認するとよい。
strace したら以下を見てたので
/com.termux/files/home/.local/share/anthy/anthy-unicode.conf",
/com.termux/files/usr/local/share/anthy/anthy-unicode.conf",
/com.termux/files/usr/share/anthy/anthy-unicode.conf",
anthy dir が anthy-unicode dir になるよう ln -s
する
ln -s $PREFIX/share/anthy-unicode $PREFIX/share/anthy
xfce4 で anthy を gui で設定するために
pkg install fcitx5-configtool fcitx5-gtk3 fcitx5-qt
pkg install xdg-utils # これいる?
xfce4 起動時に dbus が必要なので
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export INPUT_METHOD=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
dbus-run-session termux-x11 :1 -xstartup xfce4-session
pkg install virglrenderer-android
そして、TermuxでXを起動する前に
virgl_test_server_android &
export GALLIUM_DRIVER=virpipe
するようにする。
ベンチマークに使うteapotは pkg install mesa-demos
で入る。ただしそのままでteapot起動すると、必要な画像ファイルがないって言われるので/data/data/com.termux/files/usr/share/mesa-demos/が../dataになるように適当にsymlink貼るなりなんなりしてから実行する必要がある。
cf. termux/termux-packages#15639
まず
% pkg install pulseaudio espeak sox
後2者はテスト用。
次に$PREFIX/etc/pulse/default.pa
を開いてunix socketの設定を
load-module module-native-protocol-unix socket=/data/data/com.termux/files/usr/tmp/pulseserver auth-anonymous=1
に変更。
mkdir -p $PREFIX/etc/pulse/default.pa.d
$PREFIX/etc/pulse/daemon.conf
のexit-idle-time
をアンコメントし-1
に設定。
そしてTermuxで
% pulseaudio --start &
% espeak -w /dev/stdout 'hell world' | PULSE_SERVER=$PREFIX/tmp/pulseserver play -
てやって、サウンドが聞こえるか確認。
聞こえるなら、Xを起動する前に
% pulseaudio --start &
% export PULSE_SERVER=$PREFIX/tmp/pulseserver
が実行されるよう設定し、X再起動。
ここで、termuxをフロントで実行したままtermux-x11に切り替えるとX側でも音がなるはず。termuxの画面が消えると音がなくなる(バックグランド再生はできない)。まあAndroidアプリ同時三面表示できるからいいよね...いいのか?
TUR (termux user repositories)からcode-ossを入れてもいいんだけど、動かないプラグインとか多い(glibc前提のネイティブコード内蔵してたりとか)。MS純正のやつないし。ってことで、以下はubuntuなproot-distroに入れるやりかた。
- vscode公式サイトからdebとってくる
- dpkg -i する。依存関係ないってエラー出る
- apt upgrade。これで依存関係全部入る
% proot-distro login --user USERNAME --shared-tmp ubuntu
してから
% DISPLAY=:1 code --no-sandbox --verbose
で起動。あとはプラグインとか入る。/data/data/com.termux/filesはproot内でも見れるからいいね!
とりあえずこれで日本語入力はできた
変換候補が表示されなかったりするが