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
- A.M.M. Elsayed: Sole architect and lead developer of Desktop TDL. Designed and implemented the desktop app in Python, engineered the Nuitka build pipeline to produce standalone Windows binaries. Created and deployed the project website and maintained the GitHub repository with release artifacts, documentation, and asset management.
- Yee Lin Phang (Eleen): Led macOS validation for Desktop TDL. Executed functional and compatibility tests across multiple macOS versions and hardware profiles. Provided prioritized bug reports and remediation recommendations.
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 |
|
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. |