Check/uncheck all nested checkboxes when checking/unchecking parent with Control/Command key held down

Use case or problem

I often have nested checkboxes representing things to do, for example:

 - [ ] 10:00 am Focus Block:
    - [ ] Check Email.
    - [ ] Check Slack.
    - [ ] Write technical spec for new widget.
 - [ ] 11:00 am: Trip into town.

I often finish with a top-level checkbox, and want to check off all the child checkboxes all at once, as well as checking off the top-level checkbox. For example, I might have checked email and Slack, and written the technical spec, and want to check them all off as well as the “10:00 am Focus Block” item.

While it works to manually click each of the child tasks and then click on the top-level task to mark them all as done, it would be great if Obsidian supported checking off child tasks more efficiently.

Proposed solution

Holding down the Command key while clicking on the top-level checkbox could automatically check off (or on) all the child checkboxes as well as the clicked-on checkbox. That would save a lot of unnecessary clicking.

With this, I could simply hold down the command (or Control) key, and click on the top-level checkbox to mark it as “done”, along with all the child tasks as well.

Since checkboxes can be nested to any level, I suggest that this would work for all child checkboxes, including checkboxes-within-checkboxes-within-checkboxes. So, for example, if you have the following hierarchy:

- [ ] A
    - [ ] A1
    - [ ] A2
        - [ ] A21
        - [ ] A22
    - [ ] A3
- [ ] B

If you command-clicked on “A”, Obsidian would check off items A, A1, A2, A21, A22, and A3 but not B. Of course, if “A” was already checked, all those items would be unchecked if you command-clicked on them.

Current workaround (optional)

The only way at present is to manually click on each child checkbox, which works but is rather tedious.

7 Likes

This would be very helpful.

Any updates on this?

Was about to post looking for this. Is there any workaround / plugin that can achieve this?

I would like to weigh in that this would be a nice feature to see.

Also would like to voice my support for this! And adding that it would be nice if a parent-level checkbox was automatically checked when all child checkboxes were checked.

1 Like

I propose the following solution, it’s similar how the emacs org mode handles tasks.

If we have, for example, the following task list:

- [ ] A
	- [ ] A1
	- [ ] A2
	- [ ] A3
  • If all the sub-tasks A1, A2, and A3 are checked, the parent task A should be checked automatically.
  • If the parent task A is checked or unchecked, all the sub tasks should be checked or unchecked respectively.