Giter Club home page Giter Club logo

taskwarrior-reminders's Introduction

πŸ”” taskwarrior-reminders

Bi-directional replication of Taskwarrior tasks across iOS/macOS devices, by way of iCloud Reminders.

IMPORTANT - This is still experimental and buggy, please back up your data before playing around with it!

demo

How it Works

A process runs in the background on your Mac and responds to changes made in Reminders or Taskwarrior. When a change is detected it is persisted back to the other system. If taskd is configured, tasks are automatically sync'd before and after any changes to Reminders are detected.

Below is a breakdown of how Taskwarrior concepts map to the Reminders data model, along with the current status of bi-directional replication support.

Taskwarrior Reminders Status
Description Title βœ…
Project List βœ…
Priority Priority βœ…
Status Completed βœ…
Due Notification βœ…
Annotations Notes βœ…
Deletion Deletion βœ…
Urgency Sort Order ⚠️
+next Flagged ⚠️
Dependencies Subtasks ⚠️
Tags ??? ❌
Wait ??? ❌
Scheduled ??? ❌
UDA ??? ❌

Legend:

  • βœ… Supported
  • ⚠️ Unsupported (no public API from Apple yet)
  • ❌ Not planned

Installation

You will need the latest XCode and Command Line Tools (for Xcode 11.3) from Apple in order to build and install.

Once you have those, run:

$ make install

If everything went well you should automatically be prompted for permission to access Reminders.

If you see an error like dyld: Library not loaded, go back and install the CLI tools.

NOTE - This won't automatically sync your whole Taskwarrior database to Reminders, only the new items you create after installing. If you're feeling adventurous, run task-reminders-sync --all once to mirror all your tasks and reminders across both systems.

taskd and Multiple Macs

You shouldn't install this on more than one Mac unless you have taskd configured – otherwise tasks will become duplicated.

To prevent task duplication, sync is automatically called when any changes to Reminders are detected. This means your local Taskwarrior snapshot should stay up to date with your other online Macs, and you can safely remove any cron jobs or hooks that previously called task sync for you.

The tool doesn't take an opinion on projects versus tags... but included is an optional hook I find very useful. For Reminders created in the "Life" list it will automatically add a +life tag; and for tasks created under the "life" context it will automatically add them to the "Life" list in reminders. Install with something like:

    ln -s $PWD/on-add.context ~/.task/hooks/on-add.context

(Let me know if you feel strongly the agent should handle this for you automatically.)

If you notice reminders are not propagating back to Taskwarrior, it may be because you have failing hooks. The agent doesn't run in your shell – so if a hook executes task instead of /usr/bin/local/task, this will fail when being run by the agent. Fix this by ensuring your hooks don't require user login.

TODO & Known Issues

[ ] Deleting a Reminder list with outstanding items in it will cause all of the items to be deleted (expected), but the list will be re-created empty. Simply delete it again to completely remove it. [ ] Apple's Reminders API is not efficient about querying recently modified reminders, so CPU usage will sometime spike.

taskwarrior-reminders's People

Contributors

blampe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.