Web開発
Tess's Android Wayland Compositor
Tess's Android Wayland Compositor (github.com)
要約
Tess's Android Wayland Compositor (tawc) は、root権限なしでAndroid上でLinuxのCLIおよびグラフィカルプログラムを実行できるプロジェクトです。このシステムは、パフォーマンスの高いPRoot代替であるtawcroot、Waylandコンポジタ、およびUIで構成されており、Linuxディストリビューション(Arch Linux ARMやDebianなど)をAndroidデバイスに展開します。これにより、ネイティブのグラフィックススタックを利用したハードウェアアクセラレーション付きのグラフィカルアプリ実行や、Androidデータとの連携が可能になります。
全文翻訳
Tess's Android Wayland Compositor
tawcは、root権限なしでAndroid上でCLIおよびグラフィカルなLinuxプログラムを実行します。グラフィカルアプリは、スマートフォンのネイティブグラフィックススタックによるハードウェアアクセラレーションを取得します。このプロジェクトは、tawcroot(PRootのパフォーマンスの高い代替)、Waylandコンポジタ、およびそれらを統合するUIで構成されています。このプロジェクトはエージェントによって構築されており、主にClaude Codeと最新のAnthropicモデルを使用しています。
機能
* アプリは、使い慣れたターミナルUIのためにTermuxのウィジェットを埋め込んでいます(Termuxアプリ自体は不要です)。
* グラフィカルアプリがインストールされると、tawcのランチャーメニューから実行できます。
* Linuxアプリはスマートフォンのホーム画面に追加でき、Androidアプリと並んでアプリスイッチャーに表示されます。
* XWaylandが含まれており、ハードウェアアクセラレーション付きX11サポートのために配線されています。
* 組み込みのタスクマネージャーにより、実行中のLinuxプロセスを表示および終了できます。
* andoコマンドとストレージバインドにより、必要に応じてLinuxプログラムがAndroidデータと対話できます。
高レベル設計
* Arch Linux ARMやDebianのような標準的なLinuxディストリビューションがダウンロードされ、展開されます。
* ディストリビューションのネイティブパッケージマネージャーを含むLinuxプログラムは、tawcrootを使用してディストリビューションのrootfsの「内部」で実行されます。
* tawcrootは、rootレスAndroidの制限を克服するためにchrootやその他のシステムコールをエミュレートします(PRootに似ていますが、単一プロセスを使用するためより高速です)。
* SmithayベースのWaylandコンポジタがAndroid統合を提供します(通常のAndroidキーボードからの入力の受け渡しなど)。
* libhybrisにより、glibc Linuxプログラムが標準のAndroidグラフィックスドライバーをロードできます。
* アップストリームのlibhybrisは標準のAndroidでは動作しませんが、私たちのフォークは動作します。
制限事項
* Android自身のメカニズムを超えたLinuxアプリの真のサンドボックス化はありません。単一プロセスの設計のため、tawcrootから脱出される可能性があります。
* デスクトップGLサポートはなく、スマートフォンが提供するグラフィックスAPI(一般的にはGLESとVulkan)のみです。
* ゲームはまだテストまたは最適化されていません。
* パフォーマンスは代替手段より優れていますが、ネイティブではありません。
* 現時点ではarm64の公式ビルドのみです。x86用にビルドできますが、libhybrisのトリックはarmに依存しています。
* Android 10以降が必要です。
* 詳細についてはAGENTS.mdを参照してください。
貢献
PRよりもIssueを優先します。バグレポートや機能リクエストは歓迎しますが、特定のタイムラインで対応できる保証はありません。IssueにLLMで書かれたコンテンツが含まれている場合は、それを明確にマークしてください(理想的にはどのLLMが書いたかを示してください)。常に人間が書いた説明を含めてください。アプリのバージョン、スマートフォン、Androidバージョン、ディストリビューション(該当する場合)を含めてください。
TL;DR、良い例:
Issueタイトル: program foo crashes
tawc v1でPixel 10の標準Android 17を実行していますが、Archを使用しています。pacmanでfoo v1.2をインストールしましたが、起動時にクラッシュします。この問題についてfableに尋ねたところ、次のように言われました。
[CLAUDESLOP] 悪い例:
PRタイトル: [CLAUDESLOP]
[CLAUDESLOP] Code: UNEXPLAINED CLAUDESLOP
ライセンス
deps/ 以外のすべてのコードはMIT(LICENSE.MIT)です。ベンダー依存関係(termux-sharedのextra-keysウィジェット)にはGPLv3コードが一部含まれているため、プロジェクト全体としてはGPLv3(LICENSE)です。アプリにバンドルされているすべてのコンポーネントごとの帰属表示は、アプリ内のSettings → About → Licensesにあります。