my profile picture

Sxmo Customization

Scripting for productivity


After using sxmo[0] daily for more then a year, I've discovered a few configuration and script tweaks that make my setup just a little more efficient, intuitive, and personalized. Many of these tweaks are simple but effective config changes that could be integrated into your workflow, regardless of what platform you use sxmo on. Feel free to email me about your favorite sxmo tweaks using any means listed on my about page. On to the juicy stuff!

A purple pinecone on a dark background, my sway background image on my Pinephone

Sway config changes

I've made a few changes to the default sway[1] user config located in $XDGCONFIGHOME/sxmo/sway. First off, I set my modifier key to 'alt' instead of the pine logo key because it's easier to find on the wvkbd[2] virtual keyboard that sxmo uses on the sway window manager. Since I already know some helpful keyboard shortcuts, I sometimes use them with the virtual keyboard and changing the modifier key to alt is a great way to make those shortcuts a little more intuitive.

My preferred keyboard layout is dvorak, and I've updated my sway config so that the keyboard case input and external keyboards attached via convergence always use dvorak. I also changed the wvkbd layout to a custom one that includes the dvorak layout and all modifier keys I need, but I'll expand on that in another section. Lastly, I started nextcloud's[3] desktop client on login and changed my background image to this stylish Pine64 logo[4] I found on the forum.

my custom mobile dvorak keyboard open browsing the archwiki on firefox

wvkbd layout

On my old android phone, I used a dvorak layout on the virtual keyboard to help me memorize the key layout for touch typing. After using sxmo on my pinephone for more then a year, I decided to return to the mobile dvorak experience by customizing my wvkbd layout. By creating new keymap and layout files, I was able to add all the keys I use on one screen without the need to flip back and forth between key sets. These special keys include escape, delete, control, alt, tab, caps lock, tilde, brackets, and more. I added all this without increasing the height of the keyboard from the default wvkbd-mobintl layout. One of my favorite touches is that by placing the tilde and slash keys next to each other, I can reference my home directory in the terminal with two quick taps.

Custom gestures

Lisgd[5] is the program that allows for gestures in sxmo, and after using the default gestures for a while I spiced up my workflow by binding gestures to functions I found myself preforming frequently. By customizing two hooks, inputhandler and lisgdstart, I was able to create new gestures and bind them to commands. For example, in lisgdstart I let lisgd recognize when I swiped to the top right corner. Then in inputhandler I bound that swipe to open firefox, my browser of choice. This is a fantastic example of a function only easily achieved by a linux phone.

There were a few default gestures that I didn't use often, namely turning off the screen by swiping from the bottom left corner and opening the script menu by swiping from the top right corner. I bound these to open my keyboard and todo list in the termial, and open the mepo[6] map program and place a pin at that day's nearest geohash.[7] Lastly, because I'm constantly opening the terminal, I bound a gesture to open the keyboard and terminal by swiping up with two fingers anywhere on the screen. Together, these customizations have made taking a quick note or surfing the web faster and simpler on my sxmo installation.

firefox open with tridactyl listing open tabs, next to libreoffice with a document open tweaked for small screens

Other Pinephone Tweaks

While these tweaks aren't quite sxmo specific, I would still like to document them because I find them extra useful. After migrating away from the chromium-based qutebrowser,[8] I missed my browser's vim keybindings. My justification for this is that screen real-estate is priceless when doing online schoolwork and a large tab bar or search bar taking up space can make working online slower and more painful. Pulling up a keyboard to quickly search for something on Mojeek,[9] when I'd have to use the keyboard anyway, it neatly tucks away and the entire window is just the content I want to view. For this I use Tridactyl,[10] a Firefox addon that provides vim-like keybindings.

To automatically start the Nextcloud desktop client on sxmo, I added an 'exec nextcloud' line to my sway config. However after every user login I'd need to open firefox and log in to my nextcloud hosting provider to authorize the desktop client to sync files. While not a perfect solution for me yet, installing gnome-keyring and adding my nextcloud credentials there makes the login process a bit more seamless. By default, the nextcloud logo shows in the top right corner of the swaybar allowing easy access to nextcloud tools from anywhere on sxmo with one tap. Very convenient!

The LibreOffice[11] software works for my document editing needs for school, and running it on my Pinephone allows me to use the device full time as a daily driver device. To make LibreOffice more usable, I once again increased screen real-estate by hiding every available toolbar and using the menu bar at the top to format documents, etc. I also enable the web view so that text extends to the corners of the screen rather then the normal view. Keyboard shortcuts also help with formatting since I usually use LibreOffice with the keyboard attachment or in convergence. To make LibreOffice feel a bit more familiar I use the vibreoffice[12] addon to add vi keybindings to my fovorite Free office software.

Wrapping Up

I hope these tweaks might be useful to any sxmo users out there, or convince you to give sxmo a try. I've been enjoying it for more than a year as my daily driver phone-computer and want to display the extensibility of the UI. I have a long todo list of articles that I've started to work through on my week vacation, so there are likely more blog posts coming in the near future. Happy 2023!