A native Todoist client for KDE Plasma, built with Kirigami and Qt Quick.
Website: https://timpalpant.github.io/ktodo/
KTodo is an unofficial client. It is not affiliated with, endorsed by, or supported by Doist, the makers of Todoist. A Todoist account is required.
- Offline-first. Tasks are cached in SQLite and edits are queued locally, so the app stays usable without a connection and replays changes on reconnect.
- Projects, sections and sub-tasks, including sub-projects, with drag and drop to reorder tasks and move them between sections.
- Today, Upcoming, labels and saved filters, with live counts. Filters are
evaluated locally and support boolean queries (
&,|,,,!, parentheses),#project,@label,/section,p1–p4, date terms andassigned to:. - Team projects with assignees, comment threads and per-role permissions.
- Scheduling: due dates, recurring schedules, deadlines and priorities. Natural language ("every Monday", "tomorrow at 9am") is parsed by Todoist.
- Clickable links in descriptions, from Markdown links and bare URLs.
- Plasma integration: KWallet for token storage, KNotifications for reminders, Breeze styling and full translation support.
Download ktodo.flatpak from the
latest release, then:
flatpak install --user ktodo.flatpak
flatpak run io.github.timpalpant.ktodoDownload ktodo-*.pkg.tar.zst from the
latest release, then:
sudo pacman -U ktodo-*.pkg.tar.zstTo build a package from a checkout, before any release exists:
./packaging/build-arch-package.sh # -> dist/*.pkg.tar.zst
sudo pacman -U dist/ktodo-*.pkg.tar.zstThat script uses the release PKGBUILD with its source repointed at the
current commit, so it exercises the same dependency list, build flags and
check() step as the released Arch package. It is what CI and the release
workflow run.
Download ktodo_*.deb from the latest release, then:
sudo apt install ./ktodo_*.debDownload ktodo-*.rpm from the latest release, then:
sudo dnf install ./ktodo-*.rpmRequires Qt 6.8+, KDE Frameworks 6 and kirigami-addons.
cmake -B build -G Ninja
cmake --build build
./build/ktodoOn Arch:
pacman -S --needed qt6-base qt6-declarative qt6-networkauth kirigami \
kirigami-addons ki18n kconfig knotifications kwallet kiconthemes \
kcoreaddons kwindowsystem cmake ninjaInstall the KTodo integration into your Todoist account, then sign in from the app:
Add KTodo to your Todoist account
Access can be revoked at any time from Todoist's Settings → Integrations → Connected apps.
cmake -B build -G Ninja -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build --output-on-failureThe test suite covers the parts with real logic and no GUI or network dependency: the saved-filter evaluator, the due-date helpers, the Todoist color palette and the rich-text renderer. It is headless and touches neither the network nor a Todoist account, so it is safe to run anywhere.
cmake --build build --target all_qmllint # expected to be silent
clang-format -i $(git ls-files '*.cpp' '*.h')A local build picks up KTODO_CLIENT_ID and KTODO_CLIENT_SECRET from a .env
in the source tree at configure time, so a development build needs no -D
flags. This happens only during the build; the application itself never reads
.env, and credentials always come from the environment, ~/.config/ktodorc,
or the values compiled in.
.qmllint.ini disables only UnqualifiedAccess, because the i18n* functions
are injected into the QML context at runtime and cannot be resolved statically.
Every other check stays on, and CI treats warnings as failures.
GPL-3.0-or-later.
KTodo is an unofficial client and is not affiliated with, endorsed by, or supported by Doist, the makers of Todoist.

