Ubuntu – Ubuntu Touch: Add contact list and calendars

calendarcontactsubuntu-touch

I successfully set up the synchronization of my Owncloud server's default calendar and default contact list based on this askubuntu thread. I have more than one calendar and contact list on my Owncloud server though. I have checked the calendar and contact apps for ways of adding new contact lists and calendars. The contact app does not seem to offer this feature. The calendar app has an option to add new calendars, but when I press the respective button, I am forwarded to the system settings page.
Thanks for your hints in advance!
M.

(my device is a BQ Aquaris E4.5 with Ubuntu 14.10-r21)

Best Answer

I can share this script based on alexandre_payet answers, which will add 1 Contact address-book, and 1 calendar, from your owncloud server, to sync with your phone.

Script

#!/bin/bash
# ---------------------------------------------------------------------------
# Ubuntu Phone - Sync Owncloud Contacts & Calendar Account
# Carddav & Caldav.

# Tested on : Ubuntu-touch vivid - ubuntu-touch/rc-proposed/bq-aquaris.en/vegetahd/
# Last edit : 2015/08/23.
# Author : Romain Fluttaz, boTux.fr, <romain@botux.fr>

# ============= [ Configuration ] ============= #

# --------------- [ OwnCloud ] ---------------- #

# Server and user informations
HTTP_PROTOCOL="https"               # "http" or "https". It's recommended to use an $HTTP_PROTOCOL connection
OWNCLOUD_URL="cloud.domain.com"         # Without the last /.
USERNAME="owncloud-user"            # Your OwnCloud username
PASSWORD="owncloud-password"            # Your OwnCloud password

# Contact addressbooks
CONTACT_ADDRESSBOOK_NAME="contacts"     # Check in the contact setting page.

# Calendar
CALENDAR_NAME="personnel"           # Check in the calendar setting page.

# Database
OC_DATABASE_NAME="owncloud"

# ----------------- [ Phone ] ----------------- #

# Database name :
CONTACT_DB_NAME="Contacts-name"         # Contact addressbook name on the phone
CALENDAR_DB_NAME="Calendar-name"        # Calendar name on the phone

# CRON job
CRON_FREQUENCY="hourly"             # Cronjob frequency. "hourly", "dayly", "weekly", "monthly". See $HTTP_PROTOCOL://help.ubuntu.com/community/CronHowto#Advanced_Crontab

# ============= [ /Configuration ] ============ #

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License at <http://www.gnu.org/licenses/> for
# more details.

# Thanks to : 
# alexandre_payet @ https://askubuntu.com/questions/616081/ubuntu-touch-add-contact-list-and-calendars
# alexandre_payet @ https://askubuntu.com/questions/611761/syncevolution-in-cronjob-to-sync-the-ubuntu-phone-via-caldav-arddav
# alexandre_payet @ https://askubuntu.com/questions/629219/automatically-sync-calendar-on-ubuntu-phone/629728#629728

# Usage: Edit the config section and run the script.

# Revision history:
# 2015-08-22 Adding 1 Contact & 1 Calendar.
# 2015-08-22 Add cronjob support.
# ---------------------------------------------------------------------------

echo "\e[4mAdding OwnCloud account : **$OWNCLOUD_URL**\e[0m"
echo ""

# Contact
echo -e "[\e[0;34m Contacts \e[m] $CONTACT_ADDRESSBOOK_NAME @ $OC_DATABASE_NAME"
syncevolution --create-database backend=evolution-contacts database=$CONTACT_DB_NAME
syncevolution --configure --template webdav username=$USERNAME password=$PASSWORD syncURL=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/ keyring=no target-config@$OC_DATABASE_NAME
syncevolution --configure backend=evolution-contacts database=$CONTACT_DB_NAME @default $CONTACT_DB_NAME
syncevolution --configure database=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/carddav/addressbooks/$USERNAME/$CONTACT_ADDRESSBOOK_NAME backend=carddav target-config@$OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --configure --template SyncEvolution_Client Sync=None syncURL=local://@$OC_DATABASE_NAME username= password= $OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --configure sync=two-way backend=evolution-contacts database=$CONTACT_DB_NAME $OC_DATABASE_NAME $CONTACT_DB_NAME
echo "             +--> $CONTACT_DB_NAME @ local"
syncevolution --sync refresh-from-remote $OC_DATABASE_NAME $CONTACT_DB_NAME
syncevolution --sync slow $OC_DATABASE_NAME $CONTACT_DB_NAME
echo -e "[\e[0;34m Contacts \e[m] +--> Done."
echo ""

# Calendar
echo -e "[\e[33m Calendar \e[m] $CALENDAR_NAME @ $OC_DATABASE_NAME"
syncevolution --create-database backend=evolution-calendar database=$CALENDAR_NAME
syncevolution --configure --template webdav username=$USERNAME password=$PASSWORD syncURL=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/ keyring=no target-config@$OC_DATABASE_NAME
syncevolution --configure backend=evolution-calendar database=$CALENDAR_NAME @default $CALENDAR_NAME
syncevolution --configure database=$HTTP_PROTOCOL://$OWNCLOUD_URL/remote.php/caldav/calendars/$USERNAME/$CALENDAR_DB_NAME backend=caldav target-config@$OC_DATABASE_NAME $CALENDAR_NAME
syncevolution --configure --template SyncEvolution_Client syncURL=local://@$OC_DATABASE_NAME username= password= $OC_DATABASE_NAME $CALENDAR_NAME
syncevolution --configure sync=two-way database=$CALENDAR_NAME $OC_DATABASE_NAME $CALENDAR_NAME
echo "             +--> $CALENDAR_DB_NAME @ local"
syncevolution --sync refresh-from-remote $OC_DATABASE_NAME $CALENDAR_NAME
echo -e "[\e[33m Calendar \e[m] +--> Done."
echo ""

# Cron
echo -e "[\e[0;36m Cron \e[m]"
echo -e "         +--> \e[0;31mGranting SuperUser Access\e[m"
sudo mount /dev/loop0 / -o remount,rw
CRON_LINE="@$CRON_FREQUENCY export DISPLAY=:0.0 && export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35) && /usr/bin/syncevolution $OC_DATABASE_NAME"
(crontab -u phablet -l; echo "$CRON_LINE" ) | crontab -u phablet -
sudo service cron restart
crontab -l | grep "$CRON_LINE"
echo -e "[\e[0;36m Cron \e[m] +--> Added."
echo ""

# First Normal Sync
echo -e "[\e[0;32m Syncronisation \e[m]"
syncevolution $OC_DATABASE_NAME
echo -e "[\e[0;32m Syncronisation \e[m] +--> Done."

# Print information
echo ""
echo ""
echo ""
echo "# To manually sync your accounts, use the command below :"
echo ""
echo -e "                           syncevolution $OC_DATABASE_NAME \e[m"
echo "                                          or"
echo -e "\e[0;34msyncevolution $OC_DATABASE_NAME $CONTACT_DB_NAME\e[m | \e[33msyncevolution $OC_DATABASE_NAME $CALENDAR_NAME\e[m"
echo ""
echo "See 'syncevolution --help' to get more information."

Download ubuntu-touch_owncloud-sync_contact-calendar.sh | Github Gist

Tested on the ubuntu-touch/rc-proposed/bq-aquaris.en/vegetahd channel

How to use

Edit the configuration section, and execute on your ubuntu-phone.

From an Ubuntu desktop

(with : phablet-tools installed from ppa)

  1. Add phablet-shell
    sudo add-apt-repository ppa:phablet-team/tools
    sudo apt-get update
    sudo apt-get install phablet-tools
  2. Activate Developer mode
  3. Download and edit the script :
    wget https://gist.githubusercontent.com/boTux/069b53d8e06bdb9b9c97/raw/a03be09136c5275b2956c512accdad69b30e8074/ubuntu-touch_owncloud-sync_contact-calendar.sh
    gedit ubuntu-touch_owncloud-sync_contact-calendar.sh
    • In the [Configuration] / [OwnCloud] Section
      • Enter your OWNCLOUD_URL, whithout the last /.
      • Enter your USERNAME & PASSWORD.
      • Enter the name of your owncloud address-book & calendar.
    • In the [Configuration] / [Phone] Section
      • Edit CONTACT_DB_NAME & CALENDAR_DB_NAME with names of your choosing.
      • Edit CRON_FREQUENCY to the sync interval you need.
    • Save
  4. Connect your phone via USB and copy the script (via nautilus, for example in Documents/)
  5. Connect via phablet-shell and run the script :
    phablet-shell
    chmod +x Documents/ubuntu-touch_owncloud-sync_contact-calendar.sh
    ./Documents/ubuntu-touch_owncloud-sync_contact-calendar.sh

I'm hoping this can help some of you...

Related Question