Download Desktop TDL


Free and built on open source | Version

Static Badge



About Desktop TDL

Desktop TDL is a lightweight (20 MB), compact, cross-platform Python utility that writes your to-do list directly onto the desktop wallpaper. The python code can be found on the project Github page. It uses Pillow for image composition and a modern, themeable UI built with CustomTkinter (with occasional native dialogs from Tkinter). In the Settings panel you can pick fonts, colors, layout, and padding, select the wallpaper image, and adjust UI scaling and theme. When you click “Write On Desktop,” the app renders a neatly formatted task list and applies it as your wallpaper so your tasks remain visible without getting in the way.

We use Pillow because it gives a direct, Python-native API for opening images, drawing shapes, and rendering TrueType text with minimal boilerplate. Pillow’s ImageDraw and ImageFont primitives make it straightforward to measure text, compute the exact bounding box, and draw both the rectangle and the multi-line text. A general computer-vision toolkit like OpenCV is powerful, but for this use case it adds extra complexity and heavier dependencies without practical benefit. Likewise, CustomTkinter provides modern themed widgets and simple scaling controls that keep the UI compact and pleasant; we only use a few native Tkinter dialogs (color chooser, file dialogs, message boxes) where they make sense.

The .exe file is generated using Nuitka. Nuitka compiles Python code into C, then uses a C compiler to create a native executable, potentially improving performance (up to 2-5x faster in some cases) by producing machine code rather than relying on the Python interpreter, and thus resulting in faster execution compared to tools like PyInstaller. The command used for this project is (on Windows):

python -m nuitka --standalone
--onefile
--windows-console-mode=disable
--windows-icon-from-ico=./assets/checklist.png
--include-data-dir=assets=assets
--enable-plugin=tk-inter
--show-progress
--remove-output
./DesktopTDL.py

Authors

Q & A

(1) Deleted app data folder after setting a desktop wallpaper with TDL

After installation, the app detects your current desktop wallpaper and saves it as the default in its settings (you can change this in the Settings panel). If you delete —/data/settings.json, the app will re-read your current wallpaper — which may already have to-do items on it — and store that image as the new default. When you run the app again, it will place new to-do items on top of the existing ones, which creates a cluttered wallpaper with overlapping text. To restore a clean wallpaper, select the original (clean) image file from the Settings panel. Therefore, DO NOT DELET the app files!

Updates

Version Notes
v 1.0.0 Initial release — includes Settings, History, and Console pages.
v 1.0.1 History and Console textboxes are now read-only for users.
v 1.0.2 Wallpaper selection is now available in the Settings page. Users can choose any desktop wallpaper; the app automatically calculates a suggested TDL font size and outputs the related image information to the Console page. Known issues: (1) optimal text-box and frame padding are not calculated automatically; (2) performance may degrade with very large background images.
v 1.0.3 Last to-do input is now written into the TDL textbox of main page every time the app starts. A "Clear" button is added to instantly empty the to-do textbox. The update also includes changing the wallpaper setting process from saving the output image as a permanent local file to instead saving it as a temporary PNG. This avoids clutter, preserves full image quality, and then directly sets the temporary PNG as the desktop wallpaper.
v 1.0.4 Fix: Windows Defender false positive (Program:Win32/Wacapew.C!ml)
Windows Defender heuristically flagged the packaged EXE as suspicious because the one-file bundle self-extracts at runtime and the app performs system-setting changes and network operations. To prevent false positives we moved risky imports (ctypes.windll, requests) into Windows-only functions (lazy imports), disabled automatic theme downloads at startup, and avoided creating unexpected temp/executable artifacts.
v 1.0.5 "Reset Settings" to default option added. This update also saves the app's history.txt and settings.json files by default in the C:\Users\<user-name>\AppData\Local\Desktop TDL\ folder. Additionally, a "Reset App Data" option has been added to the settings panel, allowing users to completely remove this folder created by the app.
v 1.0.6

DesktopTDL_1.0.6.exe
The settings panel now allows users to view the current desktop wallpaper image. The console page has been enhanced to check for the latest available update and notify users if their version is outdated. Future releases will extend this functionality to include automated updates and an integrated update button.
v1.0.7

DesktopTDL_1.0.7.exe
  • 1. Resolved several stability issues and applied critical bug fixes.
  • 2. Significantly improved startup performance and addressed intermittent connectivity issues.
  • 3. Enhanced backend algorithms for image rendering.
  • 4. Added "line spacing" feature to increase the space between text lines for better readability.
  • 5. Added "font weight" feature for better readability.
  • 6. Added "wrap lenght" feature to break long text lines avoiding to-do list taking over all desktop wallpaper.
  • 7. Enhanced compatibility and performance for Linux Debian environments.
  • 8. Removed the console page to streamline the experience and improve overall speed.
  • 9. Theme switching is now seamless — widget colors update instantly based on the selected theme and appearance mode, powered by a new built-in theme dictionary and optimized rendering algorithms.
  • 10. Introduced multi-language support. Available languages include: Simplified Chinese (简体中文), Traditional Chinese (繁體中文), Indonesian (Bahasa Indonesia), Malay (Bahasa Melayu), Spanish (Español), Korean (한국어), Italian (Italiano), Japanese (日本語), Portuguese (Português), Russian (Русский), Thai (ไทย), Arabic (العربية), Turkish (Türkçe), German (Deutsch), and French (Français).
v 2.0.0
(planned)
The To-Do input textbox will move to a "Write" tab. Items will be auto-converted into CTk.Checkbox widgets in a new "Marked" tab, where users can mark items completed. When an item is completed, its list number will be replaced with a checkmark (✔) on the desktop wallpaper.