Skip to main content

A CLI todo list that renders as your desktop wallpaper

Project description

Todo-Wallpaper

A simple interactive todo list that appears as your Linux desktop wallpaper.

Features

  • 📝 Manage todos via simple CLI commands
  • 🖼️ Live wallpaper rendering with minimalist design
  • 🚀 Automatic startup on login (via systemd)
  • 🎨 Clean, readable formatting with blue accent

Architecture

todo-wallpaper/
├── todos.json              # Todo storage (JSON)
├── render.py               # Wallpaper renderer (Pillow)
├── todo.py                 # CLI interface
├── todo                    # Shell wrapper for the global command
├── watch.py                # File watcher (optional daemon)
├── init.py                 # One-command setup

└── wallpaper.png           # Generated wallpaper

Installation

Prerequisites

Ensure you have Python 3 installed:

python3 --version  # Should be 3.7+

Quick Setup (One Command)

cd ~/projects/random/todo-wallpaper
python3 init.py

This will:

  1. ✓ Check and install Python dependencies (Pillow, watchdog)
  2. ✓ Verify system tools (feh, fonts)
  3. ✓ Generate your first wallpaper
  4. ✓ Install the todo command into ~/.local/bin
  5. ✓ Enable automatic startup on login via systemd

Install via pip (recommended)

Install from PyPI with pip:

pip install todo-wallpaper

After install, run the packaged setup step to enable autostart and install the command wrapper:

todo init

Install via Homebrew (macOS / Linuxbrew)

You can create a Homebrew tap or formula that installs the package; we recommend using the PyPI wheel in the formula. Example (once tap exists):

brew install Yash-Thio/tap/todo-wallpaper

Convenience installer (curl|bash)

If you prefer a single-line installer, you can use the hosted install.sh which wraps a pip install:

curl -sSL https://raw.githubusercontent.com/Yash-Thio/todo-wallpaper/main/install.sh | bash

This script is a thin convenience wrapper around pip install. It supports --dry-run and --system flags.

Manual Setup (advanced)

If you prefer to set up manually from source:

# Install dependencies
pip install Pillow watchdog

# Install system tools
sudo apt install feh fonts-dejavu

# Generate initial wallpaper
python3 render.py

# Make sure ~/.local/bin is on PATH
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# Enable autostart (Linux systemd)
mkdir -p ~/.config/systemd/user
cp todo-wallpaper-init.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable todo-wallpaper-init.service

Usage

Adding Todos

todo add "Buy groceries"
todo add "Complete project"

The wallpaper will automatically render and update your desktop.

Listing Todos

todo list

Output:

1: Buy groceries
2: Complete project

Removing Todos

todo remove 1  # Remove first todo
todo remove 2  # Remove second todo

Get Help

todo

Set Up Autostart

todo init

Workflow Examples

Daily Routine

# Start your day
todo add "Review emails"
todo add "Team standup"
todo add "Code review"

# Check what's on your plate
todo list

# Mark items as done
todo remove 1  # ✓ emails done
todo remove 1  # ✓ standup done

Files Explained

File Purpose
todos.json JSON file storing your todo list
render.py Generates wallpaper PNG from todos.json
todo.py CLI tool to add/remove/list todos
todo Shell wrapper for the todo command

| init.py | One-command installation + autostart setup | | wallpaper.png | Generated wallpaper image |

Customization

Colors

Edit render.py:

BACKGROUND = (20, 20, 30)      # Dark blue-gray
TEXT = (240, 240, 240)         # Light white
ACCENT = (120, 200, 255)       # Light blue

Font Size

Edit render.py:

title_font = ImageFont.truetype(..., 54)    # Title (TODO)
font = ImageFont.truetype(..., 36)          # Items

Wallpaper Dimensions

Edit render.py:

WIDTH = 1920
HEIGHT = 1080

Font Path

If you have a different font installed, update render.py:

font = ImageFont.truetype("/path/to/font.ttf", 36)

Find available fonts on Linux:

fc-list | grep -i "font-name"

Troubleshooting

Dependencies missing after todo init

If you see errors about missing tools, install the required system packages:

sudo apt install feh fonts-dejavu

Then run todo init again.

"Font not found"

Ensure fonts-dejavu is installed:

sudo apt install fonts-dejavu
# Or check available fonts:
fc-list | head -20

"Pillow not found"

pip install Pillow

Wallpaper not updating on startup

Check systemd service status:

systemctl --user status todo-wallpaper-init.service
journalctl --user -u todo-wallpaper-init.service -n 20

Want to stop autostart?

systemctl --user disable todo-wallpaper-init.service

Re-enable autostart?

systemctl --user enable todo-wallpaper-init.service

Manual wallpaper render

python3 render.py

Optional: File Watcher

Use watch.py to auto-update wallpaper whenever todos.json changes:

python3 watch.py

This runs a daemon in the foreground. Press Ctrl+C to stop.

Requirements: watchdog package (pip install watchdog)

Tips

  1. Keybinding: Create a shell alias for faster access:

    alias todo='python3 ~/projects/random/todo-wallpaper/todo.py'
    # Now use: todo add "task name"
    
  2. Full-screen todo view: List all todos in a terminal:

    watch -n 1 'python3 ~/projects/random/todo-wallpaper/todo.py list'
    
  3. Regular refresh (if not using watch.py):

    # Add to crontab to refresh every hour
    0 * * * * python3 ~/projects/random/todo-wallpaper/render.py
    

Development

Testing

# Add a test todo
python3 todo.py add "Test task"

# Verify it appears in wallpaper
python3 render.py

# List todos
todo list

# Remove it
todo remove 1

Project Structure

  • State: todos.json (persistent JSON file)
  • Rendering: render.py (Pillow image generation)
  • Interface: todo.py (CLI commands)
  • Automation: init.py + systemd service (startup)

License

MIT

Support

Issues or suggestions? Check:

  • Are all dependencies installed? Run python3 setup.py
  • Is feh correctly setting the wallpaper? Try manually: feh --bg-fill wallpaper.png
  • Are todo files in the right location? Should be in ~/projects/random/todo-wallpaper/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

todo_wallpaper-0.1.5.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

todo_wallpaper-0.1.5-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

Details for the file todo_wallpaper-0.1.5.tar.gz.

File metadata

  • Download URL: todo_wallpaper-0.1.5.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for todo_wallpaper-0.1.5.tar.gz
Algorithm Hash digest
SHA256 653ebd62f92f79908eed53504615467f15289903f23a8f34044a3da4dcf36df6
MD5 fd37fb1aed825ee02bec09dd8cc05b14
BLAKE2b-256 6c931b52c51efe9b32e9969317c3b8b9f58aec174245ef4728ad63775164f059

See more details on using hashes here.

File details

Details for the file todo_wallpaper-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: todo_wallpaper-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for todo_wallpaper-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b3df252adea241d1606883dea683fa3b332b906debf3412017491e17192d3dcb
MD5 95cce03aaa1ee2a8fc0b1136a897cb03
BLAKE2b-256 a0b49df7326bd2ffcca2b11a032585a95ba6190f257e32f210c4232743ad1292

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page