Rainmeter Skins for Network and Server Monitoring

This project provides a compact desktop view of network status, including latency, throughput, packet loss, and local-device reachability.

Rainmeter provides a configurable Windows desktop surface through simple .ini files. I used it to build two skins: one for internet monitoring and one for local server status.

InternetMonitor

The first skin handles everything internet-facing. It displays:

The thresholds are set in a variables section at the top of the skin so they're easy to tune without digging through the meter definitions:

[Variables]
PingGood=50
PingWarn=100
; Values in ms, anything above PingWarn goes red

The skin also has an expandable panel. In the collapsed state it's just a small indicator in the corner. Click it and it expands to show the full stats panel with graphs. This keeps it out of the way when you don't need the detail.

Network connect/disconnect

There's a button in the skin that triggers a batch script to disconnect or reconnect the network adapter. Useful when you want to force a reconnect without digging through adapter settings. Rainmeter calls it with a !Execute action:

[MeterToggle]
Meter=Button
LeftMouseUpAction=!Execute ["cmd /c netsh interface set interface "Wi-Fi" disable"]

The action uses netsh; it requires the appropriate permissions and should be used carefully on a managed device.

ServerStatus

The second skin monitors up to two local network devices via ping. I use it for a home server and a NAS. The display is minimal: a label, a latency reading, and an online/offline indicator. That's all you need when you're just checking whether something is reachable.

Each device is configured with an IP and a display name in the variables block. The skin pings both on the same update cycle and updates the indicators independently, so if one device goes down the other still shows green.

How Rainmeter skins actually work

If you haven't used Rainmeter before, the model is straightforward. A skin is a folder containing at least one .ini file. Inside that file you define Measures (things that collect data) and Meters (things that display it).

[MeasurePing]
Measure=Plugin
Plugin=PingPlugin
DestAddress=8.8.8.8
UpdateRate=10

[MeterPingValue]
Meter=String
MeasureName=MeasurePing
Text="Ping: %1 ms"
FontColor=255,255,255,200

The PingPlugin is a community plugin that ships with most Rainmeter installs. It handles the actual ICMP requests and exposes the result as a measure value. Meters then bind to measures by name and render whatever they're configured to show.

The color logic for latency thresholds uses Rainmeter's IfCondition system: essentially inline conditionals that swap out a meter's font or image color based on the current measure value.

Stack


← Back to all posts  ·  View on GitHub ↗