A small DMS (Dank Material Shell) / Quickshell plugin that displays your Dooit todo stats in the top bar and shows a popout with your todo lists.
It uses a Python backend to fetch todos from Dooit and returns a single JSON payload. The QML plugin executes that script periodically, parses the JSON, and renders:
- a bar pill with a todo counter
- a popout listing:
- todos due today or older
- the 5 oldest todos without a due date
- ✅ Top-bar counter (updates every minute)
- 🧾 Popout view with todo lists
- 🐍 Python script output is JSON-only (safe for
JSON.parse) - 🔧 Works with DMS plugin folder deployment (copy/rsync)
DooitPlugin/
├─ DooitPlugin.qml
├─ DooitPluginSettings.qml # currently not in use
├─ plugin.json # (or your manifest file)
└─ scripts/
└─ dooit-collector.py # Python backend (prints JSON)
- Dank Material Shell / Quickshell (DMS)
- Python 3
- Dooit Python API available for the Python interpreter used by DMS:
dooit.apimust be importable
If you’re using a virtual environment in your repo, make sure the plugin calls the venv’s Python executable.
- Copy the plugin into the DMS plugin directory:
mkdir -p ~/.config/DankMaterialShell/plugins
cp -a DooitPlugin ~/.config/DankMaterialShell/plugins/- Reload plugins:
dms ipc call plugins reload DooitPluginOr restart DMS.
Because DMS may run as a systemd user service with restricted access (and symlinks to repo folders may not work), a reliable workflow is to develop in your repo and sync into the DMS plugin folder:
rsync -a --delete ./DooitPlugin/ ~/.config/DankMaterialShell/plugins/DooitPlugin/ \
&& dms ipc call plugins reload DooitPluginThe QML uses a relative path resolved from the plugin file location:
property string scriptPath: filePath(Qt.resolvedUrl("scripts/dooit-collector.py"))The Python script must print exactly one JSON object on stdout:
{
"todoCount": "7",
"todos": ["Todo A,true,null", "Todo B,true,14/02/2026"],
}This project is licensed under the MIT License.
In short: you are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this software, as long as you include the copyright notice and the license text in any copies or substantial portions of the software. The software is provided “as is”, without warranty of any kind.
