Skip to main content

Sidenote

A lightweight, ADHD-friendly todo list that lives right next to your terminal window

Platform Python License PyPI

https://github.com/user-attachments/assets/f506c214-92fc-4827-bcfa-19c170bb75f4

Why This Exists

The ADHD Problem: You're coding in your terminal, a task pops into your head, and by the time you open Notepad/Tudo/a new tab, it's gone. That 2-second context switch is enough for ADHD brains to lose the thought entirely.

Every other tool costs you that switch - open an app, run a command, find the window. Sidenote is already there, docked to your terminal. Shift+Tab, type, Enter. Three seconds, without ever looking away from what you were doing.

Why not existing tools

Notepad/Heavy apps: Requires Alt+Tab, finding the window, clicking - thought is gone Tudo/Tuxedo/Rondo: Need to run a command, switch context, navigate UI - thought is gone PowerShell scratchpad: Need to open it, switch focus - thought is gone Other terminal UIs: Require launching a separate app or command - thought is gone

Features

This isn't about rich features but simplicity. It's about zero-friction capture. When you have ADHD, the best todo app is the one that's already open and doesn't make you think.

Feature Description
Terminal Integration Attaches flush to your terminal window, pixel-aligned
Smart Z-Order Sync When you click the terminal, todo comes forward with it
Movement Following Hides while you drag the terminal, snaps back when you stop
Resizable Width Drag it wider for longer notes; it stays that width as the terminal moves
Check Things Off Double-click a todo to complete it, don't just delete it
Reorder Todos Drag one up or down to move it
Tabs Up to 5 separate lists, named and switched from the header
Undo Delete Ctrl+Z brings back the last todo (or batch) you deleted
Persistent Storage Todos saved atomically, survive reboots and crashes
Global Hotkey Shift+Tab toggles from anywhere
Copy a Todo Right-click a todo to copy its text, with a quick flash to confirm
Lock to Terminal Lock button (🔓/🔒) to stick to a specific terminal
Built-in Help ? button lists every action, no need to memorise anything
Timestamps Each todo gets a timestamp when added
Dark Theme Minimal interface that matches terminal aesthetics
Light Footprint Python plus two small libraries; event-driven, so it idles at ~0% CPU

Install

pip install sidenote
sidenote init
sidenote  

That's it - Shift+Tab toggles it from anywhere.

Optionally, sidenote init adds start-note / stop-note shortcuts to your PowerShell profile.

If sidenote isn't found after installing, your Python Scripts folder isn't on PATH - see Troubleshooting.

Usage

Add - type in the box, press Enter. Timestamped automatically. Check off - double-click a todo. It greys out and shows [x]. Double-click again to uncheck. Copy - right-click a todo to put its text on the clipboard. It flashes to confirm. Reorder - press and drag a todo up or down. Remove - select it and press Delete. Undo a delete - Ctrl+Z brings back the last todo (or Ctrl+Delete batch) you removed. Resize - drag the edge to widen it for longer notes; the width sticks until you restart. Add a tab - click + in the top-left, type a name, press Enter. Up to 5. Switch tabs - click a numbered tab button next to +. Rename a tab - double-click its name in the footer, type a new one, press Enter. Delete a tab - click the × next to its name in the footer, then confirm. Only shows once you have a second tab.

The ? button lists every action, so there's nothing to memorise.

Hotkeys

Key Action
Shift+Tab Toggle overlay (works from any app)
Enter Add todo (or save a tab name while naming one)
Double-click Check off / uncheck
Right-click Copy a todo's text
Drag a todo Reorder it in the list
Space Check off / uncheck the selected todo
Delete / Backspace Remove selected todo
Ctrl+Delete Clear all checked-off todos
Ctrl+Z Undo the last delete
Escape Hide overlay (or cancel naming a tab)
🔓 / 🔒 Pin to one specific terminal
+ Add a tab (up to 5)

Commands

Command Description
sidenote Start the overlay
sidenote stop Stop it
sidenote status Is it running? Shows version and PID
sidenote --version Print the version (-V works too)
sidenote --help List every command (-h works too)
sidenote upgrade Update to the newest release
sidenote init Add PowerShell shortcuts

sidenote stop only ever terminates its own process - your dev servers, notebooks, and training runs are never touched.

Requirements

Windows 10/11, Python 3.7+, and a terminal (PowerShell, CMD, or Windows Terminal). Pulls in two small libraries: keyboard and pywin32.

Documentation

Full documentation →

FAQ · Troubleshooting · How it works · Data format · Upgrading · Uninstalling · Development

Contributing

Happy to take PRs for bug fixes, better terminal detection, performance, or cross-platform support. Run pytest first, and add a test if you're fixing a bug. See CONTRIBUTING.md.

License

MIT - do whatever you want with it.


Built by a developer with ADHD, for developers with ADHD. If this resonates, you get it. If it looks like overkill, it's not for you and that's fine. 🧠⚡

Metadata

Release files for sidenote 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sidenote 1.2.1
File Size Uploaded
sidenote-1.2.1.tar.gz 43.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sidenote 1.2.1
File Interpreter ABI Platform
sidenote-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 72.1 kB

Release files / sidenote-1.2.1.tar.gz

Download URL sidenote-1.2.1.tar.gz
Size 43.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a58ca679fd1872d8ee8a97baa687add905babffbda57742f822664e96db7a12d
BLAKE2b-256 checksum
How to use checksums
5a1876bbeb302d31df0c2477a29417f3f48f892157c2ebc642a024b9078ba622
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / sidenote-1.2.1-py3-none-any.whl

Download URL sidenote-1.2.1-py3-none-any.whl
Size 29.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c2f7abcc5db627a5a4c2cb26e5da69698ebb8e86cb891ddb4e9a5579415f3c4
BLAKE2b-256 checksum
How to use checksums
756600555cc6b9686e6e09c56c3ba761a3f5238a370f08e0b69f35405cc24433
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.2

2 release files

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page