An open API service indexing awesome lists of open source software.

https://github.com/ychubachi/org-sync-gtasks

Synchronize Org TODO lists and Google Tasks
https://github.com/ychubachi/org-sync-gtasks

emacs google-tasks org-mode syncronization

Last synced: 11 months ago
JSON representation

Synchronize Org TODO lists and Google Tasks

Awesome Lists containing this project

README

          

[[https://coveralls.io/github/ychubachi/org-sync-gtasks][https://coveralls.io/repos/github/ychubachi/org-sync-gtasks/badge.svg?branch=main]]

* Org Sync GTasks
Synchronize Org TODO lists and Google Tasks.

* Usage
This package provides two entriy points.

1. =org-sync-gtasks-at-point=
2. =org-sync-gtasks-agenda=
3. =org-sync-gtasks-unsync-at-point=

Move your cursor to an Org TODO headline and =M-x org-sync-gtasks-at-point=.
Then a new task is inserted to your default Google Tasks tasklist. Several
properties of a Google Tasks task will be added to the headline. The GTASKS-ID
property is the most important property which enables this command to determin
the headline is already synchronized to the Google Tasks item.

If you edit the task on Google Tasks side, using this command again will pull
the changes to your Org TODO headline. Or if you edit the Org TODO headline and
use this command, the Google Tasks task will be updated.

=M-x org-sync-gtasks-agenda= applies the =org-sync-gtasks-at-point= command to
all your TODO headlines with the GTASKS-ID property in the Org agenda files.
Plus, the new tasks in Google Tasks which are not in Org agend files are
inserted as Org headlines at the current cursor position.

=M-x org-sync-gtasks-unsync-at-point= removes the task from Google Tasks and
clears all Google Tasks properties such as GTASKS-ID.

* Configration

Obtain your credential file in JSON format from Google Developres Console.
Don't forget to give Google Tasks access permitions to it. Put your JSON file
to =~/.gtasks_client_secret.json=. You can change this path by customizing
=org-sync-gtasks-client-secret-json= variable.

The access token is stored in =~/.emacs.d/oauth2.plstore= and encrypted by GnuPG.
If you want to enter the pass phrase in Emacs mini-buffer, set
=epg-pinentry-mode= variable to =loopback=.

#+begin_src emacs-lisp
(setq epg-pinentry-mode 'loopback)
#+end_src

This allows the GPG passphrase to be cached during the Emacs session.

#+begin_src emacs-lisp
(setq plstore-cache-passphrase-for-symmetric-encryption t)
#+end_src

* Installation

If you use [[https://github.com/raxod502/straight.el][straight.el]],

#+begin_src emacs-lisp
(straight-use-package '(org-sync-gtasks :type git :host github
:repo "ychubachi/org-sync-gtasks"))
#+end_src

If you use [[https://github.com/conao3/leaf.el][leaf.el]] with straight,

#+begin_src emacs-lisp
(leaf org-sync-gtasks
:straight (org-sync-gtasks :type git :host github
:repo "ychubachi/org-sync-gtasks"))
#+end_src

* Limitations
- This command can handle only your default tasklist of Google Tasks.