All work

Desktop app · Windows 10 / 11 (x64)

CoreGaze

An always-on-top system monitor overlay for Windows.

  • 5live metric groups
  • 8GPU adapters tracked at most
  • 7GPU engine types per adapter
  • 14design documents

The problem

Checking CPU, memory or GPU load usually means opening Task Manager and covering what you were doing. I wanted the numbers always visible, without the overlay getting in the way of clicks or costing much itself.

What I built

CoreGaze draws a compact heads-up display on top of every window. It lets mouse clicks pass through to the apps underneath; holding Alt makes it movable.

  • CPU utilisation and clock speed, RAM used and total, GPU load and memory, disk and network activity.
  • Colour alerts when a value crosses a threshold.
  • A global hotkey to show or hide it, and tray controls to choose which rows appear.
  • Start with Windows, a single-instance guard and crash diagnostics.

How it works

  • GPU data from two sources. Video memory comes from DXGI (IDXGIAdapter3::QueryVideoMemoryInfo). Utilisation comes from Windows performance counters (PDH), grouped by engine: 3D, compute, copy, decode, encode, video processing and GDI. The busiest engine becomes the adapter’s headline value.
  • Several adapters. At start-up it enumerates up to eight graphics adapters and matches each counter to its adapter by LUID, so laptops with integrated and dedicated GPUs show both.
  • Cheap rendering. Metrics are collected on a low-overhead cadence into snapshots. Each frame only draws the latest snapshot, so rendering never waits on data collection.

Shipping it

A one-command PowerShell release script builds the app with CMake, downloads the VC++ runtime if it is missing, and bundles it into an Inno Setup installer. The installer keeps a stable AppId so upgrades replace the old version cleanly. Each subsystem, such as the hotkey, tray, GPU metrics, startup management and installer upgrades, has its own design document in docs/.