Sharing Contacts between GNU/Linux Trisquel and Android/Replicant

8 replies [Last post]
Ignacio.Agullo
Offline
Joined: 09/29/2009

Say you want to share your contacts between a computer with GNU/Linux Trisquel and a smartphone with Android/Replicant. In the computer, you use the contacts mainly for e-mail. In the smartphone, you use the contacts mainly for phoning and messaging.

On Android and Replicant you have a preinstalled app for managing contacts - yes, the one named Contacts. This app allows to share and synchronize contacts with a number of Internet services:
-The smartphone manufacturer, for instance Samsung.
-Google.
-A number of other services that grow as you install apps: Signal, Skype, Skype for Business, Teams, Telegram, WhatsApp, Zoom...

However, I happen to not want to share my contacts with an Internet Service. For me, the Contacts information is the most sensible information of all, for it is data about other people. As an alternative, I could set up my own CardDav/CalDav server on a local computer, but sadly the Contacts app doesn't allow to choose a custom server for synchronization. I found a couple of tutorials, named ‘How to configure Caldav/Carddav on Android’ and ‘How do I sync contacts to an Android device via CardDAV?’ that tell me to simply go to Settings and add a account of the CalDav or CardDav type – but nope, my smartphone never offers me that choice. So if you want to have your contacts synchronized yourself, it seems that you need to set up your own server AND create your own app. I am not going that far.

So, if you don’t want to share your contacts data over an Internet service, you have an alternative: Import or export contacts manually. The Contacts app uses the format called Virtual Contact File, or vCard, or VCF. You can export this .vcf file to or from your computer and then import it. This is not automatical, so you have to do it manually every time that there is a change. Annoying, but at least you don't have to set up, configure and update your own synchronization server.

Then, you might come across data exportation issues - exportation might work OK in one direction but badly on the other, with many contacts failing to be imported for unknown reasons - so you are left with a Master device where you can change the data and a Slave device that only gets a copy of it. But if you use both devices daily so you get a chance to edit the data once a day, which is good enough.

And then, you want to have your Contacts data with Photographs. And that is the hardest thing to achieve. At present I don't know how to do that without using an Internet service.

I have been able to do it for years, tough. How? With Contacts in the smartphone side and Icedove on the computer side. Icedove is my choice for Contacts handling and e-mail client. Icedove has the advantage of having the Enigmail extension – at present it even comes preinstalled. By the way, because of distrusting smartphones and hating to type on-screen, I have never used an e-mail client for smartphones – in case of emergency I would use the smartphone’s browser to access a webmail.

So, how do you share contacts between the Contacts app and Icedove? Well, not without some hindrances. The transfer from Android to Icedove has always been faulty - even at present 20% of the contacts from the Android vcf file fail to be imported on the Icedove side. I don’t know whose fault it is, whether the Contacts app exports it badly or Icedove imports it badly. What matters is that the only choice left is transferring contacts from Icedove to Contacts - but Icedove doesn't export photos.

How to get Icedove to export photos then? For several years, there was a way. The Icedove extension MoreFunctionsForAddressbook allowed to export the contacts to vcf format with photos. This feature was said to be experimental, and was certainly faulty - sometimes the photos were not exported at all without even an error message. I discovered that big photographs were never exported - and then, by successive trial and error, I determined that there was a 38,4 Kb size limit for the photos to be exported. And when I adapted the size of the photos, finally everything was right. I would edit the contacts data on Icedove, and after every change I would use the MoreFunctionsForAddressbook extension to export all of the contacts to vcf format, transfer the file to the smartphone, open the Contacts app, delete all of the previous contacts and import the vcf file. Good enough. For many years I managed to use a smartphone with all of my contacts, including 720x720 pixel photographs for many of them (yes, sometimes the quality had to be greatly reduced to make them fit in 38,4 Kb).

Except that the extension MoreFunctionsForAddressbook lost maintenance. The last version works on Icedove 60 (current Icedove version is 115). Now this would be a right time to rant about how Mozilla's policies continually make the extensions obsolete and require from the extension developers a continued effort for the extension to keep working, and how many excellent extensions are lost because of the developers desisting to keep the pace.

At present, there is no way I can share data between the smartphone Contacts app and the computer Icedove application with photos. Exportation fails both ways. From Contacts to Icedove, 20% of the contacts fail to be imported. From Icedove to Contacts, no photos are exported.

I sought for a replacement for MoreFunctionsForAddressbook. I found some add-ons for Thunderbird (Icedove’s extension search does not really work, provides very few results or none, and most of the results are extensions for Abrowser instead of Icedove). I selected three extensions that are said to work with version 115 installed them on Icedove: Addressbook Synchronizer, TbSync and Cardbook, but so far the three of them failed to import both the old vcf file exported by MoreFunctionsForAddressbook and the new vcf file exported by the smartphone’s Contacts app. TbSync fails completely to work – after installation, there is no welcome screen, no way to access it from the menu, and going to the Extension Manager and clicking on its spanner icon as to access its settings causes the Mate session to close.

What I am searching for is a way to share the contacts data, including photos, between the Contacts app from my smartphone and the Icedove app from my computer, without relying on an Internet service. As it seems to be unachievable directly between the two of them, I would take any app capable of successfully exporting the contacts data to both.

I found BirdieSync, software that "Syncs over the air and over USB contacts and calendars" with Thunderbird. You install the BirdieSync app in the smartphones and the BirdieSync tool in the computer, and it supposedly syncs the contacts between them. It can synchronize over USB, which means no Internet service needed, just what I wanted, isn’t it? Pity that on the computer side it only works for "Windows 7, 8 and 10 (32 & 64 bits)".

I sought for Thunderbird/Icedove for Android/Replicant, and I all that I found were two-year-old unfulfilled promises that K-9 would turn into Thunderbird. Still, I installed K-9 but... K-9 requires the connection data for the mail server before allowing to do anything. No, I don’t want to handle my e-mail on my smartphone, I just wanted to see if it managed to export the contacts in a format that Icedove could import successfully. I am not going to establish a connection to my e-mail server just to test the import and export of contacts.

I sought in the Trisquel respository. No trace of Evolution or Empathy, odd. I found Contacts for Gnome and installed and tried it, but it is pretty much useless. I found SyncEvolution and decided to visit its website https://www.syncevolution.org/ ...only to meet a 404 error.

So, no success for now in my search of a Contacts app able to import and export contacts in VCF format. Can you point me to one?

Kind regards,
Ignacio Agulló.

prospero
Offline
Joined: 05/20/2022

Ages ago I exported all contacts from an Android 2 device, in case of irrecoverable failure, and I just noticed that the vcf file says "VERSION:2.1" for each and every contact. So I think I would first have a closer look at the exported vcf files from both sources, and check compatibility: VCF format version may need to be the same if you want export/import to work seamlessly both ways. It is plain text, so you can open them in any text editor and see what they have to tell you.

This has a table comparing property presence in various versions of VCard:
https://en.wikipedia.org/wiki/VCard#Properties

I just tried to import that ancient vcf file into Icedove, and it worked, embedded pictures included. If I try to export it back as VCard, though, I am getting a different file: it has a new "UID" property and no VCard version. But the embedded photos are still there, as Base64 encoded blocks of text.

andyprough
Offline
Joined: 02/12/2015

>"Except that the extension MoreFunctionsForAddressbook lost maintenance. The last version works on Icedove 60 (current Icedove version is 115)."

That extension works in Seamonkey on Trisquel, I just tried it (see attached picture). I had to edit the install.rdf file to get it to install, but once I added a Seamonkey section it installed fine.

MoreFunctionsAddress.png
Ignacio.Agullo
Offline
Joined: 09/29/2009

Thanks everybody for your suggestions. This seems to be the simplest solution, so I am starting by trying this one. I install Seamonkey 2.53.18.1 from tar.bz2, then run it, go to Tools -> Addon manager, click on the gear icon, select from the menu 'Install Add-on from file...', select the file 'morefunctionsforAB-TB3-1.0b8.xpi' and get an error message saying that it is not compatible with this Seamonkey version.

Now I understand the need to edit the install.rdf... all right, I open the xpi file with Engrampa and find the install.rdf file. I open the file with a text editor and find it to XML text. So I need to add a Seamonkey section, but I don't know how to do that. Could you please explain how to add this section? Thanks in advance.
Kind regards,
Ignacio Agulló.

andyprough
Offline
Joined: 02/12/2015

Hi Ignacio, here's my install.rdf file (attached as install.txt) - just change the name to install.rdf and replace yours, or edit yours to look like the Seamonkey section in this one. The Seamonkey section toward the bottom is the only part of the file I changed.

Let me know if you have any trouble with it.

AttachmentSize
install.txt 1.3 KB
Avron

I am a translator!

Offline
Joined: 08/18/2020

I run my own CalDAV/CardDAV server using freedombox on the "Pioneer" that runs entirely with free software. The setup is easy, the device usually works but it can occur that something goes wrong and I need to remove the power, check the microSD card and start it again. In the worst case, it is necessary to reinstall, but since you data are on your devices, it should not be a problem.

I use DAVx (from F-Droid) on Replicant to synchronize contacts and calendar with it. On GNU/Linux, I use Evolution, but it also works with Icedove or other apps. Never had any problem on Replicant or GNU/Linux with this.

Ark74

I am a member!

I am a translator!

Offline
Joined: 07/15/2009

Indeed, there are plenty options to run a caldav/carddav server now days, and since they are mainly text a very low power machine could be enough to have such server running, even a SBC.
I've been using owncloud > nextcloud for several years now, and DAVx is the best companion for such feature, along with Icedove + CardBook.

Cheers!

Ignacio.Agullo
Offline
Joined: 09/29/2009

Sorry for the delay. Today I got into this task, and I made a simple test which OK results. Some more work is required, but the solution from user andyprough works. To recap:

1. Download and install Seamonkey from https://www.seamonkey-project.org/

2. Download the MoreFunctionsForAddressBook extension from https://www.freeshell.de/~kaosmos/morecols-en.html

3. Open the extension xpi file with Engrampa and then open the file install.rdf with a text editor and modify it by adding a Seamonkey section, just as andyprough said above. When you hit save, Engrampa will prompt you about modifying the content of the xpi file, say yes.

4. Install the modified MoreFunctionsForAddressBook extension in Seamonkey.

5. Create an addressbook and add photos to the contacts. It seems many formats are allowed (JPEG, PNG, GIF, WEBP), and many sizes - I have only tested 720x720 jpg photos, and they work OK. As for file size, it is restricted - the extension sets up a default limit of 30 Kb, but you can change it at the Seamonkey's Addressbook window by going to Tools -> MoreFunctionsForAddressbook -> Additional options.

6. Export the addressbook into a vcf file by right-clicking on it and selecting MoreFunctionsForAddressbook -> Export -> As vCard (.vcf).

Now you can import this file from both Android's Contacts app and Icedove's Address Book tab, and the contacts will be imported with photo.

Still, I have trouble with _importing_ my old addressbook, either from the mab and the vcf file. Photos are never imported - not even the _path_ to the photo file, that might be enough as I place the photo files in the same location. About 20% of the contacts are missing. I'll find a workaround, and if I don't, still I can solve it by manually re-entering the missing contacts and selecting their photo files.

What matters is that now Seamonkey+MoreFunctionsForAddressbook allow me to export contacts with photo in a format that both Android's Contacts app and Icedove can import. Thanks, everybody.

Psion
Offline
Joined: 12/29/2023

If you Have to choose between android and a lineageos and grapheneos, anything but android.

By the way, I heard there is a replicant opponent out called divestos, I wonder if its as libre?

They developing it for the google pixel devices though. So... idk.

Just a random bit of info