Framebufferphone on Arch Linux ARM

An Exciting UI Option

my profile picture, me snowshoeing with my parents standing in front of a mountain

 Framebufferphone[0] is a mobile linux UI maintained by Miles Alan, the creator of sxmo,[1] Mepo,[2] and other mobile and desktop linux programs. Framebufferphone is composed of 2 components that work independently of one another, yet work together to provide a minimal mobile environment that takes advantage of the benefits of the framebuffer.

f_web script open with the strings menu to nelect available websites

Why a new UI?

 There are plenty of other UI options to choose from on the Pinephone and other mobile linux devices. Some of the most popular projects include Phosh,[3] Plasma Mobile,[4] sxmo, and Lomiri.[5] Yet even with all these great choices, framebufferphone is able to bring something new to the table. The entire interface is centered around the framebuffer. The core UI, called fbp,[6] is written in Zig.[7] fbp implements a unique virutal keyboard that combines elements of a traditional mobile interface with the power of dmenu-like technology. The keyboard switches between a text input mode, and a strings mode that dynamically adapts to the script or program you are currently running. This allows you to enter complete commands with the tap of one finger. fbp also binds the hardware buttons, traditionally the volume and power buttons, to preform many functions in a similar manner to what is implemented in sxmo.

 The second seperate component that completes the framebufferphone mobile environment are the f_scripts.[8] Each script is written in oilshell and is fully independent of one another. These scripts allow users to easily place calls and texts, adjust audio settings and volume, change network settings, theme their framebuffer, and preform many other vital functions of a linux phone. f_scripts don't even need to be used in combination with fbp, many of them are equally useful on desktop machines.

f_phone script open sending a test text

Porting Process

 Due to all these amazing features, I decided I wanted to port the entire framebufferphone project from it's native platform postmarketOS to my preferred platform, Danctnix Arch Linux ARM.[9] With such limited packaging practice, this was a big learning experience on my part. The danctnix project is structured with different folders in the repo for packages required for each available UI. Only after creating a 'framebufferphone' folder did I realize the scopeof this project. Here I made my first pkgbuild script, systemd service, and patch. I took over maintaining several AUR packages and added several of my own. I learned how to make a split package using the Arch Build System. And to top it all off I ported the metaprogramming script that generates the pkgbuild for easy maintainance. You can see these proposed packages at my danctnix fork,[10] and proposed patches for f_scripts compatability across platforms at the framebufferphone mailing list.[11]

f_rss open checking rss feeds

Daily Driver Status

 I'm not able to use framebufferphone daily yet, even for my light use case. Texting, using email, and checking rss all work great, but there are two main features that are keeping me from making the switch to full time use. Calling is still in progress due to the outdated pinephone call audio script that doesn't route call audio properly or reliably on newer versions of Biktorgj's mostly open modem firmware.[12] The other feature is a broken netsurf-framebuffer installation that I'm trying to debug and use effectively. While w3m works great, I do need to browse the web graphically much of the time due to poorly built websites that I have to use for school or work.

Wrapping Up

 This promising UI is definitely something to keep an eye on, and I plan on continuing to maintain it's port to Arch ARM whether it becomes daily driver ready in the near future or otherwise. framebufferphone's unique two components make it both simple to use and easy to understand. While it might not be an option for everyone, if you use postmarketOS I'd encourage you to give it a try.

[0] sr.ht/~mil/framebufferphone
[1] sxmo.org
[2] mepo.milesalan.com
[3] source.puri.sm/Librem5/phosh
[4] plasma-mobile.org
[5] lomiri.com
[6] git.sr.ht/~mil/fbp
[7] ziglang.org
[8] git.sr.ht/~mil/f_scripts
[9] github.com/dreemurrs-embedded/Pine64-Arch
[10] github.com/hamblingreen/Pine64-Arch
[11] lists.sr.ht/~mil/framebufferphone-devel
[12] github.com/the-modem-distro/pinephone_modem_sdk