Native Client for Linux based mobile OS

Over the last few days I’ve been looking for configurations of linux-on-mobile that can work easily with Padfoot. Some documentation has made it to the README, but here’s the outcome:

This is Mobian running Empathy. Chatty is the usual option for mobian, but it’s pidgin-based, so not usable. Its SMS integration is available through empathy as well, though, which is kind of nice.

KDE Neon’s Plasma Mobile + Spacebar looks plausible, but doesn’t “just work”.

I was expecting pmOS to be the best best, but compiling telepathy-padfoot for that platform at-all is very difficult at the moment (musl-based). In any event, it has spacebar, but not empathy.

I haven’t tried Leste yet, but that’s probably the most “telepathy-native” of the various options.

Empathy on mobile is a bit awkward in UI terms - you have to think creatively to set up the account and initiate conversations - but it does work. Spacebar may give a better experience if I can get it working though.

1 Like

@link2xt posted two links into a developer chat, I figured I’d share them here:

That would be options if we decide to go with Qt (and C++).

Small update: looks like for their pre-installed Pine phone variant they will ship only Phosh, to reduce their polishing effort. Plasma Mobile is available for installation, of course.

Hoping to have more time to dedicate to this soon, so I can start contributing to one of the ongoing efforts

1 Like

It is great to see this being worked on. I’ve got my pinephone and I’m just playing and testing all the different OSs out while I wait for all my necessary features and software to congeal :smiley:. Having Delta chat available would be huge.

I’m curious about how Delta chat will work receiving messages in the background when its in the crust low power standby mode.

1 Like

I’ve gone quiet for a while on the telepathy front. This is because I implemented support for images, only to discover that no extant telepathy client will accept them unless I pretend they’re attachments. Grumble grumble ^^.

With July’s Mobian, the pinephone is now very close to everyday usable, so I’m liable to revisit it with another approach sometime soon. Nothing’s ever easy is it?

3 Likes

I made a prototype of Kirigami-based client: https://git.sr.ht/~link2xt/kdeltachat

It is not ready for day-to-day use, but testing on Pinephone and patches that make it work for you are very welcome. I have not set up an issue tracker or mailing list, but you can PM me here, ping me on freenode deltachat channel or send patches directly to the email listed in commit messages.

6 Likes

Hi!
I´m using Delta Chat on Sailfish, and I really love it. Well now native Telegram and Signal clients are in developement and my mind reaches out for them, because they are native Sailfish. But my heart still sticks to DC. It would really, really be great to have DC natively on Sailfish. Nothing more to say.
Thanks for listening, broncheolus.

2 Likes

Which native Sailfish Signal are you talking about? Whisperfish or some other more official one?

Yes, I´m talking about Wisperfish.

1 Like

I don´t think, that there is going to be something official from Signal in the near future.

How did you use DC on SailfishOS? Is there an native app? I’ve missed it out completely.

I guess @broncheolus uses it with Android emulation. There is no native Salifish DC app.

@link2xt I see you have been working on kdeltachat in the last month or so.
I tried building it on my Arch laptop prior to building on Pinephone and ran into a couple of issues:

  1. I installed deltachat-core-rust systemwide (as Pinephone is very resource-constrained I thought this would be simpler). The Deltachat libraries install into /usr/local and the cmake -B build . command for kdeltachat doesn’t find them unless I force install into /usr/bin with ‘sudo cmake --install build --prefix /usr’

  2. The build command for kdeltachat fails with:


/home//build/kdeltachat/eventemitter.cpp: In member function ‘void DcAccountsEventEmitter::processEvent(DcEvent*)’:
/home/build/kdeltachat/eventemitter.cpp:65:14: error: ‘DC_EVENT_ERROR_NETWORK’ was not declared in this scope
   65 |         case DC_EVENT_ERROR_NETWORK:
      |              ^~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/kdeltachat.dir/build.make:252: CMakeFiles/kdeltachat.dir/eventemitter.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:101: CMakeFiles/kdeltachat.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Apologies for putting this in a forum message but i couldn’t work out how to send you a PM.

Side note: building deltachat-core-rust on the Pinephone takes about six hours and requires an 8GB extra swapfile on SDcard…

Side note 2: I was able to build the Electron client deltachat-desktop on PP but the UI is not convenient for portrait screens and some functions, notably ‘Import Backup’ don’t appear to work, probably because of missing libraries for the file dialogs.

This can be fixed by setting PKG_CONFIG_PATH so it finds libdeltachat in /usr/local. Whether it is done for you depends on the distribution, both installing into /usr and configuring paths to search in /usr/local are valid solutions. I am trying not to change the defaults in CMakeLists.txt so package build systems, such as *BSD ports, Gentoo portage, Arch PKGBUILDs that have a “preset” to build cmake packages work out of the box.

This is because of breaking change Connectivity view (instead of spamming the user with error_network when sth fails) by Hocuri · Pull Request #2319 · deltachat/deltachat-core-rust · GitHub merged recently. You need a bit older libdeltachat for now.

np, but there is a PM on the forum, click on your avatar then on the “messages” tab (third from the left) twice, then “New message”.

It’s a sad state of the Rust compiler, hopefully it will be fixed with GCC Rust or some other alternative implementation. Anyway, it’s better to build a package with libdeltachat on your desktop instead. You can also use Nix package manager which already has a package for libdeltachat, see this topic about KDeltaChat:

Thanks!
I’ll try building with deltachat-core-rust 1.55.0

I tried to cross-compile on my desktop for aarch64, but without success, mainly due to unfamiliarity with rust/cargo. I will have to try though, in addition to time, PP storage doesn’t really have space for GB of build files!

1 Like

cross could help for the rust part → building libdeltachat.so.

You can use the core version 1.56, its the newest release. The missing constant / the api change is only on master (which can be thought of as becoming 1.57 someday)

Thank you!
Unfortunately cross fails with an obscure pkg-config-related error in the downloaded docker container, that I see from the Issues tab has baffled others too.

I was able to build kDeltachat on the Desktop system and it looks very promising, quite snappy and with a much more sane storage footprint for an embedded device than the Electron app. As mentioned above, the top new features to work on seem to be Attachments and the ability to open a new conversation. To those I would maybe add support for the system themes like other Qt applications can have.
Still building deltachat-core-rust natively on the Pinephone, it has a while to go yet.

@Simon @link2xt
deltachat-core-rust 1.55.0 eventually built on Pinephone (started before your advice to use 1.56). kDeltaChat built and installed.
PP is running Arch Linux Arm with SXMO Xwindows-based environment.
Here are some comments and observations which I hope will be helpful.

  • Startup is relatively rapid, about 1 second. Message backup imported OK though the file dialog was tricky to use with touch. Some button icons were missing

  • On the portrait screen only the conversation list is seen at first. The two buttons at the top ‘navigate forward’ and ‘navigate back’ don’t show the ‘arrow’ icons that are present on my laptop. I have not found out the reason yet. Maybe linked to the issue highlighted on the project webpage for Debian. But it’s possible to tap on a conversation or the blank buttons to move to messages. It takes a couple of seconds to load a long message thread. Button sizes are OK for touch use. PP screen is 720x1440.

  • qt5-multimedia package is required before the message list can be selected.

  • videos (h264) don’t play. Until gst-libav is installed there are messages about missing Gstreamer plugins. After installation of gst-libav the message with the video is offset to the left so no ‘play’ button is visible. This seems to be caused by the tall narrow window size: on laptop the same effect occurs with a tall narrow window. In landscape mode the play button is just visible and the video can be played.

  • scrolling the message view by touch is tricky because it’s easy to select text in messages if you are not careful to touch only the whitespace parts of the display. Scrolling is a bit jerky- the graphics hardware is only a Mali 400, though it is using the Lima driver.

Hope you find these comments useful.

edit: to make Kirigami pick up the installed system-wide icons for the buttons, it’s necessary to set the following environment variable on PP in ~/.profile with
export XDG_CURRENT_DESKTOP=GNOME

1 Like

Eventually figured out how to use cross to build the deltachat core library on an x86_64 Arch machine. If anyone else wants to test kDeltachat on Pinephone:

$ git clone https://github.com/deltachat/deltachat-core-rust.git
$ cd deltachat-core-rust

$ sudo pacman -S cross

(rather than cargo install cross for some reason probably related to PATH)
$ cross build --target aarch64-unknown-linux-gnu -p deltachat_ffi --release

Plenty of ram/swap on the build machine is needed.

1 Like

This might actually help with python wheel builds. Currently aarch64 builds at dc/master index are built under qemu and it takes several hours, because compiler runs under emulation.

I just tried on Debian, installed with cargo install cross and ran cross build --target aarch64-unknown-linux-gnu -p deltachat_ffi --release with podman, it just works. Built target/aarch64-unknown-linux-gnu/release/libdeltachat.so.

1 Like