snooper_pkg

A transparent, Windows-only foreground-application usage tracker for consensual parent/teen accountability and productive-work sessions — not secret surveillance.

snooper_pkg records a simple, useful signal: which application and window is in the foreground, and for how long. It is intended to make productive-work sessions easier to review together, without capturing the contents of that work.

Time away from the keyboard is treated separately from active foreground use. For example, if a browser remains open while someone is away, that interval can be reported as idle time rather than browser activity.

Privacy boundaries

This application is designed for transparent, consensual use. It is not intended to record:

  • keystrokes
  • screenshots
  • messages
  • passwords
  • complete webpage contents
  • detailed personal content

Window titles can themselves contain sensitive information. Title display is configurable through SHOW_WINDOW_TITLES; disable it when titles should not appear in reports.

Current MVP features

The current notebooks implement:

  • automatic monitoring startup
  • monitoring sessions stored in SQLite
  • foreground application and window interval tracking
  • Windows idle detection
  • process start and stop events
  • cleanup of old session data
  • pause and automatic resume
  • system-tray controls
  • session report generation
  • a table-style Tkinter report window
  • clean application exit

Requirements

The package metadata now declares the runtime dependencies used by the implementation notebooks:

  • fastcore
  • fastlite
  • pandas
  • psutil
  • Pillow
  • pystray on Windows
  • pywin32 on Windows

The package still needs to be verified from a built wheel on a clean Windows installation. That test must confirm that the dependencies install correctly, the foreground-window and idle tracking work, the system-tray application starts, and the report UI opens successfully.

tkinter is not listed as a PyPI dependency because it is part of Python’s standard library. Its availability should instead be checked on the target Windows Python installation.

Development installation

From the project root, install the package in editable mode:

python -m pip install -e .

Export notebook changes into the package with:

nbdev-export

Run notebook tests with:

nbdev-test

Use the combined preparation command before committing:

nbdev-prepare

Running the MVP

The application startup flow creates a MonitorController, starts monitoring, opens the most recent completed-session report, and enters the system-tray loop. Run it only in a Windows environment after the notebook modules have been exported and the required runtime packages are installed.

The immediate project priority is a real Windows MVP test: confirm tray startup, foreground intervals, idle handling, reporting, pause/resume, and clean exit before expanding scope.