Skip to content

Latest commit

 

History

History
296 lines (212 loc) · 9.92 KB

File metadata and controls

296 lines (212 loc) · 9.92 KB

CoreTempGPU — Full Documentation

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


1. What this is

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:

  1. Polls GPU hardware itself (PDH + NVIDIA NVML fallback)
  2. 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
  3. Shows its own system tray (notification area) icons for load / VRAM / temp / clock
  4. Hover VRAM/RAM heat bars for cumulative top process contributors (≥67% of currently used)

2. Architecture

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)

Plugin contract (CoreTemp.Plugin.IPlugin)

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

[Plugin configuration]
AssemblyName=CoreTempGPU.dll;
TypeName=CoreTempGPU.GpuPlugin;
ClrVersion=v4.0.30319;

Install layout (flat folder)

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


3. Data sources

3.1 Windows PDH (universal)

  • \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.

3.2 NVIDIA NVML (nvml.dll)

Used when present (NVIDIA driver install):

  • nvmlDeviceGetUtilizationRates → GPU %
  • nvmlDeviceGetMemoryInfo → VRAM used/total
  • nvmlDeviceGetTemperature → °C
  • nvmlDeviceGetClockInfo → graphics MHz

Verified on lab RTX 3080 over RDP while PDH GPU instances were empty.

3.3 DXGI

Not used for adapter enumeration. Incomplete COM vtables crashed Core Temp during early development; names come from NVML instead.


4. User interface

4.1 Shade strip (panel)

  • 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); SizeAll cursor 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)

4.2 System tray icons

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…

4.3 Settings (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.


5. Build

Prerequisites

  • .NET SDK (build) with .NET Framework 4.8 targeting pack
  • Core Temp Plugin Libraries (included under lib\ and bridge\):
    • CoreTempPluginProxy.dll (v4.0)
    • PluginNetInterface-x64.dll / PluginNetInterface-x86.dll

Build command

dotnet build CoreTempGPU.csproj -c Release

Output: bin\Release\CoreTempGPU.dll (+ proxy/bridge via content copy).

Standalone harness (no Core Temp)

dotnet build Harness\CoreTempGPUHarness.csproj -c Release
Harness\bin\Release\net48\CoreTempGPUHarness.exe

Polls NVML/PDH and exercises the UI path without the host.


6. Install / upgrade

  1. Exit Core Temp (or it may lock DLLs).

  2. Copy release folder contents into:

    C:\Program Files\Core Temp\plugins\CoreTempGPU\
    

    Required files (flat):

    • CoreTempGPU.dll
    • CoreTempPluginProxy.dll
    • Plugin.cfg
    • PluginNetInterface-x64.dll
    • PluginNetInterface-x86.dll
  3. Ensure Options → plugins enabled.

  4. Start Core Temp.

  5. Confirm Plugin Manager lists CoreTempGPU.

  6. Tray icons appear in the notification area; orange panel docks under the main window.

Uninstall

  1. Disable/remove plugin in Plugin Manager if available.
  2. Exit Core Temp.
  3. Delete plugins\CoreTempGPU\.

7. Source map

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

8. Dependencies & licenses

  • 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


9. Troubleshooting

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


10. Development notes (lab)

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

11. Package contents (this zip)

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


12. Licensing & attribution

  • Application code: MIT — see LICENSE
  • Bundled Core Temp SDK DLLs + NVML/host notes: see NOTICE and LICENSE-NOTES.txt