Jan So7o: I, then, defy.

Omalauncher Z, a fork for the Fold's inner screen

Omalauncher is an Android home screen with the look of Omarchy, and an optional Arch Linux ARM system running under proot beside your phone apps. On a foldable it had one problem I kept running into: the home screen was laid out as two 6-column pages side by side, so on the inner screen a widget could only ever take half the width.

So I forked it as Omalauncher Z: copongcopong/omalauncher, a fork of SimonSchubert/omalauncher, with three changes on main, aimed at the Fold’s inner screen.

I keep coming back to it because it takes Omarchy’s principle seriously: everything is a file you can open. Themes, wallpapers, widgets and the style live in ~/.config, and the Linux side is a real Arch install with pacman and the AUR. Changes like mine are small next to that.

That’s the fork running on the phone. The rails down the left edge, the round buttons on the right and the arrow pad belong to So7o Z Trackpad, a separate app of mine (app.so7o.ztrackpad) that draws its own overlay; Omalauncher runs fine with it uninstalled.

One grid across the screen

The home grid is 12 columns spanning the whole screen. It builds as dev.omalauncher.fold, so it installs next to the Play release, and my widgets lay out the way they do on a desktop: a terminal tile or a Hacker News feed across the full width, square widgets two or three to a row.

The extra-keys bar is a file now

The terminal has a row of extra keys above the soft keyboard, because a phone keyboard has no ctrl, no esc, no arrows. Upstream keeps those keys in a Kotlin list, so changing them means a rebuild. I turned them into keys.toml, watched the file the way the widgets are watched, and the bar redraws when you save it:

height = 36
text = 12
row1 = "esc / - ; home end pgup* pgdn* copy=ctrl+insert paste=shift+insert"
row2 = "tab ctrl alt left up down right ^b=ctrl+b ^a=ctrl+a ^p=ctrl+p"

A row is a line, keys left to right. A key is a name (esc, pgup, f1, [) or a raw evdev code. A trailing * repeats while held. ctrl, alt and shift on their own latch: tap for the next key, long press to lock. label=spec draws something else on the cap, so ctrl+b here is drawn as ^b, and labels take emoji since Android falls back to the system emoji font.

height and text are the bar’s shape in dp and sp, so it can be shorter than upstream’s 40dp rows. A row that doesn’t parse is named on the home screen in the same panel style errors use, and the bar keeps the rows that last read. The whole format is in docs/EXTRA-KEYS.md, and the file’s own header links it, because the first thing I wanted an agent to do with this bar was edit it without me.

One smaller change in the same code: the keyboard button moved from the bottom right of a window to the bottom left.

Source, the keys docs and the rest: https://github.com/copongcopong/omalauncher