Todoist is a powerful todo-list and task manager. It offers a MacOS Application, which provides a dedicated application that has a quick task adding feature. The only issue is that Todoist doesn't have strong keyboard navigation and shortcuts. Enter todoist-shortcuts which is a browser extension that adds these missing functionalities to the web client. Unfortunately, there is no way to get this extension in the native application...
This project uses nativefier to create a desktop application wrapping the web client. As part of this process, it is possible to inject custom JavaScript to be executed within the newly created application.
This allows us to inject the todoist-shortcuts
source code into the application providing the desktop application with keyboard shortcuts and navigation.
The badge count didn't work (i.e., number of tasks in Today) so additional JavaScript was needed to propagate the count of tasks into the title of the window. With the task count in the title of the window, nativefier
can pick it up and display the application with a proper badge count (and bounce on changes).
Unfortunately, nativefier
has an issue with injecting multiple JavaScript files. As a workaround, we concatenate the JavaScript into one file before injecting it (which fortunately works with the JavaScript we have).
First, you install the dependencies:
npm install
Then, we build the application:
npm run buildApplication
I personally renamed the original application to Todoist-native
so the new application can be moved over to the application directory with no conflicts. I kept the original application as I still like the quick task adding feature. I hid the original application in the tray and prevent any notifications from appearing.
These changes then allow me to use the new application as my main Todoist application while retaining the quick task adding feature of the original application.
- Fork it ( https://github.com/[my-github-username]/todoist-shortcuts-nativefier/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request