携帯電話向けLinuxタイル型ウィンドウマネージャー Sxmo
(sxmo.org)- Sxmoは、Linux携帯電話やその他のモバイル機器でシンプルなプログラムとシェルスクリプトを組み合わせ、Unix哲学に沿ったUIを作るミニマル環境
- メニューベースのインターフェースとタイル型ウィンドウマネージャーを併用し、swayのような構成の上でWaylandとレガシーXorgの両方をサポート
- タッチ・ジェスチャー・ハードウェアボタン操作を提供し、アクティブなCLIまたはGUIアプリに応じて変わるコンテキストメニューで小さな画面の使い勝手を補う
- モデム、通話、SMS、通知の読み上げ、バッテリー駆動機器向けの軽量化といったモバイル機能を含み、SSHでメニューへのアクセスやSMS送信も可能
- 通話・SMS・ジェスチャー・物理ボタンをユーザースクリプトに結び付けられるため、閉じたアプリエコシステムよりも自分で直して使うLinux的な利用に近い
Sxmoが目指すモバイルLinux環境
- SxmoはLinuxモバイル機器向けのミニマル環境であり、「minimal, mobile, hackable」を掲げている
- 古いAndroidスマートフォンやタブレットも少しの設定で動作させることができ、例としてOnePlus 6やPoco F1が含まれる
- 対応機種情報はdevice profileで確認でき、初めて使うユーザーはgetting started guideを参考にできる
操作方法とカスタマイズ
- UIはシンプルなメニューベースのインターフェースとタイル型ウィンドウマネージャーを併用する
- 例としてswayを使用できる
- ツール同士は相互に連携可能で、簡単に置き換えられる構成を目指している
- WaylandとレガシーXorgの両方をサポートする
- モバイル入力方式は小さな画面と物理ボタンの使用を前提としている
- タッチとジェスチャーをサポートする
- ハードウェアボタンでメニューを操作できる
- アクティブなアプリケーションがCLIかGUIかによって、コミュニティベースのコンテキストメニューが変わる
- モバイルLinux機能にはモデム・通話・SMS・通知まで含まれる
- 通知やSMSを読める
- バッテリー駆動機器と小さな画面に合わせた軽量化が含まれる
- SSHを中核的な利用方法としてサポートし、SSHですべてのメニューにアクセスできる
- vis、emacs、vimのようなテキストエディタを使ってSSH経由でSMSを送信できる
- ハックしやすさのため、さまざまな動作をシェルスクリプトでつなげられる
- 電話やSMSイベントでユーザー定義スクリプトを実行できる
- lisgdを使ってジェスチャーにスクリプトをバインドできる
- 端末の物理ボタンのシングル・ダブル・トリプルクリックにスクリプトを割り当てられる
- モデムログ、連絡先リスト、SMSテキストはプレーンテキストで保存される
- アプリのエコシステムは閉じた構造ではなく、デスクトップで使うFOSSアプリをモバイルでも利用できる
- Alpine LinuxやpostmarketOSのようなモバイル最適化Linuxディストリビューションで動作する
- スマートフォンでターミナルベースのアプリケーションを使える
1件のコメント
Hacker Newsでの意見
PinePhoneで試したインターフェースの中では、sxmoが断然いちばん良かった
普段からsuckless系をよく使うほうではなく、そういうソフトウェアは尊重しているものの、EmacsやKDEのような機能の多いものにより惹かれる。それでもsxmoはKDEやPhoshよりずっとキビキビしていて、発見しにくさという壁さえ越えれば、かなり機能的で直感的。megiが作った良いチートシートもあった気がする
ただ、KDEは主要アプリをモバイルフレンドリーなフレームワークで作り直すことにしたので、アプリプラットフォームとしてどれほど現実的なのかは分からない。今のところ深掘りできるものは多くなく、今後数年もそうであり続ける可能性が高い。おすすめを見て、sxmoも一度試してみようと思う
ほかのデスクトップ環境も試したが、結局sxmo/swmoに落ち着いた。構成要素を自分で組み合わせて制御できるという哲学が気に入ったし、ノートPCからSSHでスマートフォンを操作できる点も大きかった。すでにSwayには慣れていて、使い始めた当時のPhoshとKDEにはかなり致命的な問題があった
ただしsxmoは常に深刻なほどバグが多かった。再起動するまで壊れたままになる競合状態が非常に多く、ロック解除にも電源ボタンを1回、2回、3回押したり、長押ししてから押し直したりする必要があるなど、スリープ状態や直前の操作によって挙動がまちまちだった。状態やモードの変更も画面に反映されるまでほぼ1秒かかり、意外に大きなストレスになる
あるミューテックスの状態がこじれると、LEDの点滅を制御しようとする新しいプロセスが延々と増え続け、最終的には電源ボタンの長押しすら効かず、バッテリーを抜かなければならないこともあった
RustがCより優れているという話では、メモリ安全性とより良いデータモデルによって特定のバグの種類がなくなると言われるが、sxmoはかなりの部分がシェルスクリプトで実装されており、大規模設計の観点ではCよりはるかに厳しい。適切な基本コンポーネントがより少なく、その限界がそのまま表れている
システム全体は、互いの存在を見て見ぬふりをする部品の寄せ集めに近く、相互に協調していれば、はるかに安定した結果を出せたはずだ。見た目には問題なさそうでも完全に正しく実装されていない場合があり、時には設計自体が過度に複雑で方向を誤っている
この6か月で大きく変わったとは思えないので、sxmoユーザーに挑戦してみたい。システムトレイの時計表示を変える方法と、最大55秒遅れて更新されるのではなく、正確な時刻に更新されるようにする方法を探してみるといい。この過程では、55秒タイマーがキャッシュ値を設定し、ステータスバーがその値を取得するなど、いくつもの別システムを経由することになり、ディスク上の少なくとも3か所ほどを探し回ることになる。
ripgrepのようなツールが必要になるだろうし、結局ステータスバーのコマンドに単にdate +'%H:%M'を入れて、それをdate +'%-I:%M %P'に変えればよかったのでは、と思うはずだ機能面でも、Androidなら普通にできることがまったくできなかったり、Phoshではできることも滑らかに動かなかったりすることがある。その代わり、何かを動かす方法さえ見つければ、はるかにうまくスクリプト化できる。自分のワークフローはほかのどのOSよりも快適にできたが、その分かなり多くのスクリプトを書いた
時間が経つにつれて直った問題もあれば新しく生まれた問題もあるが、全体的な実際の品質は依然として低い。それでも使い続けているので、もしかすると自分はマゾヒストなのかもしれない
結論として、sxmo/swmoを勧められる人は実際には一人も思い浮かばない。ただ、勧めるとしたら、すでにデスクトップでタイリングウィンドウマネージャーを使っていて、スマートフォン自体にはあまり関心がない人だろう
ホームページに45分の発表ではなく1〜2分のデモ動画があれば、コンセプトをはるかに明確に伝えられそう
気に入った。すべてがシェルスクリプトでつながっているので好みは分かれるだろうが、スマートフォンUIを素早くいじれる点が良い
通勤中にPinePhone本体でアラーム時計のスクリプトを書いたので、公開しなければならない。深い省電力状態からアラーム直前に起きて、アラームを鳴らす仕組みだ
RTCウェイクアップを設定するアラーム時計のような機能はまだかなり欠けているが、全体としては素晴らしいシステムで、近いうちにまた使ってハックしてみたい
FOSDEMに行き、スマートフォン上のLinuxに関心があるなら、開発者ルームのスケジュール [0] と関連ブース [1] を確認するとよい
[0]: https://fosdem.org/2024/schedule/track/foss-on-mobile-device...
[1]: https://fosdem.org/2024/stands/
「Android端末で動くカーネルは、コミュニティが保守できないほど大きく改変されている」という意見には同意しにくい
AndroidはメインラインLinuxカーネルでも動作する。コミュニティがすでにメインラインカーネルを保守できているなら、Android共通カーネルに含まれる210個のパッチシリーズが手に負えないレベルだとは思えない。このためにAndroidの価値をすべて捨てるのは、ノミを取ろうとして家を焼くようなものだ
Androidにはマルチウィンドウ対応があるので、誰かがAndroid向けのタイリングウィンドウマネージャーを実装するのも十分合理的に見える
これを一般的な Intel/AMD サーバー上で実行して、xrdp/nx セッションとして使えるのか気になる
社会的な互換性と良いカメラが必要。i3 も使ってみたが、物理キーボードなしで使うのは難しかった
pinephone-sway-poc: https://github.com/Dejvino/pinephone-sway-poc#components
rpm-ostree は今では OCI コンテナイメージをホストイメージとして使うことをサポートしているので、OS のアップグレードが簡単で、エラーにも強くなる。別のブートメニュー項目を選べば、以前の状態、つまりカーネル +
/etcオーバーレイ + ルートパーティション + パッケージへ戻せる"Using OSTree Native Containers as Node Base Images" (2023) https://www.opensourcerers.org/2023/06/16/using-ostree-nativ...
Sway 上の SXMO のスタイルを変えたいなら、例えばメニュー項目を大きくして指で押しやすくしたり、1 行により多くのテキストが入るように細めのフォントへ変えたり、見た目を調整したりするには、このガイドが役に立つ: https://porkyofthepine.org/blog/rice_sxmo_sway.html
スマホで実際にうまく動くディスプレイマネージャーがあればずっと良さそうで、これはその方向へ進む助けになるかもしれない
SXMO について見たものはどれも、美観や使いやすさよりもストールマン的な自由を重視する首ひげハッカー向けという印象を受ける
Google アプリを必ず動かす必要はない、という点は良い
それでも、いくつかの重要な銀行アプリやホームオートメーションアプリのように、あまり気に入ってはいないが必要なアプリにアクセスできると本当に助かりそう
Sxmo は名前に反して X の代わりに Wayland で実行できるため、Waydroid をサポートしている
個人的には Waydroid を動かすことに成功していないが、初期設定に必要な大容量ダウンロードのせいでさらに難しかった。とはいえ、そこまで熱心に試したわけではなく、オンラインには成功した人たちの動画もある
[1]: https://waydro.id/
[2]: https://tilvids.com/w/2b2f3a24-ae23-458e-a0fd-2f24a185a11b
PmOS には 2 種類の SXMO バリエーションがあるようだ
sxmo-de-dwm: SXMO ベースで、dwm 上で実行される Simple Mobile モバイル環境sxmo-de-sway: SXMO ベースで、sway 上で実行される Simple Mobile モバイル環境SXMO に新しく何が追加されたのか気になる
2021 年以降追えていないので、今は安定して動かせるスマホがあるのか知りたい
この端末で使っている人を何人か見たし、最近の PinePhone 関連スレッドでも標準の Plasma の良い代替として何度も言及されていた