Version: 1.3.5
Target host: Core Temp (ALCPU) on Windows
Language / runtime: C# · .NET Framework 4.8 · Core Temp plugin CLR v4.0.30319
Lab machine proof: NVIDIA GeForce RTX 3080 (headless/RDP), NVML + shade strip + system tray
CoreTempGPU is a Core Temp plugin that monitors:
| Metric | Typical source |
|---|---|
| GPU utilization % | Windows PDH GPU Engine(*)\Utilization Percentage, else NVML |
| VRAM used / total | PDH adapter memory when available; NVML for full used+total on NVIDIA |
| GPU temperature °C | NVML |
| Graphics clock MHz | NVML |
Core Temp only tracks CPU (and a few built-in sensors). It does not:
- Expose GPU sensors natively
- Allow plugins to inject custom rows into the main temperature grid
- Allow plugins to register sensors in Settings → Notification Area (that list is CPU-only)
So this plugin:
- Polls GPU hardware itself (PDH + NVIDIA NVML fallback)
- Shows a thin orange Winamp-shade strip (Segoe UI Semibold; draggable with magnetic edge/corner snap; default bottom-right above the taskbar) — not locked to Core Temp’s window
- Shows its own system tray (notification area) icons for load / VRAM / temp / clock
- Hover VRAM/RAM heat bars for cumulative top process contributors (≥67% of currently used)
Core Temp.exe
└── PluginNetInterface-x64.dll (native bridge, loads CLR)
└── CoreTempPluginProxy.dll
└── CoreTempGPU.dll (IPlugin: GpuPlugin Form)
├── GpuMonitor (PDH + NVML poll + system RAM)
├── Shade strip (orange gradient UI, Segoe UI Semibold)
└── TrayIcons (NotifyIcon × N)
| Method / property | Role |
|---|---|
Start() |
Init monitor, show panel, create tray icons |
Update(CoreTempSharedData) |
Called on each Core Temp refresh; re-poll GPU + UI + tray |
Configure() |
Settings dialog (panel + tray toggles) |
Stop() / Remove() |
Teardown tray, hide UI, dispose monitor |
Name / Description / Version |
Plugin Manager metadata |
CoreTempPluginProxyReference |
Host injects proxy (parent HWND, stop, etc.) |
[Plugin configuration]
AssemblyName=CoreTempGPU.dll;
TypeName=CoreTempGPU.GpuPlugin;
ClrVersion=v4.0.30319;<Core Temp>\plugins\CoreTempGPU\
CoreTempGPU.dll
CoreTempPluginProxy.dll
Plugin.cfg
PluginNetInterface-x64.dll
PluginNetInterface-x86.dll
CoreTempGPU.ini (created at runtime)
CoreTempGPU.log (optional debug log)
Core Temp must have Plugins enabled (CoreTemp.ini → [General] → Plugins=1).
\GPU Engine(*)\Utilization Percentage\GPU Adapter Memory(*)\Local Usage
On some machines (RDP / headless / no WDDM engine instances) these counters exist but return no instances → plugin falls through to NVML.
Used when present (NVIDIA driver install):
nvmlDeviceGetUtilizationRates→ GPU %nvmlDeviceGetMemoryInfo→ VRAM used/totalnvmlDeviceGetTemperature→ °CnvmlDeviceGetClockInfo→ graphics MHz
Verified on lab RTX 3080 over RDP while PDH GPU instances were empty.
Not used for adapter enumeration. Incomplete COM vtables crashed Core Temp during early development; names come from NVML instead.
- Borderless form implementing
IPlugin(same pattern as official SampleNetPlugin) - Winamp-shade proportions: long (~520×24 logical), single horizontal row
- Background: high-visibility orange
RGB(255, 140, 0) - Font: Segoe UI Semibold
- Metrics in one row: adapter · load% + mini-bar · VRAM + mini-bar · temp · clock
- Font: Segoe UI Semibold (fallback cascade: Segoe UI → Bahnschrift → Calibri → Tahoma)
- Draggable anywhere (mouse capture so snap still fires after leaving the strip);
SizeAllcursor while dragging - Magnetic snap on release (default on): X→L/C/R and Y→T/C/B rails within ~48 px (DPI-scaled); free float otherwise, clamped above taskbar
- RAM label + heat bar alongside VRAM on a 660 px strip
- Hover VRAM/RAM bars: tooltip lists cumulative top processes covering ≥67% of currently used VRAM (NVML graphics+compute) or RAM (Working Set)
- Position persisted as
PosX/PosY; off-screen recovery to primary BR - Setting:
SnapOnRelease(migrates from legacy pin/dock flags)
Core Temp’s Notification Area settings cannot list plugin sensors. Tray icons are therefore owned by this plugin:
| Icon | Default | Text color | Content |
|---|---|---|---|
| GPU load | On | Yellow | e.g. 22 |
| VRAM | On | Orange | used GB e.g. 1.8 (tooltip has full ratio) |
| Temperature | On | Cyan | e.g. 44 |
| Clock | Off | Green | MHz or GHz |
Tray font is intentionally tiny (~4.5–5.5 pt Segoe UI Semibold) for 16×16 icons.
Right-click any tray icon:
- Show / hide panel
- Configure…
- Show GPU shade strip
- Snap to edges on release
- Always on top
- Refresh interval (UI; polling also tracks Core Temp
Update) - Tray toggles for load / VRAM / temp / clock
Persisted in CoreTempGPU.ini next to the DLL.
- .NET SDK (build) with .NET Framework 4.8 targeting pack
- Core Temp Plugin Libraries (included under
lib\andbridge\):CoreTempPluginProxy.dll(v4.0)PluginNetInterface-x64.dll/PluginNetInterface-x86.dll
dotnet build CoreTempGPU.csproj -c ReleaseOutput: bin\Release\CoreTempGPU.dll (+ proxy/bridge via content copy).
dotnet build Harness\CoreTempGPUHarness.csproj -c Release
Harness\bin\Release\net48\CoreTempGPUHarness.exePolls NVML/PDH and exercises the UI path without the host.
-
Exit Core Temp (or it may lock DLLs).
-
Copy release folder contents into:
C:\Program Files\Core Temp\plugins\CoreTempGPU\Required files (flat):
CoreTempGPU.dllCoreTempPluginProxy.dllPlugin.cfgPluginNetInterface-x64.dllPluginNetInterface-x86.dll
-
Ensure Options → plugins enabled.
-
Start Core Temp.
-
Confirm Plugin Manager lists CoreTempGPU.
-
Tray icons appear in the notification area; orange panel docks under the main window.
- Disable/remove plugin in Plugin Manager if available.
- Exit Core Temp.
- Delete
plugins\CoreTempGPU\.
| File | Purpose |
|---|---|
GpuPlugin.cs |
IPlugin + shade-strip UI + drag/snap + lifecycle |
GpuMonitor.cs |
Poll PDH + NVML → GpuSnapshot |
Nvml.cs |
P/Invoke nvml.dll |
Pdh.cs |
P/Invoke PDH GPU counters |
TrayIcons.cs |
System tray NotifyIcons + 16×16 text glyphs |
PluginSettings.cs |
INI load/save |
SettingsDialog.cs |
Configure UI |
GpuWindow.cs |
Earlier separate-window UI (harness / legacy) |
Plugin.cfg |
Host loader config |
CoreTempGPU.csproj |
Build |
lib\ |
CoreTempPluginProxy (SDK v4) |
bridge\ |
PluginNetInterface x86/x64 |
Harness\ |
Standalone test exe sources |
README.md |
Short overview |
DOCUMENTATION.md |
This file |
INSTALL.txt |
Quick install steps |
- Core Temp Plugin SDK libraries (
CoreTempPluginProxy,PluginNetInterface) — free for non-commercial use per ALCPU SDK license; commercial redistribution requires contacting Arthur Liberman / ALCPU. - NVML — part of NVIDIA driver; no redistributable DLL shipped (loads system
nvml.dll). - Plugin application code (this repo) — package for personal lab use; treat as your own tooling unless you attach a different license.
Official SDK: https://www.alcpu.com/CoreTemp/developers.html
| Symptom | Likely cause / fix |
|---|---|
| Plugin not listed | Plugins disabled; wrong folder name; missing Plugin.cfg |
| Panel never appears | Check CoreTempGPU.log; confirm Start(); restore Core Temp from tray |
All metrics -- |
No NVML and empty PDH; install GPU drivers; check nvidia-smi |
| Only works on NVIDIA | AMD needs ADL/SMI or LibreHardwareMonitor (not implemented); PDH may still give load/VRAM on desktop sessions |
| Core Temp crash on load | Old DXGI code path — current build removes it; use package from this zip |
| Tray icons missing | Configure toggles; Windows “hidden icons”; RDP may hide/shell-limit tray |
| DLL locked on rebuild | Exit Core Temp before copying |
Debug log: plugins\CoreTempGPU\CoreTempGPU.log
- Core Temp often starts minimized (
Minimized=1, MiniMode) — panel still docks when restored; tray remains useful. - Start Core Temp outside agent job objects if testing from automation (
Win32_Process.Create/ WMI). - Do not rely on incomplete DXGI COM stubs.
- Prefer driving UI refresh from
IPlugin.Update(host message pump) rather than only a WinForms timer on a secondary form.
CoreTempGPU/
DOCUMENTATION.md
README.md
INSTALL.txt
LICENSE-NOTES.txt
source/ # full C# project
release/ # drop-in plugin files for Core Temp
harness/ # optional standalone tester sources + note
Generated for personal Swiss Army Knife archive · Core Temp GPU plugin · 2026
- Application code: MIT — see LICENSE
- Bundled Core Temp SDK DLLs + NVML/host notes: see NOTICE and LICENSE-NOTES.txt