Skip to content

Repository files navigation

GhostSticky

Sticky notes for Windows whose interface disappears when you are not using it. A note shows only its text. Focus it and the title bar appears by growing the window, so the writing area never shrinks under you. There are no visible grips either: open notes offer hidden edge and corner resize zones instead. Notes take no taskbar slot, render Markdown when inactive, and go to a recoverable bin instead of vanishing when you close them. Saving is automatic and atomic, with a rolling backup and a dated daily snapshot, and startup recovers from the best surviving copy when the main file is missing or looks wrong.

The full requirement list is in SPEC.md, written as R1 to R29 with an acceptance clause. Requirement R7 is the whole idea: UI details must hide when unused.

Status

In daily use by the author since February 2026. Windows only: it depends on Win32 window styles through ctypes, so it does not run on macOS or Linux. One file, about 10,700 lines of Python on Tkinter, with a test suite of almost the same size. There is no installer and no packaged build.

Install

Python 3.11, which is the version it is developed and tested on. Tkinter comes with the standard Windows Python installer.

python -m pip install -r requirements.txt

Run

python sticky_notes.pyw

or double-click run_sticky_notes.bat.

The first note opens immediately. Click the notification-area icon, normally in the taskbar overflow drawer, to show the notes, add one, open the bin of closed notes, or save and exit. Ctrl+N makes a new note.

--resident starts the app without opening a note, for use from a logon task.

Where notes are stored

Next to sticky_notes.pyw: notes.json, a notes.json.bak written with every save, dated copies under daily-backups/, and pasted or dropped files under attachments/. Nothing leaves the machine.

Set GHOSTSTICKY_HOME to keep that state somewhere else, which you need if the app itself sits on a read-only or shared path:

$env:GHOSTSTICKY_HOME = "$env:APPDATA\GhostSticky"

Test

python -m pip install -r requirements-dev.txt
python -m unittest discover -s tests -v

462 tests: 455 test functions plus 7 property-based ones. The suite builds real Tkinter windows, so it needs a desktop session rather than a headless one, but it keeps them withdrawn and fully transparent and never takes focus. Blocking dialogs are replaced by a guard that fails the test instead of waiting for a click nobody will give it. Window-event behaviour is tested in both directions: many tests assert that a state change does not happen when the event arrives without its cause.

python tools/check_rules.py is a small static check over the application source for the structural rules the project keeps, such as which functions are allowed to rewrite editor text.

Optional

pip install pyvda adds pinning a note to every virtual desktop.

License

MIT. See LICENSE.

About

Sticky notes for Windows whose interface disappears when unused: one Python file, a written specification, and 462 tests.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages