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.2

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.2
File Size Uploaded
sidenote-1.2.2.tar.gz 41.1 kB Details

Built distribution (wheel)

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

Total release size: 68.0 kB

Release files / sidenote-1.2.2.tar.gz

Download URL sidenote-1.2.2.tar.gz
Size 41.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4c29bb03e10d081ede7e1b9a323cda9d3a9bdee9ba6d5ed5dc0b691ef9382821
BLAKE2b-256 checksum
How to use checksums
82bf3d1be1fe7fdf97edf1efeb13c7858b26268757ae3b2bd0df0a9623e686c4
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.2-py3-none-any.whl

Download URL sidenote-1.2.2-py3-none-any.whl
Size 26.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a0562f4881e16512ff8f7f3cdfa75ed7e8760cd89486b8151e7e6aa0bfea1fa9
BLAKE2b-256 checksum
How to use checksums
3cba45a3b7cc74496d1e9de2e2a9f0cea4918420e845080646cb079c01c81699
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

This release

1.2.2 This release

2 release files

1.2.1

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