July 27, 2021

Nemomobile in July/2021 part two

What’s changed in the last month? Many issues have been fixed. Many hidden bugs have become visible as the user interface became reachable. Most important, crashing of UI and on screen keyboard were fixed.

The frequent restarts of UI were caused probably by incorrect systemd unit.

The biggest issue with on screen keyboard, maliit, was fixed. Its behavior is not perfect, but current status improved current usability by 10 000 percent. The keyboard sometimes stays open even when an application is minimized. Also, it doesn’t work for GTK applications.

That and the working usb-moded makes device the ready for further development with credentials manjaro@192.168.2.15 and 123456. Sometimes it is necessary to unplug and plug the USB cable before its use. I am not sure why.

In general, I consider refactoring and simplification of the code base as very beneficial. The libuser, mapplauncherd aka boosters and invokers, and SSU were removed. Horray! The invoker was handling launching of single instance of application. This must be reworked in libglacierapp yet.

SailfishOS moved from own git.sailfishos.org to github.com/sailfishos. We finally adjusted all PKGBUILD files accordingly.

The first phone call were made. I consider this as a big success even if it was without sound. lso a few text messages were received and sent.

Notifications were fixed. The application which triggered notifications wasn’t starting.

The theme switching was fixed. First, it was necessary to propagate Theme settings to other running application in run time. Second, It was necessary to fix startup of applications. Third, there were many glitches to fix where the Theme.fontColor wasn’t used, but color:"black" was used instead.

One of those issues was visible in maliit keyboard on the screenshot below. This was fixed using Theme.color, but I am not sure about removal of BorderImage. I didn’t notice any significant change of its UI.

Some smaller changes are still in progress. The polishing of glacier-settings could be seen. The glacier-mail prototype was added. The glacier-messages is using a library called telepathy which unifies many instant messaging protocols. It can receive instant messages from jabber. The telepathy-haze allows support for pidgin based instant messaging such as facebook. A Telegram protocol could be also directly integrated into glacier-messages and glacier-contacts.

I have started with glacier-settings-account which currently really doesn’t work. Part of the code base was taken from qmlsettings project. I am not sure how to create settings plugins. This could perhaps be the way to go. Right now I am stacked with DBUS permissions. Additionally, I need to inspect translations options. It seems that plugin doesn’t support translations right now.

Speaking of translations: it started to work after fix of QTranslator use in libglacierapp, storing locale.conf into different folder, and loading of locale from configuration file. In time of writing of blog post was last requirement solved by manually created ~/.xprofile with following content:

test -f $HOME/.config/locale.conf && source $HOME/.config/locale.conf

After that you will find out how many strings are not translated and how many are not wrapped into qsTr() calls.

Previously, I always connected to WiFi via connmanctl command in terminal. In the glacier-settings it wasn’t working. I have added a one line patch which sends passphrase to connman agent. I am not sure how that will work for other scenarios. It will probably not work for connection with PIN. The WPA2 Enterprise will be definitely not working, because the dialog doesn’t support required fields anyway. I am not sure about its behavior when an incorrect password is entered. Nevertheless, it all worked in the tested case.

Bug to start with:

The Nemomobile large number of bugs and and its solving requires different knowledge. I would like to point to somehow well localized issues which moves project forward and could be seen by every future user. First in the row was rendering of folder, which still doesn’t work.

This one is about power off and reboot of the device. It just doesn’t work.

The UI triggers reboot via dbus. The pipeline goes to dsme daemon namely utility.c. The guess is based on following messages in log:

$ journalctl -f
Jul 27 14:55:21 manjaro-arm DSME[3747]: Received introspect request: com.nokia.dsme /com/nokia/dsme/request
Jul 27 14:55:22 manjaro-arm DSME[3747]: privileged user not found

It may be caused by some missing configuration. For example some user group should be added to manjaro user (or maybe wheel group could be used instead). It could be caused by dropping of dependency on sailfish-user-manager. This means that dsme should be adjusted to manjaro somehow. Current solution most probably works correctly for the upstream (sailfishos). Hence, the proposed patch should go to nemo-packaging first. It will be similar to dsme server path change. The change should be designed to be compatible with sailfishos to allow its upstreaming.