Native Client for Linux based mobile OS

@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

Just to update this conversation in March 2022 with experience of running kDeltaChat on the Pinephone, with the Arch Arm (danctnix) Phosh distribution, if anyone else wants to try:

  • Cross-compiled libdeltachat (1.75, 19 Feb 2022) as above and installed files by manual copy
  • built kDeltachat natively on PP
  • import backup from deltachat-desktop

Set Environment variables to make more touch-friendly on low power hardware:
QT_WAYLAND_DISABLE_WINDOWDECORATION=1
QT_QUICK_CONTROLS_MOBILE=1
KIRIGAMI_LOWPOWER_HARDWARE=1

Also tested on Plasma Mobile image but segmentation fault encountered when selecting chats in list, (maybe due to incorrect manual installation of libdeltachat.so and deltachat.h), so reverted to Phosh and reinstalled.

  • Startup is quite rapid but loading of lengthy chats takes a few seconds due to the low power hardware. Can me improved by ‘remove messages from server after xx’ option on other clients.
  • Finger scrolling chats is a bit tricky, as touching blocks of text selects them. White space or intervals between messages must be used.
  • Video clips auto-play but apparently without play/stop/seek controls
  • Images crop on right-hand side but can be opened in Image Viewer if tapped.

Overall very usable considering the low power hardware. Thank you for this application!
Happy to help with further testing if beneficial.

1 Like