スマホでタイル型ウィンドウマネージャーを使う?狂った発想ですが、実際に作った人がいます。
Sxmo: Simple X Mobileは、suckless系ソフトウェアの集合体で、Linuxスマホ向けデスクトップ環境の選択肢のひとつです。
起動時はこんな感じです。何もクリックできません。

対応するハードウェアキーを押して、対応する操作を実行します。
複数のAPPを開くと、任意の順序で並べられます。

SXMOの設計思想は、Linuxデスクトップのi3wmやSwayなどのタイル型ウィンドウ環境に似ています。デスクトップのどの部品にも「hack」できます(カスタマイズ可能)。SSHは一等市民です。
使用するプロトコルによって、含まれるソフトウェアは少し異なります。
プロトコルにX11を使う場合、ウィンドウマネージャーはdwm、アプリケーションメニューはdmenu、タッチジェスチャーのデーモンはlisgd、タッチキーボードはsvkbdです。
プロトコルにWaylandを使う場合、ウィンドウマネージャー兼コンポジターはSway、アプリケーションメニューはbemenu、タッチジェスチャーのデーモンはlisgd、タッチキーボードはwvkbdです。
postmarketOS公式サイトが対応機種向けにビルドしているイメージでは、SXMOはWaylandを使用しています。
1. コマンド#
SXMOの作者は、システムメニューにスクリーンショットなどの便利なスクリプトを用意しています。
ただし、システム設定を変更するには、やはりコマンドに頼るほうが便利な場面があります。
postmarketOS Tipsを参照して、SSHと起動時のWifi自動接続を設定してください。
2. 標準のキーバインド#
SXMOの操作方式は、現在主流のスマホとは大きく異なります。Linuxスマホ向けのPhoshやPlasma Mobileともかなり違います。
つまり、SXMOはAPPとのタッチ操作に対応しているものの、タイル型ウィンドウの作法も受け継いでいます。ショートカットキー依存です。現在のスマホには普通キーボードがないので、使えるキーの組み合わせは電源キーと音量キーくらいしか残りません。潔いというか、逃げ場がありません。
標準では、SXMOは以下のキー操作を割り当てています。
音量上キー
1回押すと、現在のアプリケーションのメニューを呼び出します。タッチ操作もできます。音量キーで上下移動し、電源キーで確定することもできます。
2回押すと、全アプリケーションメニューを呼び出します。Configでは明るさ、音量、画面回転などのシステム設定を変更できます。
3回押すと、現在のアプリケーションのスタック方式を変更します。たとえば、ウィンドウの縦並びを横並びに変えられます。標準のタブ式レイアウトのほうがスマホUIには向いています。
音量下キー
- 1回押すとwvkbdまたはsvkbdキーボードを開閉
- 2回押すとdwmウィンドウマネージャーのレイアウトを切り替え
- 3回押すと現在のアプリケーションを終了
電源キー
- 1回押すと画面ロックを開始(SXMOの画面ロックには4つの状態があります。次の節を参照)
- 2回押すと画面ロックの状態を逆方向に切り替え
- 3回押すとfootまたはst端末を開く
続いて、よく使うジェスチャーも覚える必要があります。矢印は指の本数を表します。スマホに丸みのあるベゼルがある場合、端のタッチジェスチャーはかなり発動しにくくなるかもしれません。(SXMO USERGUIDEをもとに描き直し)

3. SXMOのロック状態#
SXMOはstartxを打たないとデスクトップに入れない、というわけではありません。ちゃんとTinyDMというディスプレイマネージャーを使い、起動時にデスクトップへ誘導します。
SXMOの「ロック画面」には4つの状態があります。画面ロックのパスワードにはまだ対応していません。
電源キーを1回押すごとに、状態は下図の順序で切り替わります。電源キーを2回押すと逆方向に切り替わります。(SXMO USERGUIDEをもとに描き直し)

そのため、電源キーを1回押すと画面消灯のロック状態に入り、ロック解除状態に戻るには2回押す必要があります。
Unlocked ロック解除状態。画面は点灯しており、タッチ操作できます → Lock 画面点灯のロック状態。タッチ操作できず、ロック画面は点灯しています → Off 画面消灯のロック状態。タッチ操作できず、ロック画面は消灯しています → Crust スリープモード。スマホを一時停止(suspend)して電力を節約します。
思わずこのmemeを思い出します。
4. SXMO設定ファイルの場所#
SXMOの設定ファイルは主に~/.config/sxmo/にあります。そのうち、ウィンドウマネージャーSwayの設定ファイル~/.config/sxmo/swayは、キーバインドや壁紙などのオプションを設定するために使います。
ウィンドウマネージャーがdwmの場合、キーバインドを変更するにはソースコードを編集する必要があります。再コンパイルしてインストールしてから有効になります。
標準イベントで発火するフックは/usr/share/sxmo/default_hooks/にあり、すべてスクリプトで構成されています。カスタマイズする場合は、~/.config/sxmo/default_hooks/へコピーしてから編集してください。
Swayは設定ファイルを変更するたびに、再読み込みしないと反映されません。設定ファイルを再読み込みするには、端末またはSSHでsway reloadコマンドを実行します。
4.1. 壁紙を変更する#
VIMで~/.config/sxmo/swayを編集し、以下の行を変更して、パスを使いたい画像に向けます:
output * bg /home/user/Pictures/background.png4.2. 透明度とウィンドウ境界を設定する#
透明度とは、APPを透過表示して壁紙が見える状態にすることです。VIMで~/.config/sxmo/swayを編集し、以下の内容を追加します。for_windowでは、どのAPPに透明度を適用するか設定できます。
set $opacity 0.9
for_window [class=".*"] opacity $opacity
for_window [app_id=".*"] opacity $opacity

