Sidenote
A lightweight, ADHD-friendly todo list that lives right next to your terminal window
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 |
| Check Things Off | Double-click a todo to complete it, don't just delete it |
| 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
sidenote init
That's it - Shift+Tab toggles it from anywhere.
Optionally, sidenote init adds start-note / stop-note shortcuts to your
PowerShell profile.
If
sidenoteisn'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.
Remove - select it and press Delete.
The ? button in the top-left lists every action, so there's nothing to memorise.
Hotkeys
| Key | Action |
|---|---|
Shift+Tab |
Toggle overlay (works from any app) |
Enter |
Add todo |
Double-click |
Check off / uncheck |
Right-click |
Copy a todo's text |
Space |
Check off / uncheck the selected todo |
Delete / Backspace |
Remove selected todo |
Ctrl+Delete |
Clear all checked-off todos |
Escape |
Hide overlay |
| 🔓 / 🔒 | Pin to one specific terminal |
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
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.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sidenote-1.1.1.tar.gz | 37.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sidenote-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.2 kB
Release files / sidenote-1.1.1.tar.gz
| Download URL | sidenote-1.1.1.tar.gz |
|---|---|
| Size | 37.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f6399f53eaea8024ae6048ae9903a33d0cd6031b5cf295e97ebd63d65c8c3ad
|
|
BLAKE2b-256 checksum How to use checksums |
449836254cdb260426ddcf6deaca5f571641afa4d0a74e13a977c8626c03acd3
|
| 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.1.1-py3-none-any.whl
| Download URL | sidenote-1.1.1-py3-none-any.whl |
|---|---|
| Size | 25.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff5879cf0381401408d7576166333d7b295254c07ea2c57a90359717bf79568f
|
|
BLAKE2b-256 checksum How to use checksums |
3a2e11b6cc2de11068a324413f1cbc01d4e04d0fae01e0d4fecaced2a9c14779
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|