Subscribe to future posts here
Sailfish OS update from Jolla
At Jolla we’ve been working hard on multiple fronts, not least attempting to squash as many of the bugs raised on the forum as we can ready for the next release. We’ve been making good progress, but still have a way to go. So for the newsletter this fortnight we’re going to focus more on some of the exciting activity that you in the community have been working on.
Read on into the next section for Adam Pigg’s update on ports. Beyond that we have Damien’s regular Repository Roundup that summarises all that’s been happening in the repositories over the last two weeks. And of course we finish off with four of the new and updated apps in the Jolla Store that caught our eye. So grab a coffee, and we hope you enjoy the read.
Energy from the Community
It’s been a while since we last looked at the Sailfish OS community ports scene. There have been many updates however and I’m grateful for Adam Pigg (piggz) for his report below on some of the multiple hardware adaptations that he’s been working on.
PinePhone and PinePhone Pro
After quite some time with not much happening, both the PinePhone and PinePhone Pro have improved in the last month or so.
Both have kernel updates to 6.0.x and updates to the latest Mesa, which is specifically good for the PinePhone Pro. I have had feedback of some users actually using the PinePhone as a daily driver using a specific configuration to turn off full suspend, which continues to be the main blocker for the port. After some improvements made to the USB modem handling, I thought that the PinePhone might finally be usable as a daily driver, but, the suspend issues cause weird behaviour after some long periods of time (around an hour) making debugging a painfully long process. It seems that after some long sleeps, some part of the system either takes a long time to activate properly, or sometimes button-release events are missed. Hopefully these are both fixable issues.
On the PinePhone Pro, there have been improvements to USB handling, getting the modem working, all sensors are now working and some initial work on the audio config has been done. I’m hoping the PinePhone Pro has different suspend behaviour and may be more reliable as a daily driver.
PINE64 have shipped me a Keyboard case, so I will soon be ensuring this is working on both devices.
Members of the PinePhone development community have been super-helpful in helping me debug issues, so thanks to all in the Pine Dev Matrix chat!
The configuration files for the PinePhone can be found on GitHub and PinePhone Continuous Integration can be found on GitLab.
If anyone is interested in getting involved, then I’m very keen on getting more contributions! See the info at the end to find out how to get in touch.
F(x)tec Pro¹-X and Volla Phone 22
In the last year, both F(x)tec and Volla have asked me to work on Sailfish OS ports for their latest phones, after supporting the previous generation of devices. Currently both are in a good state, with android support provided by Waydroid and with Volla even offering Sailfish OS as a pre-configured option on their Dual-Boot system. F(x)tec also mentioned the support in their October update.
Unlike the “Native” style of port taken by the PinePhones, these are much more “regular” ports, in that they are like most ports, based on the Hybris system and Android base system. Unlike other ports however, the HADK was not followed! No android source was downloaded, no Hybris patches applied and no long build times endured. Instead, both of these ports are based on the Halium generic Android image. Halium, for those who don’t know, is a collaborative project to unify the Hardware Abstraction Layer for projects which run GNU/Linux on mobile devices with pre-installed Android.
This change in methodology has meant a certain learning curve and a certain amount of creativity (in packaging and image building). I’ve been helped along greatly by notkit and the other Halium devs.
Doing a port this way has certain advantages: there is the rest of the Halium community to assist, if the device already has Halium support then most of the work is done and in reality the only part I’ve had to compile is the kernel with Sailfish-specific features added. And I havn’t even done this locally, all the kernel builds now happen on OBS. I’ve created some packaging which replaces the HADK droid-hal-device packaging.
All Halium-generic software is packaged in a generic project on OBS, and a device-specific OBS project can have as little as five packages, instead of around 16 for a HADK-based port.
As an example of how generic a Halium image can be, the F(x)tec Pro¹-X rootfs was shown to successfully boot on a Samsung Galaxy Z Fold2!
The configuration files for the F(x)tec Pro¹-X can be found on GitHub and for Continuous Integration see GitLab again. Likewise for the Volla Phone 22 the configuration is on GitHub and Continuous Integration scripts on GitLab.
Potential new porters who are interested in taking the Halium route may want to look for devices that are already known to work with Halium. This could be from the Halium project directly, or from the UBPorts project.
You can get in touch with me for any help or advice in the #sailfishos-porters
channel on OFTC, or @adampigg on Telegram and Twitter.
Gathering Winter Fuel
During the last community meeting Thilo Kogge (thigg) raised an interesting question about how best to collect logs on Sailfish OS. The question generated a lot of interesting discussion. Thilo’s original suggestion was to integrate the capability into the operating system, but by the end of the topic focused had turned to Bugger! the excellent bug-report generation tool created by Peter Gantner (nephros). Thilo raised a call to action during the meeting:
If someone could contribute a poc to bugger, I think that would help.
Peter rose to the challenge, and has now integrated log collection support into his Bugger! tool. As Peter explains:
The Bugger! development Team has listened and the latest beta introduces a PoC of a “plug-in” system based on systemd units.
So not only will Bugger! now allow easy collection of system logs, it also supports plugins to allow other apps to register themselves as being a source of logs for potential collection. See the documentation for more info, and join us at the next community meeting to hear more about the details.
Repository roundup
I’ve been thrilled by two recent works this fortnight. One has been mainly driven by flypig and will allow to have the browser follow the ambience major, whether it is a light or a dark ambience. It has been a long time since there has been no development related to ambience integration and having the browser following the scheme is a very nice addition. The second commit that attracted my attention was submitted by pvuorela in voicecall
repository. But I let you read it further…
Telephony stack
-
mobile-broadband-provider-info
, the database of access point configurations, neochapay contributed updates to TMobile networks. -
voicecall
, the opens source part of the calling application, pvuorela reworked the ringtone playback request send by the application on incoming call. He mentioned in the pull request description: “The ringtone playback might depend on the caller contact details”. Is it a step in the direction of per-contact ringtone, or more flexibility to get ringing phone in do-not-disturb mode for specific contacts ? Let’s wait and see… -
sailfish-log-viewer
, an application to fetch logs, slava uploaded hisharbour-logger
application under the main Sailfish OS repositories. This application can be used to gather logs from the telephony stack.
Multimedia
-
opus
, an audio codec for use in low-delay speech and audio communication, mal disabled the unit tests during packaging. -
qtdocgallery
, Qt module to create a gallery, pvuorela adjusted the life-time of the main object to avoid being deleted too late. This was creating issues when disconnecting from tracker. -
alsa-lib
, the library to handle the sound using the ALSA interface, mal updated it to 1.2.8. -
alsa-plugins
, the plugins for ALSA, mal updated it to 1.2.7.1. -
alsa-utils
, CLI tools for ALSA, mal updated it to 1.2.8. -
libsdl
, a multimedia library, mal is working on updating it to 2.26. -
ngfd
, the non graphical feedback daemon handling sound and vibration feedback, thaodan got merged his proposition to improve the documentation for the “custom” sound effect, as supported or not by the hardware.
Network
-
wpa_supplicant
, for accessing WPA and WPA2 protected WiFi networks, thaodan updated it to 2.10, and refactored packaging. -
connman
, the connection manager, LaakkonenJussi synchronised with various upstream commits fixing several security issues, and also updating scripts to use Python 3. LaakkonenJussi submitted a pull request not to timeout VPN that are waiting for credentials.
Browser
-
sailfish-browser
, the browser application itself, flypig changed the timing of tab opening at startup to ensure that tab opened by an external application can be closed also (like for a OAuth process). flypig also proposed to add a new combo box in the setting page to select the preferred colour scheme. -
gecko-dev
, the browser engine, flypig linked the colour scheme to theui.systemUsesDarkTheme
setting, so the ambience can influence the colour scheme. -
sailfish-components-webview
, the high-level QML components exposing a web page, flypig described the new property for colour scheme change, allowing the web pages to follow the ambience light or dark theme. -
qtmozembed
, Qt bindings for the Gecko engine, flypig bindedui.systemUsesDarkTheme
with the new colour scheme property.
Synchronisation
-
buteo-syncfw
, the framework handling synchronisation, pvuorela moved the files used by Buteo, like the profile descriptions or the logs, from.cache/msyncd
to.local/share/system/privileged/msyncd
. -
buteo-sync-plugins
, various plugins including Bluetooth synchronisation, pvuorela used the new data location to avoid the deprecated cache location. -
buteo-syncml
, the SyncML plugin, pvuorela also updated the data location.
Main user interface
-
lipstick
, the home screen code (open source parts), pvuorela got a request in to exposeremoveNotification()
to the public QML API. He also re-added the led blinking for instant messaging notification (notification feedback being under rework).
Low level libraries and utilities
-
ssu
, the seamless software updater, martyone has reworked packaging and moved the vendor data examples with all other examples. rainemak completed the task by making the ‘ssu-vendor-data’ package a dependencies for ‘ssu-ks’. -
tzdata-timed
, the time zone data (and some other geographical data), dsuni updated the script parsing the Wikipedia pages listing the MCC and updated the database. He also updated the unsupported zones. MCC values are used to guess the time zone from the MCC value reported by the modem. -
sailjail-permissions
, the configuration files for system-wide sandbox permissions, flypig added the authorisation for the contact application to talk to the browser application via DBus. This allows the contact application to open and close tabs in the external browser for the import wizard. -
mce
, mode control entity, spiiroin added a DBus method to poll if the device can suspend charging or not. This is useful to show or hide the hysteresis controls. -
mce-dev
, developer portion of mode control entity, spiiroin added a constant to use the DBus query to know if charging can be suspended. -
nemo-qml-plugin-systemsettings
, a QML component used by the Settings app, spiiroin added a QML property exposing the possibility for the device to suspend charging. -
qtbase
, the Qt library, rainemak is proposing a patch to interpret touchevents sent byevdev
as pencil events. -
contactsd
, the daemon handling contacts, pvuorela removed an obsolete usage of a Nokia DBus interface. -
usb-moded
, the USB tracking daemon, neochapay is proposing a pull request adding missing includes. spiiroin addressed an issue for devices which does not report proper charging states (like cable connected…) via the usualpower_supply
device. In that case, he added support for theextcon
subsystem to provide such charging information forusb-moded
. -
mkcal
, storage backend using SQLite for calendar entries, dcaliste fixed the issue with recurring alarms not taking into account exceptions. -
openssl
, utilities and library for cryptography, thaodan updated to 1.1.1s for security fixes and performance improvements.
Documentation
-
docs.sailfishos.org
, website sources, still many changes and additions this fortnight:-
jpwalden created a help article on battery life time, where he’s mentioning community application like
lighthouse
orcrest
. - jovirkku imported the Zen desk article on setting up an Exchange account, on Google accounts and for generic IMAP (or POP) email services.
- jpwalden added an article on setting up Whatsapp in Android App Support.
- flypig got in his proposition on new pages to explain internationalisation procedures.
- jovirkku imported the article describing the people application.
- jpwalden moved the article on the recovery mode from Zen desk.
- jovirkku imported the article describing the browser and the Bluetooth pairing process.
- vigejolla changed the navigation behaviour to open the root page of each node in the hierarchy from the navigation menu and the articles ordering.
- jpwalden imported the article on the file browser.
- jpwalden is also working on the article describing how to manage the storage space.
- tomin1 added instructions to use the SDK on Fedora 37.
-
jpwalden created a help article on battery life time, where he’s mentioning community application like
SDK and building tools
-
automake
, the infamous GNU build system - Makefile generation, mal is upgraded it to 1.16.5 and corrected some issues by adding back the patch to treat 32bit ARM as ‘eabi’ and by updating it. -
libtool
, the Autotools companion to create dynamic libraries, mal is working on an upgrade to 2.4.7. -
amber-web-authorization
, a QML module allowing applications to perform OAuth1 and OAuth2 requests, flypig clarified the documentation on how to declare usage of the package in a spec or yaml file. -
git
, the famous version control, martyone updated it to 2.34.5. See git/README.Git at v2.34.5 · sailfishos-mirror/git · GitHub regarding multimail removal. martyone is also proposing to [backport the patch that restrains--invert-grep
option to ``–grep](https://github.com/sailfishos/git/pull/6) and not
–author` for instance. -
sdk-setup
, part of the Sailfish SDK, martyone modifiedmb2
tool to apply patches with a version control system, if the source are using any. He added a--no-vcs-apply
to disable this. He also added various commits tomb2
tool to make it more strict, like not applying patch in submodules… and finally submitted a last pull request to add aformat-patch
action tomb2
.
Software engineering
-
build-compare
, scripts to find out if the build result differs to a former build, martyone is proposing a patch to remove the release from version and to ignore the version in Perl. -
ruby
, the interpreted scripting language for quick and easy object-oriented programming, martyone added two patches to ensure build reproducibility. -
valgrind
, a tool for finding memory management bugs in programs, flypig added a missing build dependency onautomake
. -
findutils
, GNU find and xargs, martyone reworked patches to avoid patching submodules. -
qtwebkit5
, Qt bindings for the webkit HTML engine, mal silenced some warnings on build. -
nfcd
, the daemon for near field communication, slava linked the daemon and the tools as position independent executables. -
sp-rich-core
, a tool to create core with many information, pvuorela fixed the unit tests.
App roundup
We tackle some important tasks in the app roundup this fortnight. We have a brand new app in the form of PassFish to help you manage your passwords, an ever-important task that can be daunting without a bit of help from your phone. Hydrogen, the feature-rich mobile-oriented Matrix client gets an update from upstream, increasing its functionality and making group-chat more accessible for Sailfish OS users. While messaging feels right at home on a mobile device, printing on the other hand still feels exceptional. I get a kick every time I print a document from my phone. But SeaPrint makes it both elegant and mainstream for Sailfish OS users. And in case that’s too much practicality, we also take a look at the nine new games in the latest release of Patience Deck.
SeaPrint
SeaPrint from Anton Thomasson (attah) continues to receive regular updates, and so I hope you’ll forgive me including it in the newsletter yet again: Anton’s continual work on the app deserves recognition. It remains a supremely useful app, and to the best of my knowledge the only practical way to print documents from a Sailfish OS phone.
Not only does it provide important and useful functionality, it also manages to do it with panache. Printing dialogues on desktop devices are notorious for their complexity. Yet somehow SeaPrint manages to make the process seem straightforwards: select the image or document you want to print, select the printer, change any of the details which appear all on a single page, and print.
The latest update brings the app to version 1.2.3. It now has complete German translations thanks to Se and fixes an issue with inputting page ranges using the advanced option, amongst other things.
As always, it’s available from the Jolla Store, along with its companion Share Plugin that’s available from OpenRepos.
Patience Deck
In the last newsletter we talked about the initiative from Tomi Leppänen (tomin), author of Patience Deck, to collect ideas from the community for how to improve the app. That process is still ongoing, but in the meantime version 1.0 of Patience Deck is now available from the Jolla Store and OpenRepos. This release comes before Tomi started his initiative, but it’s an important release, not least because it adds the final nine card games of the Gnome Aislerot series.
As a result, along with the other 81 games, you can also now play Bakers Dozen, Chessboard, Eagle Wing, Fortress, Golf, Hopscotch, Monte Carlo, Royal East and Spider Three Decks.
Out of that list I found Bakers Dozen to be the most enjoyable, even if thirteen piles of cards in a single row pretty much rules it out from being played in portrait mode on a phone unless you have exceptional eyesight. The magnifier helps of course. Fortress is a ruthless game: it will happily deal a deck with the only available move being one that immediately results in failure. Both Golf and Hopscotch give a feeling of flow, while still being challenges to complete. I particularly enjoyed the mental arithmetic of the latter. Spider Three Deck also requires good eyesight: apparently Tomi added the magnifier specifically to make this game usable. So while I’d happily give some of the games in this set a miss, others are as enjoyable as any out of the ninety. So very much a case of last but not least.
Besides the games themselves, this update brings a host of other nice user interface improvements and customisations. It feels like it deserves the 1.0 moniker.
If you’ve not yet got yourself a copy of Patience Deck it comes highly recommended, and if you try it and aren’t entirely satisfied, don’t forget you can always add your requests to the app’s issue pages on GitHub.
PassFish
PassFish is a brand new app for the Jolla Store and OpenRepos from Andreas Grois (soulsource). It joins a collection of other “stateless” password managers including PassGen, Hasher and PwdHash amongst others. If you want to recap on the options out there, we covered many of them in our review of Password Managers back in January.
Each of these has pros and cons, but one of the most important reasons to choose one over the other will be the algorithm the app supports. If you use an algorithm on one device, you’ll need to have an app that uses the same algorithm on all of your devices. PassFish uses the PasswordMaker Pro approach, so if you’re already using this, then PassFish will be a great way to manager your passwords from your phone.
Another nice feature of PassFish is that it allows you to customise the algorithm, and the inputs to the algorithm, quite carefully. You can choose which parts of the URL to include, and there are a dozen different one-way hash algorithms to choose from. You can also set up multiple profiles for use in different situations.
As a first release PassFish is already feature-rich and practical for daily use, so if you’re already using PasswordMaker, or are looking for a new approach for managing your passwords, then it’s worth your while checking PassFish out.
Hydrogen
Matrix remains one of the most popular group-based secure chat platforms in the open source world. We can see this clearly on the Sailfish IRC channels, where the [m]
suffix — indicating someone connected via a Matrix bridge — can increasingly be found in the username list. Hydrogen is a slightly cut-down Matrix client compared to the standard Element on desktop, but it makes up for this by being well-suited for use on a mobile device. It’s actually a multiplatform WebView-based app, so while it doesn’t feel like a fully-native Sailfish app, it does run locally, without the need for Android App Support, and benefits from upstream development and a much larger userbase than would otherwise be the case.
The Sailfish OS implementation comes from Thilo Kogge (thigg), with this latest release bringing it to version 0.3.4. This update fixes issues with creating and joining rooms: there used to be a nasty dead-end, whereby if you entered the Create or Join pages, there was no way to back out except by reseting your account. I’ve fallen into this trap a few times myself, so am really happy to see it fixed (the difference a single button can make!).
Overall, Hydrogen is a great app, probably the best native Matrix client for Sailfish OS, albeit without as much Sailfish feel to it as some of the other Matrix clients available for the platform. It’s highly recommended and available from both the Jolla Store and OpenRepos, although before you try out the create/join room fix, note that at time of writing, this fix hasn’t yet quite made it into the version on the Jolla Store.
Please feed us your news
We hope you enjoyed this fortnight’s community news. This is your news, and frankly we can’t always keep up with all the exciting stuff happening in the Sailfish community, so please help us out by replying to this post in the forum if you’d like to see something included.
And do also join us at our community meetings on IRC, Matrix and Telegram. It’s a great place to discuss any of the content you see here, ask questions and share your ideas. The next meeting will be on the 8th December.