Table of Contents:
The core of the Sxmo UI is based on the dwm window manager patched with (among other patches), the multikey patch. This patch allows dwm to recognize rapid successive (e.g. double/triple clicks) button presses to trigger different actions. The three hardware buttons on the Pinephone thus can trigger 9 different actions.
The default button bindings are:
In addition to the button bindings provided through dwm, a custom application called lisgd was developed to provide touchscreen swipe gestures within Sxmo.
Wherein L=left, R=right, D=down, U=up, the default swipe gestures are:
Menus are a central feature of Sxmo and are navigable through using the Pinephone's 3 hardware buttons. Also you can use the touchscreen to tap your selection if you'd like as well. The menus are essentially scripts around a custom patched version of dmenu. Note that while using a menu, dwm's button bindings won't be triggered as these grab's are setup to be mutually exclusive from X's point of view.
The default menu bindings for the Pinephone buttons are:
1. Application-specific context menus
The application-specific context menu (triggered by single tapping the volume raise key) lets you you access application-specific features of the currently focused window. For example while using mpv, the application-specific context menu lets you pause the video, increase/decrease volume, seek, etc. You can reference the sxmo_appmenu.sh script for a full list of functionality.
2. Global system menu (Sys)
The global system menu (triggered by double tapping the volume raise button) lets you launch applications, toggle system preferences and more. This is probably the closest thing to 'homescreen' in traditional phone OS's in that it can be the starting point to access much of the functionality in Sxmo. This menu lets you:
3. Global config menu (Config)
The global config menu is accessible by launching the global system menu aforementioned and selecting Config. This menu let you:
A custom application (sxmo_screenlock) enables you to lock the screen so no tap events are processed. You can activate the screen lock by tapping the volume raise key three times quickly or holding the volume raise key down. You will see the Pinephone's blue LED indicator activate.
The Screenlock has two modes:
While using the Screenlock, only the following bindings apply (and override the default dwm button bindings):
Currently there is a bug wherein the lisgd swipe gestures are still recognized while using the screenlock; however this should be sorted out in a future release.
Calling and texting is fully functional and should work out-of-the-box. Make sure you have the modem killswitch in the enabled position and wait a little bit after booting before trying modem functionality to allow the modem to connect.
To place a new call, you can use the Dialer entry in the global system menu. You will be prompted for a number to dial. Once the call connects, a menu will automatically be launched which let's you:
To view existing text message threads you can use the Texts entry in the global system menu. This menu will let you tail follow a logfile for your conversation with each number. When a new text is sent or received; the tail will automatically be updated with the new text contents.
To compose a new text message, from the Texts entry you will see a Send a Text
entry which first prompt you for a number. After entering the destination number
you will be dropped into a vim-like editor (vis)
to compose your message. Once your message is as you'd like it, exit the editor
:w/or by holding down (or triple clicking) the volume down key.
You will now be taken to a new menu to confirm your message from which
you can edit/send/cancel the message.
Monitoring for Incoming Calls/Texts
A vital feature of a working phone is being able to receive new texts and
pickup calls. This functionality is made possible through a script that
monitors the modem every few seconds for new activity and vibrates the phone
and blinks the green LED when there is an incoming text/call. This
functionality is optional and can be toggled on/off (e.g. to have a 'silent' mode)
via the Config menu. By default the modem monitoring
is set to off. You can tell if modem monitoring is on as there will be an
icon that appears in dwm's bar.
While a call is incoming:
When a new text message comes in:
In the global system menu there are entries for both applications and scripts.
At the time being the primary way to get connected to the Internet in Sxmo
is through wifi. There is a menu entry in the global system menu to connect
to wifi. This is essentially this is just a wrapper to launch
nnmtui. Make sure
the killswitch for Wifi on your Pinephone is in the enabled position.
Mobile data should be manually for now (there is no built in menu to do this); so refer to postmarketos pinephone documentation for that aspect.
You can use the Audio entry in the global system menu to toggle which audio output you want to send sound to.
Note that when in a call, the audio device selected in the global system menu won't automatically apply; rather audio will automatically be initially routed to the earpiece and then changeable through the in call menu. Upon the call ending, audio is always routed back to the headphone jack.
The images that our continuous integration system bakes won't automatically
resize on boot unfortunately; so you may notice you'll quickly run out of disk
space as only a small amount of extra disk space is reserved. To resolve this
you can run from another computer with your the Sxmo SD card mounted as
echo -e "d\n2\nn\np\n\n\n\nw" | fdisk /dev/mmcblk1 resize2fs /dev/mmcblk1p2