System Monitor

Real-time dashboard with PC Health Score, hardware metrics, and network diagnostics. Auto-refreshes every 3 seconds.

PC Health Score

Composite score from 0 to 100 with grade letter (A+ down to F). Updates on tab open or Refresh button.

RAM (30 pts): penalizes usage above 30%, 50%, 70%, 80%, 90%

CPU (20 pts): penalizes load above 25%, 50%, 70%, 90%

Disk (30 pts): independent penalties for low free GB and high % used — takes the larger penalty

Temperature (10 pts): worst of CPU and GPU temp; penalizes above 55°C, 65°C, 75°C, 85°C. GPU temp read via nvidia-smi

Uptime (10 pts): penalizes >7 days and >14 days without reboot

Actionable tips listed below the score (e.g. 'System drive 87% full — consider cleanup')

Hardware cards (3×2 layout)

Inline SVG icons throughout — chip, RAM stick, GPU PCB, disk cylinders, clock, globe.

CPU: usage % + temperature inline (when WMI exposes it — common on Intel; AMD requires OpenHardwareMonitor or LibreHardwareMonitor running)

RAM: used / total GB with gauge bar + free GB

GPU: usage % + temperature inline + name + VRAM (from nvidia-smi)

DISCO (spans 2 cols): per-drive % used with colored bars

ACTIVO: uptime (Xd Yh Zm) + boot time ('Iniciado lun 11:24')

RED (full-width below): per-host latency rows + DNS selector + speed test

Network latency & DNS

Continuously pings 1.1.1.1, 8.8.8.8, and google.com via TCP. Each result rendered as a row.

Status dot color: green (<30ms), amber (30-100ms), red (>100ms), grey (timeout)

Latency badge same color tier, monospace tabular numbers

DNS selector: 9 providers (Google, Cloudflare, OpenDNS, Quad9, AdGuard variants) + DHCP reset

Speed Test button: full Speedtest.net run via speedtest-go (download/upload/ping)

Temperature reading sources

CodeWinOptimizer tries multiple WMI namespaces and falls back gracefully.

Order: root\OpenHardwareMonitor → root\LibreHardwareMonitor → \Thermal Zone Information perf counter → MSAcpi_ThermalZoneTemperature

GPU temp: nvidia-smi --query-gpu=temperature.gpu (AMD/Intel GPU temps not yet supported)

If none returns a value (common on AMD without OHM/LHM), the CPU card simply omits the temp instead of showing 'n/a'