Skip to content
This repository has been archived by the owner on Sep 13, 2022. It is now read-only.
Aleksandr Petrosyan edited this page Oct 4, 2019 · 1 revision

QDolist – a To-Do manager for grown-ups.

Currently, this is a work in progress that barely even scratched the surface of what the project is capable of. However, progress is notable.

It can compile and run and behave as expected on Linux, Windows and Mac OS X (tested on Mojave, and Catalina).

I’ve run it on Android and IOS, however builds on said platforms won’t be coming anytime soon. The main reason is: I don’t have the resources to invest into an Android and IOS developer’s account, even if I was guaranteed to at least get the fees back. There’s a definite itch to create a good to-do list for Desktop Linux, but the only way this itch gets scratched is if somebody notices the program, and creates an issue.

It’s functional, i.e. you can use it, but it’s not bug-free and it still needs a lot of refinement. Currently it only supports two save formats, which are equally inefficient. No cloud sync, unless you specifically sync the files from a folder in Dropbox or Yandex Disk.

Still it’s a normal local to-do list. It works. It aspires to be the unofficial todoist client for Linux. In a perfect world, if I had all the time, didn’t have to work/study, I’d do more, but I can’t afford the time investment.

Features

Natural language parsing.

You can type up a task in a normal fashion and the program will try to reconstruct what you mean. Simply put if you put “Do laundry by tomorrow (mom’s place)” it will recognise by tomorrow as a date, and highlight it for you. Moreover it will recognise the thing in the parentheses as a comment.

Hierarchical tasks management.

You can nest tasks. You won’t be able to toggle a task as done, unless all subtasks thereof are completed. Of course you can reset the tasks all at once. Moreover the natural language parsing comes in handy here too: “Release program: consider pull request, fix issues, sign-off” will create one task with three subtasks, comma separated. Neat! You can also add subtasks by prefixing inputs with a minus sign.

Filtering.

You don’t usually want all of your tasks right in your face. It’s intimidating, so you are less likely to do it. You’ll less rely on your to-do list, which defeats the purpose. So, for now, you can filter tasks according to some simple built-in criteria. You can of course set up custom filters through the command interface. more on that later.

Command-driven interface.

This program is built like a REPL. Not quite GHCI or ipython, but it does have a lot of advantages. So far it only supports some baked-in command completion, but soon I will add support for better intellisense. Why is this a good thing? Well, for one you can set up a complex custom filter, something that you wouldn’t be able to conveniently do using conventional GUI techniques: e.g. “:filter custom (a) > a.done && (a.doneSubTaskCount != a.subTaskCount)” this will filter out all tasks that are done, and have a different number of done subtasks and unfinished subtasks, which by the way should always filter out everything. Of course this requires JavaScript evaluation, so if you don’t care for custom filters, and are paranoid about the security of your data, just turn it off.

GTD principles take precedence over UI conventions.

You’ll notice that you can’t really remove a task. You can, but not in the usual way. A Task is something that’s either done, or not. Deleting a task, in my book, is equivalent to completing it. But they, unlike e.g. Todoist, don’t go away, which is a nice trick. When you’re dealing with a paper To-do list, whenever you finish a task off, you’re not immediately rubbing it off, instead you see a selection of things that you’ve finished. This should fill most people with pride. Getting things done should be a positive in your life, so let’s not nullify the effect of your accomplishments. This is also a better approach than taken by Todoist, since you can achieve the same result by filtering the todo-list by done.

Caveats.

The program hasn’t been thoroughly tested, so use it at your own risk. I do use it to track my own progress, and so far it has only one bug I didn’t manage to fix: whenever you promote a task, instead of the task going away and appearing in the root catalog, it appears in a weird place, and its original supertask still has the width of the original, with a weird empty space left. The main reason why this works in such a bad way, is because there isn’t a native TreeView in QML. The best workaround I’ve found: a recursive ListView doesn’t work out quite as well as I thought. Other than that, the app works fine.

Future plans

Todoist Sync.

Publishing to Linux app Stores.

Tags.

Difficulty tracking a-la Anki.

Sorting tasks in the main view.

Grouping tasks in the main view, using a custom predicate.