This project is an attempt to sync external Calendars like Google calendar with Deepin OS v20 beta Calendar (dde-calendar). Deepin Linux Calendar currently does not have any ability to add external calendars or accounts.
Program currently works only with google calendar and in one direction only Google Cal -> Deepin Cal
More calendars will be added in future.
This program may work with other versions of Deepin as well, however it is tested only against v20 beta.
Project is built using .NET Core C# and uses the Tmds.Dbus nuget package to interact with the linux dbus service.
A one click installer does not exist yet.
Download the latest zip release (or build from code) and extract to some folder
Find and Edit the config.json file as follows
To get Google Client ID and Secret follow the steps below
- Go To https://console.developers.google.com/cloud-resource-manager?organizationId=0&authuser=0
- Click Create Project and give a suitable name (eg Deepin-Calendar-Sync) and click create.
- Open the project and click on the upper left menu (Three lines)
- Select APIs & Services
- Click on Enable APIs and Services
- Search for "Calendar"
- Select Google Calendar API and Click Enable.
- From the left menu select API & Services > Credentials
- Click on Create Credentials
- Select oAuth Client ID
- Click on Configure Consent Screen
- Select External
- Click Create
- A form should open
- Fill in the Application name leave everything else as is
- Click save
- From Left menu select Credentials
- Click Create Credentials
- Select oAuth Client ID
- Select Application Type as Desktop app
- Put Name of the Desktop App as deepin-ext-cal-sync
- Click save
- A dialog containing Client ID and Secret will open
- Copy the Client ID and Secret
- Paste them in the config.json file in the appropriate section
Leave the CalendarId value as primary to sync the primary calendar To sync any other calendar put the appropriate Calendar ID.
To find the correct Calendar ID
- Go to https://calendar.google.com/calendar/r
- Click on Settings
- Open the desired calendar scroll down and copy the calendar id
Execute deepin-ext-cal-sync program either from terminal or by double clicking.
The program will open a browser authentication dialog the very first time its run, for subsequent runs it will run without any user interaction.
Currently the program does not run periodically on its own and needs to be run manually to sync the calendars everytime.
The following are limitations of the system calendar (dde-calendar) in Deepin v20 beta and are not limitations of the sync program.
- dde-calendar does not support descriptions, only supports event title
- dde-calendar does not support attendees
- dde-calendar is unable to show the title in the calendar view if the event is 30 mins or less
-
Deepin OS (v20) : https://www.deepin.org/en/
-
Visual Studio Code: https://code.visualstudio.com/download
-
net core framework 3.0 Currently Tmds.DBus requires netcore 3.0 framework. apt-get install dotnet-runtime-3.0
To regenerate Calendar.DBus.cs file (for newer or older versions of Deepin) execute the following commands from project folder
dotnet tool install -g Tmds.Dbus.Tool
dotnet dbus codegen --service com.deepin.daemon.Calendar
Download/Clone the Deepin-Ext-Cal-Sync folder from github repo
dotnet restore
dotnet build