Skip to content

Instantly share code, notes, and snippets.

@legokichi
Forked from kazuho/quest3-termux.md
Last active March 11, 2025 07:25
Show Gist options
  • Save legokichi/8c2e9219ede0a5cc207f3e42d8ee5b42 to your computer and use it in GitHub Desktop.
Save legokichi/8c2e9219ede0a5cc207f3e42d8ee5b42 to your computer and use it in GitHub Desktop.
Meta Quest 3のlinuxセットアップ

想定読者

  • linuxに関する基本的な知識があるソフトウェアエンジニアもしくはヘビーユーザで、Quest 3のlinuxをGUI環境で使いたい人
  • apkのインストールとか説明しませんが、Quest 3に入れたやつは、アプリ一覧からカテゴリでUntrusted Sourcesみたいなのを選ぶと出てきます
  • termuxの上にlinux distroを載せるのは、遅いのでやりません。prefixed-rootだろうがシングルユーザだろうがmusl libcだろうが我々なら大丈夫だ!

参考情報

基本セットアップ

  1. FDroid から最新の termux app & termux api を取ってきて入れる
  2. Termux-x11のレポのActionsから、Build Artifactで最新のtermux-x11.apkを探して入れる
  3. Termux起動して
$ termux-change-repo
$ pkg upgrade
$ pkg install termux-tools x11-repo root-repo tur-repo termux-api
$ pkg install termux-x11-nightly xfce4
$ termux-x11 :1 -xstartup xfce4-session
  1. AndroidのPhantom Process Killerを止めとかないと、X内でプロセスぱかぱか立ててTermux丸ごと死にます。なので下記を実行

termux から adb を使うには sidequest とか入れればできる

% pkg install android-tools
$ adb devices
$ 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

出典

  1. アプリをTermux-x11に切り替えるとXが起動してるはず

かな漢字変換 (fcitx5 + anthy)

mozcはビルド環境作るのが大変そう(bazelを構築するのが死ぬほど面倒)なのでanthy。

まず fcitx5 入れて、

% pkg install fcitx5 fcitx5-configtool fcitx5-gtk2 fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt

次にanthy-unicode

anthy-unicode.termux.patchあてて

pkg install git libtool wget autoconf build-essential make binutils-is-llvm
git clone https://github.com/fujiwarat/anthy-unicode.git
cd anthy-unicode
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
git clone https://github.com/fcitx/fcitx5-anthy.git
cd fcitx5-anthy
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX && make && make install

で、 fcitx5 をコマンドラインから起動すると、/anthy.dic がないっていう。これは anthy-unicode.conf を違うところに探しにいってるからなので

% ln -s $PREFIX/etc/anthy-unicode.conf $PREFIX/share/anthy-unicode 
$ ln -s $PREFIX/share/anthy-unicode $PREFIX/share/anthy

して、fcitx5 コマンドラインから再実行してうまくいくこと確認。うまくいかないなら strace fcitx5 2>&1 | grep unicode.conf とかして、どこに何を探しにいってるか確認するとよい。

xfce4 起動時に dbus が必要なので

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
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

fctix 5 configuration アプリで IME に anthy を追加

termux-x11 で ctrl-space を使えるようにする方法 termux/termux-x11#665 (comment) 一秒くらい押しっぱなしにしないとといけない

代わりに shift-space を使ってる

とりあえずこれで日本語入力はできた 変換候補が表示されなかったりするが

GPUアクセラレーション

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
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
pulseaudio --start --verbose &
export PULSE_SERVER=$PREFIX/tmp/pulseserver
export MESA_NO_ERROR=1 MESA_GL_VERSION_OVERRIDE=4.3COMPAT MESA_GLES_VERSION_OVERRIDE=3.2 LIBGL_DRI3_DISABLE=1 
virgl_test_server_android &

trap 'kill $(jobs -p) 2>/dev/null' EXIT
sleep 1
export XDG_RUNTIME_DIR=${TMPDIR}
export DISPLAY=:0
export XDG_CONFIG_DIRS=/data/data/com.termux/files/usr/etc/xdg
export VK_ICD_FILENAMES=/data/data/com.termux/files/usr/share/vulkan/icd.d/wrapper_icd.aarch64.json
export MESA_SHADER_CACHE=512MB
export MESA_SHADER_CACHE_DISABLE=false
export vblank_mode=0
export GALLIUM_DRIVER=virpipe 
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"

サウンド & microphone

まず

% pkg install vim pulseaudio pavucontrol espeak sox

後2者はテスト用。

次に vim $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
load-module module-sles-source

に変更。

mkdir -p $PREFIX/etc/pulse/default.pa.d

vim $PREFIX/etc/pulse/daemon.confexit-idle-time をアンコメントし -1 に設定。

そしてTermuxで

% pulseaudio --start &
% espeak -w /dev/stdout 'hell world' | PULSE_SERVER=$PREFIX/tmp/pulseserver play -
$ pulseaudio --kill

x てやって、サウンドが聞こえるか確認。

聞こえるなら、Xを起動する前に

% pulseaudio --start &
& export PULSE_SERVER=$PREFIX/tmp/pulseserver

が実行されるよう設定し、X再起動。 (export PULSE_SERVER=$PREFIX/tmp/pulseserver is not required)

ここで、termuxをフロントで実行したままtermux-x11に切り替えるとX側でも音がなるはず。

check sound sources & sinks

pacmd list-sources
pacmd list-sinks

termux.api のマイクアクセスを quest の設定アプリで許可する必要る

termux-api は quest3 のマイクをうまく扱えないらしく、 pulseaudio で入力デバイスは認識するが無音になる。 termux 単体で termux-microphone-record が無音になる。

startx.sh

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
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
pulseaudio --start &
export PULSE_SERVER=$PREFIX/tmp/pulseserver
#dbus-run-session termux-x11 :1 -xstartup xfce4-session
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"

firefox

$ pkg install firefoz

firefox でマウスのwheel click でpaste発動させない方法 https://forum.figma.com/archive-21/release-of-middle-mouse-button-paste-text-from-clipboard-33508

ssh

https://hone-choko.com/blogs/t/android-linux-2

$ pkg install openssh

# OpenSSHサーバーの起動
$ sshd

# IP確認
$ pkg install iproute2
$ ip -4 a
## inet 192.168.1.x/24 という表記の192.168.1.xの部分がIPになります

# ユーザー名確認
$ id
## uid=xxxxx(u0_axxxxx) という表記のu0_axxxxxがユーザー名になります

# パスワード設定 これでパスワードを設定します、適当なパスワードを設定してください
$ passwd
ssh [email protected] -p 8022

xfce4

shortcuts

@legokichi
Copy link
Author

/data/data/com.termux/files/usr/share/X11/xkb/symbols/capslock

@legokichi
Copy link
Author

legokichi commented Mar 4, 2025

@legokichi
Copy link
Author

legokichi commented Mar 4, 2025

rec -p | PULSE_SINK=1 play -p

@legokichi
Copy link
Author

logcat で termux-microphone-record したらこれが出た これのせいで無音録音になってる可能性高い

03-06 14:05:41.538     0     0 E msm_cdc_enable_ondemand_supply: either dev or supplies or cdc_vreg is NULL
03-06 14:05:41.538     0     0 E lpass-cdc soc: spf_core_platform:lpass-cdc: lpass_cdc_dmic_clk_enable: dmic power supply enbl failed
03-06 14:05:41.538     0     0 E msm_cdc_enable_ondemand_supply: either dev or supplies or cdc_vreg is NULL
03-06 14:05:41.538     0     0 E lpass-cdc soc: spf_core_platform:lpass-cdc: lpass_cdc_dmic_clk_enable: dmic power supply enbl failed

@legokichi
Copy link
Author

proot-distro login --user legokichi "ubuntu" --shared-tmp -- eval "env DISPLAY=:0 XDG_RUNTIME_DIR=${TMPDIR} brave-browser --no-sandbox"

@legokichi
Copy link
Author

proot-distro login --user legokichi "ubuntu" --shared-tmp -- eval "env DISPLAY=:0 XDG_RUNTIME_DIR=${TMPDIR} code --verbose --no-sandbox"

@legokichi
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment