It is currently May 4th, 2024, 1:37 pm

Dynamic variables for color coding meters?

Get help with creating, editing & fixing problems with skins
JoeDeertay
Posts: 5
Joined: December 29th, 2018, 3:42 pm

Dynamic variables for color coding meters?

Post by JoeDeertay »

Hello everyone!

This is my first week using Rainmeter after building my first computer, and I'm trying to write a skin that will track system data so I have an idea when and where to upgrade. I've managed to get most of it done and working so far by reading the documentation and searching the forums for answers, but I'm having trouble figuring out how to keep track of the maximum values of variables to use for color coding certain meters.

Here's how the skin looks and behaves:
Image

and here is the code for the entire skin (forgive me for the length and if it's a little sloppy or redundant - there are likely some snippets I forgot to remove or are just there for testing):

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=0,0,0,1

[Variables]
;==================================================
; User Variables
;==================================================
;--Colors--
MediumBlue=92,135,209,255
AlmostBlack=40,40,40,255
White=255,255,255,255
MyGreen=153,255,153,255
MyRed=255,102,102,255
MyYellow=255,255,102,255
;--Drives--
Disk1=C:
Disk2=D:
;
;==================================================
; Skin Variables
;==================================================
;--Processor Levels--
CPUUsageVar=0
Core0UsageVar=0
Core1UsageVar=0
Core2UsageVar=0
Core3UsageVar=0
;--Temperature & Power Levels--
TempCPUMaxVar=0
TempCPUPowerVar=0
TempCore0Var=0
TempCore1Var=0
TempCore2Var=0
TempCore3Var=0
;--Memory Levels--
MemoryRAMFreePercentVar=0
MemoryCacheVar=0
MemoryPagesVar=0
PagingUsageVar=0
;--Disk1 Levels--
Disk1IdleVar=0
Disk1ReadScaleVar=0
Disk1WriteScaleVar=0
Disk1QueueVar=0
;--Disk2 Levels--
Disk2IdleVar=0
Disk2ReadScaleVar=0
Disk2WriteScaleVar=0
Disk2QueueVar=0
;--Internet Levels--
NetworkQualityVar=0
NetworkStatusVar=0
NetworkQueueVar=0
NetworkRatePercentVar=0
NetworkRateInPercentVar=0
NetworkAdapterInPercentVar=0
NetworkRateOutPercentVar=0
NetworkAdapterOutPercentVar=0
;--Status Levels--
CPUStatusLevelVar=0
TempStatusLevelVar=0
MemoryStatusLevelVar=0
Disk1StatusLevelVar=0
Disk2StatusLevelVar=0
NetworkStatusLevelVar=0

;======================================================================================================================================================
;======================================================================================================================================================
; MEASURES
;======================================================================================================================================================
;======================================================================================================================================================
;Plugins used:
;UsageMonitor
;CoreTemp
;PowerPlugin
;ResMon
;SysInfo
;WiFiStatus

;==================================================
; Processor
;==================================================

;No Meter
[CPUStatusLevelReset]
Measure=Calc
Formula=#CPUStatusLevelVar#
DynamicVariables=1
IfAboveValue=0
IfAboveAction=[!SetVariable CPUStatusLevelVar 0]

[CPUUsage]
Measure=Plugin
Plugin=UsageMonitor
Alias=CPU
Index=0
DynamicVariables=1
IfCondition=[CPUUsage:] <= 50
IfTrueAction=[!SetVariable CPUUsageVar 0][!SetVariable CPUStatusLevelVar 0]
IfCondition2=([CPUUsage:] > 50) && ([CPUUsage:] <= 75)
IfTrueAction2=[!SetVariable CPUUsageVar 1][!SetVariable CPUStatusLevelVar 1]
IfCondition3=[CPUUsage:] > 75
IfTrueAction3=[!SetVariable CPUUsageVar 2][!SetVariable CPUStatusLevelVar 2]

;No Meter
[CPUStatusLevelCheck1]
Measure=Calc
Formula=#CPUStatusLevelVar# - #CPUUsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #CPUUsageVar#]

[CPUName]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=CpuName

[CPUFrequencyBase]
Measure=Plugin
Plugin=PowerPlugin
PowerState=MHz

[CPUFrequencyBaseScale]
Measure=Calc
Formula=CPUFrequencyBase/1000

[CPUFrequency]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=CpuSpeed

[CPUFrequencyScale]
Measure=Calc
Formula=CPUFrequency/1000

[CPUBusSpeed]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=BusSpeed

[CPUBusMultiplier]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=BusMultiplier

[GDI]
Measure=Plugin
Plugin=ResMon
ResCountType=GDI
DynamicVariables=1

[TotalThreads]
Measure=Plugin
Plugin=UsageMonitor
Category=System
Counter=Threads
Index=0

[Core0Usage]
Measure=Plugin
Plugin=UsageMonitor
Category=Processor
Counter=% Processor Time
Name=0
MinValue=0
MaxValue=100
DynamicVariables=1
IfCondition=[Core0Usage:] <= 50
IfTrueAction=[!SetVariable Core0UsageVar 0][!SetOption MeterCore0UsageLabel FontColor #White#][!SetOption MeterCore0UsageValues FontColor #White#][!UpdateMeter "MeterCore0UsageLabel"][!UpdateMeter "MeterCore0UsageValues"]
IfCondition2=([Core0Usage:] > 50) && ([Core0Usage:] <= 75)
IfTrueAction2=[!SetVariable Core0UsageVar 1][!SetOption MeterCore0UsageLabel FontColor #MyYellow#][!SetOption MeterCore0UsageValues FontColor #MyYellow#][!UpdateMeter "MeterCore0UsageLabel"][!UpdateMeter "MeterCore0UsageValues"]
IfCondition3=[Core0Usage:] > 75
IfTrueAction3=[!SetVariable Core0UsageVar 2][!SetOption MeterCore0UsageLabel FontColor #MyRed#][!SetOption MeterCore0UsageValues FontColor #MyRed#][!UpdateMeter "MeterCore0UsageLabel"][!UpdateMeter "MeterCore0UsageValues"]

;No Meter
[CPUStatusLevelCheck2]
Measure=Calc
Formula=#CPUStatusLevelVar# - #Core0UsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #Core0UsageVar#]

[Core0Frequency]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=0
CoreTempType=CoreSpeed

[Core0FrequencyScale]
Measure=Calc
Formula=Core0Frequency/1000

[Core1Usage]
Measure=Plugin
Plugin=UsageMonitor
Category=Processor
Counter=% Processor Time
Name=1
MinValue=0
MaxValue=100
DynamicVariables=1
IfCondition=[Core1Usage:] <= 50
IfTrueAction=[!SetVariable Core1UsageVar 0][!SetOption MeterCore1UsageLabel FontColor #White#][!SetOption MeterCore1UsageValues FontColor #White#][!UpdateMeter "MeterCore1UsageLabel"][!UpdateMeter "MeterCore1UsageValues"]
IfCondition2=([Core1Usage:] > 50) && ([Core1Usage:] <= 75)
IfTrueAction2=[!SetVariable Core1UsageVar 1][!SetOption MeterCore1UsageLabel FontColor #MyYellow#][!SetOption MeterCore1UsageValues FontColor #MyYellow#][!UpdateMeter "MeterCore1UsageLabel"][!UpdateMeter "MeterCore1UsageValues"]
IfCondition3=[Core1Usage:] > 75
IfTrueAction3=[!SetVariable Core1UsageVar 2][!SetOption MeterCore1UsageLabel FontColor #MyRed#][!SetOption MeterCore1UsageValues FontColor #MyRed#][!UpdateMeter "MeterCore1UsageLabel"][!UpdateMeter "MeterCore1UsageValues"]

;No Meter
[CPUStatusLevelCheck3]
Measure=Calc
Formula=#CPUStatusLevelVar# - #Core1UsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #Core1UsageVar#]

[Core1Frequency]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=1
CoreTempType=CoreSpeed

[Core1FrequencyScale]
Measure=Calc
Formula=Core1Frequency/1000

[Core2Usage]
Measure=Plugin
Plugin=UsageMonitor
Category=Processor
Counter=% Processor Time
Name=2
MinValue=0
MaxValue=100
DynamicVariables=1
IfCondition=[Core2Usage:] <= 50
IfTrueAction=[!SetVariable Core2UsageVar 0][!SetOption MeterCore2UsageLabel FontColor #White#][!SetOption MeterCore2UsageValues FontColor #White#][!UpdateMeter "MeterCore2UsageLabel"][!UpdateMeter "MeterCore2UsageValues"]
IfCondition2=([Core2Usage:] > 50) && ([Core2Usage:] <= 75)
IfTrueAction2=[!SetVariable Core2UsageVar 1][!SetOption MeterCore2UsageLabel FontColor #MyYellow#][!SetOption MeterCore2UsageValues FontColor #MyYellow#][!UpdateMeter "MeterCore2UsageLabel"][!UpdateMeter "MeterCore2UsageValues"]
IfCondition3=[Core2Usage:] > 75
IfTrueAction3=[!SetVariable Core2UsageVar 2][!SetOption MeterCore2UsageLabel FontColor #MyRed#][!SetOption MeterCore2UsageValues FontColor #MyRed#][!UpdateMeter "MeterCore2UsageLabel"][!UpdateMeter "MeterCore2UsageValues"]

;No Meter
[CPUStatusLevelCheck4]
Measure=Calc
Formula=#CPUStatusLevelVar# - #Core2UsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #Core2UsageVar#]

[Core2Frequency]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=2
CoreTempType=CoreSpeed

[Core2FrequencyScale]
Measure=Calc
Formula=Core2Frequency/1000

[Core3Usage]
Measure=Plugin
Plugin=UsageMonitor
Category=Processor
Counter=% Processor Time
Name=3
MinValue=0
MaxValue=100
DynamicVariables=1
IfCondition=[Core3Usage:] <= 50
IfTrueAction=[!SetVariable Core3UsageVar 0][!SetOption MeterCore3UsageLabel FontColor #White#][!SetOption MeterCore3UsageValues FontColor #White#][!UpdateMeter "MeterCore3UsageLabel"][!UpdateMeter "MeterCore3UsageValues"]
IfCondition2=([Core3Usage:] > 50) && ([Core3Usage:] <= 75)
IfTrueAction2=[!SetVariable Core3UsageVar 1][!SetOption MeterCore3UsageLabel FontColor #MyYellow#][!SetOption MeterCore3UsageValues FontColor #MyYellow#][!UpdateMeter "MeterCore3UsageLabel"][!UpdateMeter "MeterCore3UsageValues"]
IfCondition3=[Core3Usage:] > 75
IfTrueAction3=[!SetVariable Core3UsageVar 2][!SetOption MeterCore3UsageLabel FontColor #MyRed#][!SetOption MeterCore3UsageValues FontColor #MyRed#][!UpdateMeter "MeterCore3UsageLabel"][!UpdateMeter "MeterCore3UsageValues"]

;No Meter
[CPUStatusLevelCheck5]
Measure=Calc
Formula=#CPUStatusLevelVar# - #Core3UsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #Core3UsageVar#]

[Core3Frequency]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=3
CoreTempType=CoreSpeed

[Core3FrequencyScale]
Measure=Calc
Formula=Core3Frequency/1000

;No Meter
[CPUStatusLevel]
Measure=Calc
Formula=#CPUStatusLevelVar#
DynamicVariables=1
IfCondition=([CPUStatusLevel:]=0)
IfTrueAction=[!SetOption MeterCPUCircle LineColor #White#][!SetOption MeterCPUPercent FontColor #White#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]
IfCondition2=([CPUStatusLevel:]=1)
IfTrueAction2=[!SetOption MeterCPUCircle LineColor #MyYellow#][!SetOption MeterCPUPercent FontColor #MyYellow#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]
IfCondition3=([CPUStatusLevel:]=2)
IfTrueAction3=[!SetOption MeterCPUCircle LineColor #MyRed#][!SetOption MeterCPUPercent FontColor #MyRed#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]

;==================================================
; Temperature & Power
;==================================================

;No Meter
[TempStatusLevelReset]
Measure=Calc
Formula=#TempStatusLevelVar#
DynamicVariables=1
IfAboveValue=0
IfAboveAction=[!SetVariable TempStatusLevelVar 0]

[TempCPUMax]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=MaxTemperature
DynamicVariables=1
IfCondition=[TempCPUMax:] <= 50
IfTrueAction=[!SetVariable TempCPUMaxVar 0][!SetVariable TempStatusLevelVar 0]
IfCondition2=([TempCPUMax:] > 50) && ([TempCPUMax:] <= 70)
IfTrueAction2=[!SetVariable TempCPUMaxVar 1][!SetVariable TempStatusLevelVar 1]
IfCondition3=[TempCPUMax:] > 70
IfTrueAction3=[!SetVariable TempCPUMaxVar 2][!SetVariable TempStatusLevelVar 2]

;No Meter
[TempStatusLevelCheck1]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCPUMaxVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCPUMaxVar#]

[TempCPUPower]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=Power
DynamicVariables=1
IfCondition=[TempCPUPower:] <= 50
IfTrueAction=[!SetVariable TempCPUPowerVar 0][!SetOption MeterTempTDPLabel FontColor #White#][!SetOption MeterTempTDPValues FontColor #White#][!UpdateMeter "MeterTempTDPLabel"][!UpdateMeter "MeterTempTDPValues"]
IfCondition2=([TempCPUPower:] > 50) && ([TempCPUPower:] <= 70)
IfTrueAction2=[!SetVariable TempCPUPowerVar 1][!SetOption MeterTempTDPLabel FontColor #MyYellow#][!SetOption MeterTempTDPValues FontColor #MyYellow#][!UpdateMeter "MeterTempTDPLabel"][!UpdateMeter "MeterTempTDPValues"]
IfCondition3=[TempCPUPower:] > 70
IfTrueAction3=[!SetVariable TempCPUPowerVar 2][!SetOption MeterTempTDPLabel FontColor #MyRed#][!SetOption MeterTempTDPValues FontColor #MyRed#][!UpdateMeter "MeterTempTDPLabel"][!UpdateMeter "MeterTempTDPValues"]

;No Meter
[TempStatusLevelCheck2]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCPUPowerVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCPUPowerVar#]

[TempTDP]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=Tdp

[TempCPUVoltageID]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=Vid

[TempTJMax]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=0
CoreTempType=TjMax

[TempCore0]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=0
CoreTempType=Temperature
DynamicVariables=1
IfCondition=[TempCore0:] <= 50
IfTrueAction=[!SetVariable TempCore0Var 0][!SetOption MeterTempCore0Label FontColor #White#][!SetOption MeterTempCore0Values FontColor #White#][!UpdateMeter "MeterTempCore0Label"][!UpdateMeter "MeterTempCore0Values"]
IfCondition2=([TempCore0:] > 50) && ([TempCore0:] <= 70)
IfTrueAction2=[!SetVariable TempCore0Var 1][!SetOption MeterTempCore0Label FontColor #MyYellow#][!SetOption MeterTempCore0Values FontColor #MyYellow#][!UpdateMeter "MeterTempCore0Label"][!UpdateMeter "MeterTempCore0Values"]
IfCondition3=[TempCore0:] > 70
IfTrueAction3=[!SetVariable TempCore0Var 2][!SetOption MeterTempCore0Label FontColor #MyRed#][!SetOption MeterTempCore0Values FontColor #MyRed#][!UpdateMeter "MeterTempCore0Label"][!UpdateMeter "MeterTempCore0Values"]

;No Meter
[TempStatusLevelCheck3]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCore0Var#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCore0Var#]

[TempCore1]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=1
CoreTempType=Temperature
DynamicVariables=1
IfCondition=[TempCore1:] <= 50
IfTrueAction=[!SetVariable TempCore1Var 0][!SetOption MeterTempCore1Label FontColor #White#][!SetOption MeterTempCore1Values FontColor #White#][!UpdateMeter "MeterTempCore1Label"][!UpdateMeter "MeterTempCore1Values"]
IfCondition2=([TempCore1:] > 50) && ([TempCore1:] <= 70)
IfTrueAction2=[!SetVariable TempCore1Var 1][!SetOption MeterTempCore1Label FontColor #MyYellow#][!SetOption MeterTempCore1Values FontColor #MyYellow#][!UpdateMeter "MeterTempCore1Label"][!UpdateMeter "MeterTempCore1Values"]
IfCondition3=[TempCore1:] > 70
IfTrueAction3=[!SetVariable TempCore1Var 2][!SetOption MeterTempCore1Label FontColor #MyRed#][!SetOption MeterTempCore1Values FontColor #MyRed#][!UpdateMeter "MeterTempCore1Label"][!UpdateMeter "MeterTempCore1Values"]

;No Meter
[TempStatusLevelCheck4]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCore1Var#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCore1Var#]

[TempCore2]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=2
CoreTempType=Temperature
DynamicVariables=1
IfCondition=[TempCore2:] <= 50
IfTrueAction=[!SetVariable TempCore2Var 0][!SetOption MeterTempCore2Label FontColor #White#][!SetOption MeterTempCore2Values FontColor #White#][!UpdateMeter "MeterTempCore2Label"][!UpdateMeter "MeterTempCore2Values"]
IfCondition2=([TempCore2:] > 50) && ([TempCore2:] <= 70)
IfTrueAction2=[!SetVariable TempCore2Var 1][!SetOption MeterTempCore2Label FontColor #MyYellow#][!SetOption MeterTempCore2Values FontColor #MyYellow#][!UpdateMeter "MeterTempCore2Label"][!UpdateMeter "MeterTempCore2Values"]
IfCondition3=[TempCore2:] > 70
IfTrueAction3=[!SetVariable TempCore2Var 2][!SetOption MeterTempCore2Label FontColor #MyRed#][!SetOption MeterTempCore2Values FontColor #MyRed#][!UpdateMeter "MeterTempCore2Label"][!UpdateMeter "MeterTempCore2Values"]

;No Meter
[TempStatusLevelCheck5]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCore2Var#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCore2Var#]

[TempCore3]
Measure=Plugin
Plugin=CoreTemp
CoreTempIndex=3
CoreTempType=Temperature
DynamicVariables=1
IfCondition=[TempCore3:] <= 50
IfTrueAction=[!SetVariable TempCore3Var 0][!SetOption MeterTempCore3Label FontColor #White#][!SetOption MeterTempCore3Values FontColor #White#][!UpdateMeter "MeterTempCore3Label"][!UpdateMeter "MeterTempCore3Values"]
IfCondition2=([TempCore3:] > 50) && ([TempCore3:] <= 70)
IfTrueAction2=[!SetVariable TempCore3Var 1][!SetOption MeterTempCore3Label FontColor #MyYellow#][!SetOption MeterTempCore3Values FontColor #MyYellow#][!UpdateMeter "MeterTempCore3Label"][!UpdateMeter "MeterTempCore3Values"]
IfCondition3=[TempCore3:] > 70
IfTrueAction3=[!SetVariable TempCore3Var 2][!SetOption MeterTempCore3Label FontColor #MyRed#][!SetOption MeterTempCore3Values FontColor #MyRed#][!UpdateMeter "MeterTempCore3Label"][!UpdateMeter "MeterTempCore3Values"]

;No Meter
[TempStatusLevelCheck6]
Measure=Calc
Formula=#TempStatusLevelVar# - #TempCore3Var#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable TempStatusLevelVar #TempCore3Var#]

;No Meter
[TempStatusLevel]
Measure=Calc
Formula=#TempStatusLevelVar#
DynamicVariables=1
IfCondition=([TempStatusLevel:]=0)
IfTrueAction=[!SetOption MeterTempCircle LineColor #MyGreen#][!SetOption MeterTempCPUMax FontColor #MyGreen#][!SetOption MeterTempTJMaxLabel FontColor #White#][!SetOption MeterTempTJMaxValues FontColor #White#][!UpdateMeter "MeterTempCircle"][!UpdateMeter "MeterTempCPUMax"][!UpdateMeter "MeterTempTJMaxLabel"][!UpdateMeter "MeterTempTJMaxValues"]
IfCondition2=([TempStatusLevel:]=1)
IfTrueAction2=[!SetOption MeterTempCircle LineColor #MyYellow#][!SetOption MeterTempCPUMax FontColor #MyYellow#][!SetOption MeterTempTJMaxLabel FontColor #MyYellow#][!SetOption MeterTempTJMaxValues FontColor #MyYellow#][!UpdateMeter "MeterTempCircle"][!UpdateMeter "MeterTempCPUMax"][!UpdateMeter "MeterTempTJMaxLabel"][!UpdateMeter "MeterTempTJMaxValues"]
IfCondition3=([TempStatusLevel:]=2)
IfTrueAction3=[!SetOption MeterTempCircle LineColor #MyRed#][!SetOption MeterTempCPUMax FontColor #MyRed#][!SetOption MeterTempTJMaxLabel FontColor #MyRed#][!SetOption MeterTempTJMaxValues FontColor #MyRed#][!UpdateMeter "MeterTempCircle"][!UpdateMeter "MeterTempCPUMax"][!UpdateMeter "MeterTempTJMaxLabel"][!UpdateMeter "MeterTempTJMaxValues"]

;==================================================
; Memory
;==================================================

;No Meter
[MemoryStatusLevelReset]
Measure=Calc
Formula=#MemoryStatusLevelVar#
DynamicVariables=1
IfAboveValue=0
IfAboveAction=[!SetVariable MemoryStatusLevelVar 0]

[MemoryRAMTotal]
Measure=PhysicalMemory
Total=1

[MemoryRAMFree]
Measure=PhysicalMemory
InvertMeasure=1

;No Meter
[MemoryRAMFreePercent]
Measure=Calc
Formula=(MemoryRAMFree/MemoryRAMTotal)*100
DynamicVariables=1
IfCondition=[MemoryRAMFreePercent:] > 50
IfTrueAction=[!SetVariable MemoryRAMFreePercentVar 0][!SetVariable MemoryStatusLevelVar 0][!SetOption MeterMemoryFreeLabel FontColor #White#][!SetOption MeterMemoryFreeValues FontColor #White#][!UpdateMeter "MeterMemoryFreeLabel"][!UpdateMeter "MeterMemoryFreeValues"]
IfCondition2=([MemoryRAMFreePercent:] > 10) && ([MemoryRAMFreePercent:] <= 50)
IfTrueAction2=[!SetVariable MemoryRAMFreePercentVar 1][!SetVariable MemoryStatusLevelVar 1][!SetOption MeterMemoryFreeLabel FontColor #MyYellow#][!SetOption MeterMemoryFreeValues FontColor #MyYellow#][!UpdateMeter "MeterMemoryFreeLabel"][!UpdateMeter "MeterMemoryFreeValues"]
IfCondition3=[MemoryRAMFreePercent:] <= 10
IfTrueAction3=[!SetVariable MemoryRAMFreePercentVar 2][!SetVariable MemoryStatusLevelVar 2][!SetOption MeterMemoryFreeLabel FontColor #MyRed#][!SetOption MeterMemoryFreeValues FontColor #MyRed#][!UpdateMeter "MeterMemoryFreeLabel"][!UpdateMeter "MeterMemoryFreeValues"]

;No Meter
;[MemoryStatusLevelCheck1]
;Measure=Calc
;Formula=#MemoryStatusLevelVar# - #MemoryRAMFreePercentVar#
;DynamicVariables=1
;IfBelowValue=0
;IfBelowAction=[!SetVariable MemoryStatusLevelVar #MemoryRAMFreePercentVar#]

[MemoryRAMUsage]
Measure=PhysicalMemory

[MemorySWAPTotal]
Measure=SwapMemory
Total=1

[MemorySWAPFree]
Measure=SwapMemory
InvertMeasure=1

[MemorySWAPUsage]
Measure=SwapMemory

[MemoryPagefileTotal]
Measure=Calc
Formula=MemorySWAPTotal-MemoryRAMTotal

[MemoryPagefileUsage]
Measure=Calc
Formula=MemorySWAPUsage-MemoryRAMUsage

[MemoryPagefileUsagePercent]
Measure=Calc
Formula=(MemoryPagefileUsage/MemoryPagefileTotal)*100

[MemoryPagefileFree]
Measure=Calc
Formula=MemoryPagefileTotal-MemoryPagefileUsage

[MemoryPagefileFreePercent]
Measure=Calc
Formula=(MemoryPagefileFree/MemoryPagefileTotal)*100

[Handles]
Measure=Plugin
Plugin=ResMon
ResCountType=Handle
DynamicVariables=1

[PageFile]
Measure=Plugin
Plugin=SysInfo
SysInfoType=PAGESIZE
SysInfoData=BEST
DynamicVariables=1

[MemoryCache]
Measure=Plugin
Plugin=UsageMonitor
Category=Memory
Counter=Cache Bytes
Index=0
DynamicVariables=1
IfCondition=[MemoryCache:] <= 314572800
IfTrueAction=[!SetVariable MemoryCacheVar 0][!SetOption MeterMemoryCacheLabel FontColor #White#][!SetOption MeterMemoryCacheValues FontColor #White#][!UpdateMeter "MeterMemoryCacheLabel"][!UpdateMeter "MeterMemoryCacheValues"]
IfCondition2=[MemoryCache:] > 314572800
IfTrueAction2=[!SetVariable MemoryCacheVar 1][!SetOption MeterMemoryCacheLabel FontColor #MyYellow#][!SetOption MeterMemoryCacheValues FontColor #MyYellow#][!UpdateMeter "MeterMemoryCacheLabel"][!UpdateMeter "MeterMemoryCacheValues"]

;No Meter
[MemoryStatusLevelCheck2]
Measure=Calc
Formula=#MemoryStatusLevelVar# - #MemoryCacheVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable MemoryStatusLevelVar #MemoryCacheVar#]

[MemoryCacheScale]
Measure=Calc
Formula=MemoryCache

[MemoryPages]
Measure=Plugin
Plugin=UsageMonitor
Category=Memory
Counter=Pages/sec
Index=0
DynamicVariables=1
IfCondition=([MemoryPages:] = 0)
IfTrueAction=[!SetVariable MemoryPagesVar 0][!SetOption MeterMemoryPagesLabel FontColor #White#][!SetOption MeterMemoryPagesValues FontColor #White#][!UpdateMeter "MeterMemoryPagesLabel"][!UpdateMeter "MeterMemoryPagesValues"]
IfCondition2=([MemoryPages:] > 0) && ([MemoryPages:2] <= 1000)
IfTrueAction2=[!SetVariable MemoryPagesVar 1][!SetOption MeterMemoryPagesLabel FontColor #MyYellow#][!SetOption MeterMemoryPagesValues FontColor #MyYellow#][!UpdateMeter "MeterMemoryPagesLabel"][!UpdateMeter "MeterMemoryPagesValues"]
IfCondition3=[MemoryPages:] > 1000
IfTrueAction3=[!SetVariable MemoryPagesVar 2][!SetOption MeterMemoryPagesLabel FontColor #MyRed#][!SetOption MeterMemoryPagesValues FontColor #MyRed#][!UpdateMeter "MeterMemoryPagesLabel"][!UpdateMeter "MeterMemoryPagesValues"]

;No Meter
[MemoryStatusLevelCheck3]
Measure=Calc
Formula=#MemoryStatusLevelVar# - #MemoryPagesVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable MemoryStatusLevelVar #MemoryPagesVar#]

[PagingUsage]
Measure=Plugin
Plugin=UsageMonitor
Category=Paging File
Counter=% Usage
Index=0
MinValue=0
MaxValue=100
DynamicVariables=1
IfCondition=([PagingUsage:] = 0)
IfAboveAction=[!SetVariable PagingUsageVar 0][!SetOption MeterPagingUsageLabel FontColor #White#][!SetOption MeterPagingUsageValues FontColor #White#][!UpdateMeter "MeterPagingUsageLabel"][!UpdateMeter "MeterPagingUsageValues"]
IfCondition2=([PagingUsage:] > 0) && ([PagingUsage:] <= 10)
IfAboveAction2=[!SetVariable PagingUsageVar 1][!SetOption MeterPagingUsageLabel FontColor #MyYellow#][!SetOption MeterPagingUsageValues FontColor #MyYellow#][!UpdateMeter "MeterPagingUsageLabel"][!UpdateMeter "MeterPagingUsageValues"]
IfCondition3=[PagingUsage:] > 10
IfAboveAction3=[!SetVariable PagingUsageVar 2][!SetOption MeterPagingUsageLabel FontColor #MyRed#][!SetOption MeterPagingUsageValues FontColor #MyRed#][!UpdateMeter "MeterPagingUsageLabel"][!UpdateMeter "MeterPagingUsageValues"]

;No Meter
[MemoryStatusLevelCheck4]
Measure=Calc
Formula=#MemoryStatusLevelVar# - #PagingUsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable MemoryStatusLevelVar #PagingUsageVar#]

[TotalVRAM]
Measure=Plugin
Plugin=UsageMonitor
Alias=VRAM
Index=0
MinValue=0
MaxValue=4831838208

[TotalVRAMScale]
Measure=Calc
Formula=TotalVRAM

;No Meter
[MemoryStatusLevel]
Measure=Calc
Formula=#MemoryStatusLevelVar#
DynamicVariables=1
IfCondition=([MemoryStatusLevel:]=0)
IfTrueAction=[!SetOption MeterMemoryCircle LineColor #White#][!SetOption MeterMemoryPercent FontColor #White#][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"]
IfCondition2=([MemoryStatusLevel:]=1)
IfTrueAction2=[!SetOption MeterMemoryCircle LineColor #MyYellow#][!SetOption MeterMemoryPercent FontColor #MyYellow#][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"]
IfCondition3=([MemoryStatusLevel:]=2)
IfTrueAction3=[!SetOption MeterMemoryCircle LineColor #MyRed#][!SetOption MeterMemoryPercent FontColor #MyRed#][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"]

;==================================================
; Drives
;==================================================

;--Disk1--

[Disk1Total]
Measure=FreeDiskSpace
Drive=#Disk1#
Total=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=-1

[Disk1Free]
Measure=FreeDiskSpace
Drive=#Disk1#
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5

[Disk1Used]
Measure=FreeDiskSpace
Drive=#Disk1#
InvertMeasure=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5

[Disk1Idle]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=% Idle Time
;Index=1
Name=0 C:
MinValue=0
MaxValue=100
IfBelowValue=60
IfBelowAction=[!SetOption MeterDisk1Circle LineColor #MyRed#][!SetOption MeterDisk1CircleLabel FontColor #MyRed#][!SetOption MeterDisk1IdleLabel FontColor #MyRed#][!SetOption MeterDisk1IdleValues FontColor #MyRed#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1IdleLabel"][!UpdateMeter "MeterDisk1IdleValues"]
IfBelowValue=80
IfBelowAction=[!SetOption MeterDisk1Circle LineColor #MyYellow#][!SetOption MeterDisk1CircleLabel FontColor #MyYellow#][!SetOption MeterDisk1IdleLabel FontColor #MyYellow#][!SetOption MeterDisk1IdleValues FontColor #MyYellow#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1IdleLabel"][!UpdateMeter "MeterDisk1IdleValues"]
IfAboveValue=80
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #White#][!SetOption MeterDisk1CircleLabel FontColor #White#][!SetOption MeterDisk1IdleLabel FontColor #White#][!SetOption MeterDisk1IdleValues FontColor #White#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1IdleLabel"][!UpdateMeter "MeterDisk1IdleValues"]

[Disk1Read]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Avg. Disk sec/Read
;Index=1
Name=0 C:

[Disk1ReadScale]
Measure=Calc
Formula=Disk1Read*1000
IfAboveValue=20
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyRed#][!SetOption MeterDisk1CircleLabel FontColor #MyRed#][!SetOption MeterDisk1ReadLabel FontColor #MyRed#][!SetOption MeterDisk1ReadValues FontColor #MyRed#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1ReadLabel"][!UpdateMeter "MeterDisk1ReadValues"]
IfAboveValue=10
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyYellow#][!SetOption MeterDisk1CircleLabel FontColor #MyYellow#][!SetOption MeterDisk1ReadLabel FontColor #MyYellow#][!SetOption MeterDisk1ReadValues FontColor #MyYellow#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1ReadLabel"][!UpdateMeter "MeterDisk1ReadValues"]
IfBelowValue=10
IfBelowAction=[!SetOption MeterDisk1Circle LineColor #White#][!SetOption MeterDisk1CircleLabel FontColor #White#][!SetOption MeterDisk1ReadLabel FontColor #White#][!SetOption MeterDisk1ReadValues FontColor #White#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1ReadLabel"][!UpdateMeter "MeterDisk1ReadValues"]

[Disk1Write]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Avg. Disk sec/Write
;Index=1
Name=0 C:

[Disk1WriteScale]
Measure=Calc
Formula=Disk1Write*1000
IfAboveValue=20
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyRed#][!SetOption MeterDisk1CircleLabel FontColor #MyRed#][!SetOption MeterDisk1WriteLabel FontColor #MyRed#][!SetOption MeterDisk1WriteValues FontColor #MyRed#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1WriteLabel"][!UpdateMeter "MeterDisk1WriteValues"]
IfAboveValue=10
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyYellow#][!SetOption MeterDisk1CircleLabel FontColor #MyYellow#][!SetOption MeterDisk1WriteLabel FontColor #MyYellow#][!SetOption MeterDisk1WriteValues FontColor #MyYellow#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1WriteLabel"][!UpdateMeter "MeterDisk1WriteValues"]
IfBelowValue=10
IfBelowAction=[!SetOption MeterDisk1Circle LineColor #White#][!SetOption MeterDisk1CircleLabel FontColor #White#][!SetOption MeterDisk1WriteLabel FontColor #White#][!SetOption MeterDisk1WriteValues FontColor #White#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1WriteLabel"][!UpdateMeter "MeterDisk1WriteValues"]

[Disk1Queue]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Current Disk Queue Length
;Index=1
Name=0 C:
IfEqualValue=0
IfEqualAction=[!SetOption MeterDisk1Circle LineColor #White#][!SetOption MeterDisk1CircleLabel FontColor #White#][!SetOption MeterDisk1QueueLabel FontColor #White#][!SetOption MeterDisk1QueueValues FontColor #White#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1QueueLabel"][!UpdateMeter "MeterDisk1QueueValues"]
IfAboveValue=2
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyRed#][!SetOption MeterDisk1CircleLabel FontColor #MyRed#][!SetOption MeterDisk1QueueLabel FontColor #MyRed#][!SetOption MeterDisk1QueueValues FontColor #MyRed#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1QueueLabel"][!UpdateMeter "MeterDisk1QueueValues"]
IfAboveValue=0
IfAboveAction=[!SetOption MeterDisk1Circle LineColor #MyYellow#][!SetOption MeterDisk1CircleLabel FontColor #MyYellow#][!SetOption MeterDisk1QueueLabel FontColor #MyYellow#][!SetOption MeterDisk1QueueValues FontColor #MyYellow#][!UpdateMeter "MeterDisk1Circle"][!UpdateMeter "MeterDisk1CircleLabel"][!UpdateMeter "MeterDisk1QueueLabel"][!UpdateMeter "MeterDisk1QueueValues"]

;--Disk2--

[Disk2Total]
Measure=FreeDiskSpace
Drive=#Disk2#
Total=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=-1

[Disk2Free]
Measure=FreeDiskSpace
Drive=#Disk2#
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5

[Disk2Used]
Measure=FreeDiskSpace
Drive=#Disk2#
InvertMeasure=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5

[Disk2Idle]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=% Idle Time
;Index=2
Name=1 D:
MinValue=0
MaxValue=100
IfBelowValue=60
IfBelowAction=[!SetOption MeterDisk2Circle LineColor #MyRed#][!SetOption MeterDisk2CircleLabel FontColor #MyRed#][!SetOption MeterDisk2IdleLabel FontColor #MyRed#][!SetOption MeterDisk2IdleValues FontColor #MyRed#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2IdleLabel"][!UpdateMeter "MeterDisk2IdleValues"]
IfBelowValue=80
IfBelowAction=[!SetOption MeterDisk2Circle LineColor #MyYellow#][!SetOption MeterDisk2CircleLabel FontColor #MyYellow#][!SetOption MeterDisk2IdleLabel FontColor #MyYellow#][!SetOption MeterDisk2IdleValues FontColor #MyYellow#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2IdleLabel"][!UpdateMeter "MeterDisk2IdleValues"]
IfAboveValue=80
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #White#][!SetOption MeterDisk2CircleLabel FontColor #White#][!SetOption MeterDisk2IdleLabel FontColor #White#][!SetOption MeterDisk2IdleValues FontColor #White#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2IdleLabel"][!UpdateMeter "MeterDisk2IdleValues"]

[Disk2Read]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Avg. Disk sec/Read
;Index=2
Name=1 D:

[Disk2ReadScale]
Measure=Calc
Formula=Disk2Read*1000
IfAboveValue=20
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyRed#][!SetOption MeterDisk2CircleLabel FontColor #MyRed#][!SetOption MeterDisk2ReadLabel FontColor #MyRed#][!SetOption MeterDisk2ReadValues FontColor #MyRed#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2ReadLabel"][!UpdateMeter "MeterDisk2ReadValues"]
IfAboveValue=10
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyYellow#][!SetOption MeterDisk2CircleLabel FontColor #MyYellow#][!SetOption MeterDisk2ReadLabel FontColor #MyYellow#][!SetOption MeterDisk2ReadValues FontColor #MyYellow#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2ReadLabel"][!UpdateMeter "MeterDisk2ReadValues"]
IfBelowValue=10
IfBelowAction=[!SetOption MeterDisk2Circle LineColor #White#][!SetOption MeterDisk2CircleLabel FontColor #White#][!SetOption MeterDisk2ReadLabel FontColor #White#][!SetOption MeterDisk2ReadValues FontColor #White#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2ReadLabel"][!UpdateMeter "MeterDisk2ReadValues"]

[Disk2Write]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Avg. Disk sec/Write
;Index=2
Name=1 D:

[Disk2WriteScale]
Measure=Calc
Formula=Disk2Write*1000
IfAboveValue=20
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyRed#][!SetOption MeterDisk2CircleLabel FontColor #MyRed#][!SetOption MeterDisk2WriteLabel FontColor #MyRed#][!SetOption MeterDisk2WriteValues FontColor #MyRed#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2WriteLabel"][!UpdateMeter "MeterDisk2WriteValues"]
IfAboveValue=10
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyYellow#][!SetOption MeterDisk2CircleLabel FontColor #MyYellow#][!SetOption MeterDisk2WriteLabel FontColor #MyYellow#][!SetOption MeterDisk2WriteValues FontColor #MyYellow#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2WriteLabel"][!UpdateMeter "MeterDisk2WriteValues"]
IfBelowValue=10
IfBelowAction=[!SetOption MeterDisk2Circle LineColor #White#][!SetOption MeterDisk2CircleLabel FontColor #White#][!SetOption MeterDisk2WriteLabel FontColor #White#][!SetOption MeterDisk2WriteValues FontColor #White#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2WriteLabel"][!UpdateMeter "MeterDisk2WriteValues"]

[Disk2Queue]
Measure=Plugin
Plugin=UsageMonitor
Category=PhysicalDisk
Counter=Current Disk Queue Length
;Index=2
Name=1 D:
IfEqualValue=0
IfEqualAction=[!SetOption MeterDisk2Circle LineColor #White#][!SetOption MeterDisk2CircleLabel FontColor #White#][!SetOption MeterDisk2QueueLabel FontColor #White#][!SetOption MeterDisk2QueueValues FontColor #White#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2QueueLabel"][!UpdateMeter "MeterDisk2QueueValues"]
IfAboveValue=2
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyRed#][!SetOption MeterDisk2CircleLabel FontColor #MyRed#][!SetOption MeterDisk2QueueLabel FontColor #MyRed#][!SetOption MeterDisk2QueueValues FontColor #MyRed#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2QueueLabel"][!UpdateMeter "MeterDisk2QueueValues"]
IfAboveValue=0
IfAboveAction=[!SetOption MeterDisk2Circle LineColor #MyYellow#][!SetOption MeterDisk2CircleLabel FontColor #MyYellow#][!SetOption MeterDisk2QueueLabel FontColor #MyYellow#][!SetOption MeterDisk2QueueValues FontColor #MyYellow#][!UpdateMeter "MeterDisk2Circle"][!UpdateMeter "MeterDisk2CircleLabel"][!UpdateMeter "MeterDisk2QueueLabel"][!UpdateMeter "MeterDisk2QueueValues"]

;==================================================
; Internet
;==================================================

[NetworkSSID]
Measure=Plugin
Plugin=WiFiStatus
WiFiInfoType=SSID

[NetworkQuality]
Measure=Plugin
Plugin=WiFiStatus
WiFiInfoType=Quality
IfBelowValue=26
IfBelowAction=[!SetOption MeterNetworkQuality FontColor #MyRed#][!SetOption MeterNetworkCircle LineColor #MyRed#][!UpdateMeter "MeterNetworkQuality"][!UpdateMeter "MeterNetworkCircle"]
IfBelowValue=51
IfBelowAction=[!SetOption MeterNetworkQuality FontColor #MyYellow#][!SetOption MeterNetworkCircle LineColor #MyYellow#][!UpdateMeter "MeterNetworkQuality"][!UpdateMeter "MeterNetworkCircle"]
IfAboveValue=51
IfAboveAction=[!SetOption MeterNetworkQuality FontColor #MyGreen#][!SetOption MeterNetworkCircle LineColor #MyGreen#][!UpdateMeter "MeterNetworkQuality"][!UpdateMeter "MeterNetworkCircle"]

[NetworkStatus]
Measure=Plugin
Plugin=SysInfo
SysInfoType=INTERNET_CONNECTIVITY
SysInfoData=BEST
DynamicVariables=1
IfEqualValue=1
IfEqualAction=[!SetOption MeterNetworkStatus Text "Network Status:#CRLF#CONNECTED"][!SetOption MeterNetworkCircle LineColor #MyGreen#][!UpdateMeter "MeterNetworkStatus"][!UpdateMeter "MeterNetworkCircle"]
IfBelowValue=1
IfBelowAction=[!SetOption MeterNetworkStatus Text "Network Status:#CRLF#NOT CONNECTED"][!SetOption MeterNetworkCircle LineColor #MyRed#][!UpdateMeter "MeterNetworkStatus"][!UpdateMeter "MeterNetworkCircle"]

[NetworkIP]
Measure=Plugin
Plugin=SysInfo
SysInfoType=IP_ADDRESS
SysInfoData=BEST
DynamicVariables=1

[NetworkDNS]
Measure=Plugin
Plugin=SysInfo
SysInfoType=DNS_SERVER
SysInfoData=BEST
DynamicVariables=1

[NetworkGateway]
Measure=Plugin
Plugin=SysInfo
SysInfoType=GATEWAY_ADDRESS
SysInfoData=BEST
DynamicVariables=1

[NetworkBandwidth]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Current Bandwidth
Index=0

[NetworkBandwidthScale]
Measure=Calc
Formula=NetworkBandwidth

[NetworkQueue]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Output Queue Length
Index=0
IfEqualValue=0
IfEqualAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkQueueLabel FontColor #White#][!SetOption MeterNetworkQueueValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkQueueLabel"][!UpdateMeter "MeterNetworkQueueValues"]
IfAboveValue=2
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkQueueLabel FontColor #MyRed#][!SetOption MeterNetworkQueueValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkQueueLabel"][!UpdateMeter "MeterNetworkQueueValues"]
IfAboveValue=0
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkQueueLabel FontColor #MyYellow#][!SetOption MeterNetworkQueueValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkQueueLabel"][!UpdateMeter "MeterNetworkQueueValues"]

[NetworkRate]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Bytes Total/sec
Index=0

[NetworkRateScale]
Measure=Calc
Formula=NetworkRate

;No Meter
[NetworkRatePercent]
Measure=Calc
Formula=(NetworkRate * 60)/NetworkBandwidth
IfAboveValue=0.64
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkRateLabel FontColor #MyRed#][!SetOption MeterNetworkRateValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateLabel"][!UpdateMeter "MeterNetworkRateValues"]
IfAboveValue=0.40
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkRateLabel FontColor #MyYellow#][!SetOption MeterNetworkRateValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateLabel"][!UpdateMeter "MeterNetworkRateValues"]
IfBelowValue=0.40
IfBelowAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkRateLabel FontColor #White#][!SetOption MeterNetworkRateValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateLabel"][!UpdateMeter "MeterNetworkRateValues"]

[NetworkRateIn]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Bytes Received/sec
Index=0

[NetworkRateInScale]
Measure=Calc
Formula=NetworkRateIn

;No Meter
[NetworkRateInPercent]
Measure=Calc
Formula=(NetworkRateIn * 60)/NetworkBandwidth
IfAboveValue=0.64
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkRateInLabel FontColor #MyRed#][!SetOption MeterNetworkRateInValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateInLabel"][!UpdateMeter "MeterNetworkRateInValues"]
IfAboveValue=0.40
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkRateInLabel FontColor #MyYellow#][!SetOption MeterNetworkRateInValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateInLabel"][!UpdateMeter "MeterNetworkRateInValues"]
IfBelowValue=0.40
IfBelowAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkRateInLabel FontColor #White#][!SetOption MeterNetworkRateInValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateInLabel"][!UpdateMeter "MeterNetworkRateInValues"]

[NetworkAdapterIn]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Adapter
Counter=Bytes Received/sec
Index=0

[NetworkAdapterInScale]
Measure=Calc
Formula=NetworkAdapterIn

;No Meter
[NetworkAdapterInPercent]
Measure=Calc
Formula=(NetworkAdapterIn * 60)/NetworkBandwidth
IfAboveValue=0.64
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkAdapterInLabel FontColor #MyRed#][!SetOption MeterNetworkAdapterInValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterInLabel"][!UpdateMeter "MeterNetworkAdapterInValues"]
IfAboveValue=0.40
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkAdapterInLabel FontColor #MyYellow#][!SetOption MeterNetworkAdapterInValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterInLabel"][!UpdateMeter "MeterNetworkAdapterInValues"]
IfBelowValue=0.40
IfBelowAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkAdapterInLabel FontColor #White#][!SetOption MeterNetworkAdapterInValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterInLabel"][!UpdateMeter "MeterNetworkAdapterInValues"]

[NetworkRateOut]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Bytes Sent/sec
Index=0

[NetworkRateOutScale]
Measure=Calc
Formula=NetworkRateOut

;No Meter
[NetworkRateOutPercent]
Measure=Calc
Formula=(NetworkRateOut * 60)/NetworkBandwidth
IfAboveValue=0.64
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkRateOutLabel FontColor #MyRed#][!SetOption MeterNetworkRateOutValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateOutLabel"][!UpdateMeter "MeterNetworkRateOutValues"]
IfAboveValue=0.40
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkRateOutLabel FontColor #MyYellow#][!SetOption MeterNetworkRateOutValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateOutLabel"][!UpdateMeter "MeterNetworkRateOutValues"]
IfBelowValue=0.40
IfBelowAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkRateOutLabel FontColor #White#][!SetOption MeterNetworkRateOutValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkRateOutLabel"][!UpdateMeter "MeterNetworkRateOutValues"]

[NetworkAdapterOut]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Adapter
Counter=Bytes Sent/sec
Index=0

[NetworkAdapterOutScale]
Measure=Calc
Formula=NetworkAdapterOut

;No Meter
[NetworkAdapterOutPercent]
Measure=Calc
Formula=(NetworkAdapterOut * 60)/NetworkBandwidth
IfAboveValue=0.64
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyRed#][!SetOption MeterNetworkAdapterOutLabel FontColor #MyRed#][!SetOption MeterNetworkAdapterOutValues FontColor #MyRed#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterOutLabel"][!UpdateMeter "MeterNetworkAdapterOutValues"]
IfAboveValue=0.40
IfAboveAction=[!SetOption MeterNetworkCircle LineColor #MyYellow#][!SetOption MeterNetworkAdapterOutLabel FontColor #MyYellow#][!SetOption MeterNetworkAdapterOutValues FontColor #MyYellow#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterOutLabel"][!UpdateMeter "MeterNetworkAdapterOutValues"]
IfBelowValue=0.40
IfBelowAction=[!SetOption MeterNetworkCircle LineColor #MyGreen#][!SetOption MeterNetworkAdapterOutLabel FontColor #White#][!SetOption MeterNetworkAdapterOutValues FontColor #White#][!UpdateMeter "MeterNetworkCircle"][!UpdateMeter "MeterNetworkAdapterOutLabel"][!UpdateMeter "MeterNetworkAdapterOutValues"]

[NetworkPackets]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Packets/sec
Index=0

[NetworkPacketsIn]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Packets Received/sec
Index=0

[NetworkPacketsOut]
Measure=Plugin
Plugin=UsageMonitor
Category=Network Interface
Counter=Packets Sent/sec
Index=0

;======================================================================================================================================================
;======================================================================================================================================================
; METERS
;======================================================================================================================================================
;======================================================================================================================================================

;==================================================
; Styles
;==================================================

[AllStyle]
FontFace=Segoe UI Light
FontColor=255,255,255,255
SolidColor=0,0,0,1
StringAlign=Left
AntiAlias=1
DynamicVariables=1

[RightStyle]
X=320
StringAlign=Right

;==================================================
; Processor
;==================================================

[MeterCPUBackground]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterCPUContainer"][!UpdateMeter "MeterCPUContainer"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterCPUContainer"][!UpdateMeter "MeterCPUContainer"][!Redraw]

[MeterCPUCircleBack]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1

[MeterCPUCircle]
Meter=Roundline
MeasureName=CPUUsage
X=0r
Y=0r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#White#
AntiAlias=1
DynamicVariables=1

[MeterCPUPercent]
Meter=String
FontFace=Segoe UI
FontSize=8
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
AntiAlias=1
DynamicVariables=1
Text=[CPUUsage:0]%

[MeterCPULabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=25r
Y=-20r
Text=CPU: #CPUUsageVar#,#Core0UsageVar#,#Core1UsageVar#,#Core2UsageVar#,#Core3UsageVar#:#CPUStatusLevelVar#

[MeterCPULine]
Meter=Line
MeasureName=CPUUsage
X=0r
Y=0r
W=135
H=35
LineCount=1
LineColor=#White#
LineWidth=1

;==================================================
; Processor Dropdown
;==================================================

[MeterCPUContainer]
Meter=Shape
Shape=Rectangle 0,0,320,183 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=5R
Hidden=1

[MeterCPUName]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
MeasureName=CPUName
Y=5
X=0
Text=%1

[MeterCPUFrequencyBaseLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Base Frequency
Container=MeterCPUContainer

[MeterCPUFrequencyBaseValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=CPUFrequencyBaseScale
NumOfDecimals=2
Text=%1 GHz

[MeterCPUFrequencyLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Current Frequency

[MeterCPUFrequencyValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=CPUFrequencyScale
NumOfDecimals=2
Text=%1 GHz

[MeterCPUBusFrequencyLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=FSB Frequency x CPU Multiplier

[MeterCPUBusFrequencyValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=CPUBusSpeed
MeasureName2=CPUBusMultiplier
NumOfDecimals=2
Text=%1 MHz x %2

[MeterGDILabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=GDI Objects

[MeterGDIValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=GDI
Text=%1

[MeterTotalThreadsLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=3R
X=0
Text=System / Threads

[MeterTotalThreadsValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=[TotalThreads] : [TotalThreads:0]

[MeterCore0UsageLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Processor / % Processor Time

[MeterCore0UsageValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=Core [Core0Usage] : [Core0Usage:1]% : [Core0FrequencyScale:2] GHz

[MeterCore1UsageLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Processor / % Processor Time

[MeterCore1UsageValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=Core [Core1Usage] : [Core1Usage:1]% : [Core1FrequencyScale:2] GHz

[MeterCore2UsageLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Processor / % Processor Time

[MeterCore2UsageValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=Core [Core2Usage] : [Core2Usage:1]% : [Core2FrequencyScale:2] GHz

[MeterCore3UsageLabel]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Processor / % Processor Time

[MeterCore3UsageValues]
Meter=String
Container=MeterCPUContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=Core [Core3Usage] : [Core3Usage:1]% : [Core3FrequencyScale:2] GHz

;==================================================
; Temperature & Power
;==================================================

[MeterTempBackground]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterTempContainer"][!UpdateMeter "MeterTempContainer"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterTempContainer"][!UpdateMeter "MeterTempContainer"][!Redraw]

[MeterTempCircle]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1

[MeterTempCPUMax]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
MeasureName=TempCPUMax
AntiAlias=1
;DynamicVariables=1
Text=%1[\x00B0]

[MeterTempCPUPowerLabel]
Meter=String
MeterStyle=AllStyle
X=25r
Y=-20r
FontSize=20
MeasureName=TempCPUPower
NumOfDecimals=1
Text=%1 W #TempCPUMaxVar#,#TempCPUPowerVar#,#TempCore0Var#,#TempCore1Var#,#TempCore2Var#,#TempCore3Var#:#TempStatusLevelVar#

;==================================================
; Temperature & Power Dropdown
;==================================================

[MeterTempContainer]
Meter=Shape
Shape=Rectangle 0,0,320,130 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=5R
Hidden=1

[MeterTempTDPLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=5
X=0
Text=CPU Thermal Design Power

[MeterTempTDPValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempTDP:1] W

[MeterTempCPUVoltageIDLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=0R
X=0
Text=CPU Voltage Identifier

[MeterTempCPUVoltageIDValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempCPUVoltageID:4] v

[MeterTempTJMaxLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=0R
X=0
Text=CPU Maximum Junction Temp (TJ_max)

[MeterTempTJMaxValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempTJMax:0][\x00B0] C

[MeterTempCore0Label]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=5R
X=0
Text=CPU Core 0 Temp

[MeterTempCore0Values]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempCore0:1][\x00B0] C

[MeterTempCore1Label]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=0R
X=0
Text=CPU Core 1 Temp

[MeterTempCore1Values]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempCore1:1][\x00B0] C

[MeterTempCore2Label]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=0R
X=0
Text=CPU Core 2 Temp

[MeterTempCore2Values]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempCore2:1][\x00B0] C

[MeterTempCore3Label]
Meter=String
MeterStyle=AllStyle
Container=MeterTempContainer
Y=0R
X=0
Text=CPU Core 3 Temp

[MeterTempCore3Values]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterTempContainer
Y=0r
Text=[TempCore3:1][\x00B0] C

;==================================================
; Memory
;==================================================

[MeterMemoryBackground]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterMemoryContainer"][!UpdateMeter "MeterMemoryContainer"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterMemoryContainer"][!UpdateMeter "MeterMemoryContainer"][!Redraw]

[MeterMemoryCircleBack]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1

[MeterMemoryCircle]
Meter=Roundline
MeasureName=MemoryRAMUsage
X=0r
Y=0r
W=40
H=40
Percentual=1
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#White#
AntiAlias=1

[MeterMemoryPercent]
Meter=String
MeasureName=MemoryRAMUsage
FontFace=Segoe UI
FontSize=8
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
AntiAlias=1
Percentual=1
;DynamicVariables=1
Text=%1%
;Text=[MemoryRAMUsage:0]%

[MeterMemoryLabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=25r
Y=-20r
Text=RAM: #MemoryRAMFreePercentVar#,#MemoryCacheVar#,#MemoryPagesVar#,#PagingUsageVar#:#MemoryStatusLevelVar#

[MeterMemoryLine]
Meter=Line
MeasureName=MemoryUsage
X=0r
Y=0r
W=135
H=35
LineCount=1
LineColor=#White#
LineWidth=1

;==================================================
; Memory Dropdown
;==================================================

[MeterMemoryContainer]
Meter=Shape
Shape=Rectangle 0,0,320,285 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=5R
Hidden=1

[MeterHandlesLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5
X=0
Text=Total Open Handles:

[MeterHandlesValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=Handles
Text=%1

[MeterMemorySwapTotalLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=Memory / Commit Limit (SWAP)

[MeterMemorySWAPTotalValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemorySWAPTotal
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterMemoryRAMTotalLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Total RAM

[MeterMemoryRAMTotalValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryRAMTotal
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterMemoryPagefileTotalLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Total Pagefile

[MeterMemoryPagefileTotalValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryPagefileTotal
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterMemorySWAPFreeLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=SWAP Free

[MeterMemorySWAPFreeValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemorySWAPFree
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemorySWAPFree:%,1]%)

[MeterMemoryRAMFreeLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Memory / Available Bytes (RAM)

[MeterMemoryRAMFreeValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryRAMFree
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemoryRAMFree:%,1]%)

[MeterMemoryPagefileFreeLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Pagefile Free

[MeterMemoryPagefileFreeValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryPagefileFree
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemoryPagefileFreePercent:1]%)

[MeterMemorySWAPUsageLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=SWAP Used

[MeterMemorySWAPUsageValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemorySWAPUsage
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemorySWAPUsage:%,1]%)

[MeterMemoryRAMUsageLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=RAM Used

[MeterMemoryRAMUsageValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryRAMUsage
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemoryRAMUsage:%,1]%)

[MeterMemoryPagefileUsageLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Pagefile Used

[MeterMemoryPagefileUsageValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryPagefileUsage
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B ([MemoryPagefileUsagePercent:1]%)

[MeterMemoryCacheLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=Memory / Cache Bytes

[MeterMemoryCacheValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=MemoryCacheScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterMemoryPagesLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Memory / Pages/sec

[MeterMemoryPagesValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=[MemoryPages:1]

[MeterPagingUsageLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=Paging File / Pct Usage

[MeterPagingUsageValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
Y=0r
Text=[PagingUsage:.1]%

[MeterTotalVRAMLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=0R
X=0
Text=GPU Process Memory / Dedicated Usage

[MeterTotalVRAMValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
MeasureName=TotalVRAMScale
Y=0r
AutoScale=1
NumOfDecimals=1
Text=%1B

[MeterPageFileLabel]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle
Y=5R
X=0
Text=Total Pagefile Size:

[MeterPageFileValues]
Meter=String
Container=MeterMemoryContainer
MeterStyle=AllStyle | RightStyle
Y=0r
MeasureName=PageFile
AutoScale=1
NumOfDecimals=1
Text=%1B

;==================================================
; Drive1
;==================================================

;--Disk1--

[MeterDisk1Background]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterDisk1Container"][!UpdateMeter "MeterDisk1Container"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterDisk1Container"][!UpdateMeter "MeterDisk1Container"][!Redraw]

[MeterDisk1CircleBack]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1

[MeterDisk1Circle]
Meter=Roundline
MeasureName=Disk1Used
X=0r
Y=0r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#White#
AntiAlias=1

[MeterDisk1CircleLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
Percentual=1
AntiAlias=1
DynamicVariables=1
Text=#Disk1#

[MeterDisk1TotalLabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=25r
Y=-21r
AntiAlias=1
Text=Total:

[MeterDisk1TotalValues]
Meter=String
MeterStyle=AllStyle
MeasureName=Disk1Total
FontSize=11
X=185
Y=0r
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B

[MeterDisk1FreeLabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=50
Y=0R
AntiAlias=1
Text=Free:

[MeterDisk1FreeValues]
Meter=String
;Container=MeterDisk1BackgroundContainer
MeterStyle=AllStyle
MeasureName=Disk1Free
FontSize=11
X=185
Y=0r
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B

;==================================================
; Drive1 Dropdown
;==================================================

[MeterDisk1Container]
Meter=Shape
Shape=Rectangle 0,0,320,73 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=3R
Hidden=1

[MeterDisk1IdleLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk1Container
Y=5
X=0
Text=PhysicalDisk / % Idle Time

[MeterDisk1IdleValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk1Container
Y=0r
Text=[Disk1Idle] [Disk1Idle:1]%

[MeterDisk1ReadLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk1Container
Y=0R
X=0
Text=PhysicalDisk / Avg. Disk sec/Read

[MeterDisk1ReadValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk1Container
MeasureName=Disk1ReadScale
Y=0r
NumOfDecimals=1
Text=[Disk1Read] %1 ms

[MeterDisk1WriteLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk1Container
Y=0R
X=0
Text=PhysicalDisk / Avg. Disk sec/Write

[MeterDisk1WriteValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk1Container
MeasureName=Disk1WriteScale
Y=0r
NumOfDecimals=1
Text=[Disk1Write] %1 ms

[MeterDisk1QueueLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk1Container
Y=0R
X=0
Text=PhysicalDisk / Current Disk Queue Length

[MeterDisk1QueueValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk1Container
Y=0r
Text=[Disk1Queue] [Disk1Queue:]

;==================================================
; Drive2
;==================================================

[MeterDisk2Background]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterDisk2Container"][!UpdateMeter "MeterDisk2Container"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterDisk2Container"][!UpdateMeter "MeterDisk2Container"][!Redraw]

[MeterDisk2CircleBack]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1

[MeterDisk2Circle]
Meter=Roundline
MeasureName=Disk2Used
X=0r
Y=0r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#White#
AntiAlias=1

[MeterDisk2CircleLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
Percentual=1
AntiAlias=1
DynamicVariables=1
Text=#Disk2#

[MeterDisk2TotalLabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=25r
Y=-21r
AntiAlias=1
Text=Total:

[MeterDisk2TotalValues]
Meter=String
MeterStyle=AllStyle
MeasureName=Disk2Total
FontSize=11
X=185
Y=0r
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B

[MeterDisk2FreeLabel]
Meter=String
MeterStyle=AllStyle
FontSize=11
X=50
Y=0R
AntiAlias=1
Text=Free:

[MeterDisk2FreeValues]
Meter=String
MeterStyle=AllStyle
MeasureName=Disk2Free
FontSize=11
X=185
Y=0r
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B

;==================================================
; Drive2 Dropdown
;==================================================

[MeterDisk2Container]
Meter=Shape
Shape=Rectangle 0,0,320,73 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=3R
Hidden=1

[MeterDisk2IdleLabel]
Meter=String
MeterStyle=AllStyle
Group=Disk2Dropdown
Container=MeterDisk2Container
Y=5
X=0
Text=PhysicalDisk / % Idle Time

[MeterDisk2IdleValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk2Container
Y=0r
Text=[Disk2Idle] [Disk2Idle:1]%

[MeterDisk2ReadLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk2Container
Y=0R
X=0
Text=PhysicalDisk / Avg. Disk sec/Read

[MeterDisk2ReadValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk2Container
MeasureName=Disk2ReadScale
Y=0r
NumOfDecimals=1
Text=[Disk2Read] %1 ms

[MeterDisk2WriteLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk2Container
Y=0R
X=0
Text=PhysicalDisk / Avg. Disk sec/Write

[MeterDisk2WriteValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk2Container
MeasureName=Disk2WriteScale
Y=0r
NumOfDecimals=1
Text=[Disk2Write] %1 ms

[MeterDisk2QueueLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterDisk2Container
Y=0R
X=0
Text=PhysicalDisk / Current Disk Queue Length

[MeterDisk2QueueValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterDisk2Container
Y=0r
Text=[Disk2Queue] [Disk2Queue:]

;==================================================
; Internet
;==================================================

[MeterNetworkBackground]
Meter=Image
X=0
Y=0R
W=185
H=45
BackgroundMode=2
SolidColor=0,0,0,1
;SolidColor=#AlmostBlack#
MouseOverAction=[!ShowMeter "MeterNetworkContainer"][!UpdateMeter "MeterNetworkContainer"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterNetworkContainer"][!UpdateMeter "MeterNetworkContainer"][!Redraw]

[MeterNetworkCircle]
Meter=Roundline
X=5
Y=5r
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#White#
AntiAlias=1

[MeterNetworkQuality]
Meter=String
FontFace=Segoe UI
FontSize=8
FontColor=#White#
X=20r
Y=20r
StringAlign=CenterCenter
StringStyle=Bold
MeasureName=NetworkQuality
AntiAlias=1
;DynamicVariables=1
Text=%1%

[MeterNetworkStatus]
Meter=String
MeterStyle=AllStyle
X=25r
Y=-20r
FontSize=11
MeasureName=NetworkSSID
Text=Network Status: %1#CRLF#Searching...

;==================================================
; Internet Dropdown
;==================================================

[MeterNetworkContainer]
Meter=Shape
Shape=Rectangle 0,0,320,258 | Fill Color 0,0,0,255 | StrokeWidth 0
X=50
Y=2R
Hidden=1

[MeterNetworkSSID]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=5
X=0
MeasureName=NetworkSSID
Text=Current Network SSID: %1

[MeterNetworkIP]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=5R
X=0
MeasureName=NetworkIP
Text=IP Address: %1

[MeterNetworkDNS]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
MeasureName=NetworkDNS
Text=DNS Address: %1

[MeterNetworkGateway]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
MeasureName=NetworkGateway
Text=Gateway Address: %1

[MeterNetworkBandwidthLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=5R
X=0
Text=Network Interface / Current Bandwidth

[MeterNetworkBandwidthValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkBandwidthScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkQueueLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Output Queue Length

[MeterNetworkQueueValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
Y=0r
Text=[NetworkQueue:]

[MeterNetworkRateLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=5R
X=0
Text=Network Interface / Bytes Total/sec

[MeterNetworkRateValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkRateScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkRateInLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Bytes Received/sec

[MeterNetworkRateInValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkRateInScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkAdapterInLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Adapter / Bytes Received/sec

[MeterNetworkAdapterInValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkAdapterInScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkRateOutLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Bytes Sent/sec

[MeterNetworkRateOutValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkRateOutScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkAdapterOutLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Adapter / Bytes Sent/sec

[MeterNetworkAdapterOutValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
MeasureName=NetworkAdapterOutScale
Y=0r
AutoScale=1
NumOfDecimals=3
Text=%1B

[MeterNetworkPacketsLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Packets/sec

[MeterNetworkPacketsValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
Y=0r
Text=[NetworkPackets:2]

[MeterNetworkPacketsInLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Packets Received/sec

[MeterNetworkPacketsInValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
Y=0r
Text=[NetworkPacketsIn:2]

[MeterNetworkPacketsOutLabel]
Meter=String
MeterStyle=AllStyle
Container=MeterNetworkContainer
Y=0R
X=0
Text=Network Interface / Packets Sent/sec

[MeterNetworkPacketsOutValues]
Meter=String
MeterStyle=AllStyle | RightStyle
Container=MeterNetworkContainer
Y=0r
Text=[NetworkPacketsOut:2]

Basically, everything was working mostly as intended before I started trying to use variables. Right now I have the code is resetting the overall Meter status variable for each node at the beginning of each Measure section, checking to see whether the node status is higher than the current overall Meter status after each relevant measure is updated, then using the overall status value to set the Meter color at the end of that Measure section. Here's an example for the CPU measures:

Code: Select all

[CPUStatusLevelReset]
Measure=Calc
Formula=#CPUStatusLevelVar#
DynamicVariables=1
IfAboveValue=0
IfAboveAction=[!SetVariable CPUStatusLevelVar 0]

...

[CPUStatusLevelCheck1]  ;and 2, 3, 4, etc after each applicable measure
Measure=Calc
Formula=#CPUStatusLevelVar# - #CPUUsageVar#
DynamicVariables=1
IfBelowValue=0
IfBelowAction=[!SetVariable CPUStatusLevelVar #CPUUsageVar#]

...

[CPUStatusLevel]
Measure=Calc
Formula=#CPUStatusLevelVar#
DynamicVariables=1
IfCondition=([CPUStatusLevel:]=0)
IfTrueAction=[!SetOption MeterCPUCircle LineColor #White#][!SetOption MeterCPUPercent FontColor #White#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]
IfCondition2=([CPUStatusLevel:]=1)
IfTrueAction2=[!SetOption MeterCPUCircle LineColor #MyYellow#][!SetOption MeterCPUPercent FontColor #MyYellow#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]
IfCondition3=([CPUStatusLevel:]=2)
IfTrueAction3=[!SetOption MeterCPUCircle LineColor #MyRed#][!SetOption MeterCPUPercent FontColor #MyRed#][!UpdateMeter "MeterCPUCircle"][!UpdateMeter "MeterCPUPercent"]
This was the best method I could figure out to dynamically change a variable based on the highest value of another set of variables, and it seemed to work after I coded the CPU measure section, but by the time I got through the Memory measures the skin started slightly misbehaving during testing. Sometimes there will be a measure variable set to say level 1 but the overall status variable will be 0, or vice versa (measure variables will all be 0 but the overall status will be 1 or 2 and the Meter colors will be wrong). Here is a screenshot of the bug below after opening Chrome to temporarily load the CPU and RAM (I also added lines to some of the HUD labels so it will display all the variable values in real time):

Image

The roundline and RAM% should be at status level 1 and colored yellow while the Pages/sec is, but for some reason it's not properly updating, at least not on each skin update. I'm still brand new at this so I'm sure there is a better way to do what I want and I'm just not seeing it, or is it simply a case of too much going on in the skin that it can't do everything in 1000ms? If so, is it possible to split the node into their own skins and position them relative to each other in the Rainmeter settings so the containers continue working as intended?

Thank you so much for all your help!

Rainmeter 4.3.0.3271 beta (64-bit)
Language: English (1033)
Build time: 2018-12-19 10:27:22
Commit Hash: d01f37b5
Windows 10 Home 1809 64-bit (build 17763) - English (1033)
Path: C:\Program Files\Rainmeter\
SkinPath: C:\Users\joede\Documents\Rainmeter\Skins\
SettingsPath: C:\Users\joede\AppData\Roaming\Rainmeter\
IniFile: C:\Users\joede\AppData\Roaming\Rainmeter\Rainmeter.ini

Logfile:
Image
User avatar
balala
Rainmeter Sage
Posts: 16198
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Dynamic variables for color coding meters?

Post by balala »

JoeDeertay wrote: December 29th, 2018, 5:26 pm Basically, everything was working mostly as intended before I started trying to use variables.
First of all, there is a small mistake in the code. Due to this mistake, I doubt the code was working well. Or at least you couldn't see how it does work.
The mistake is that you've hidden the container meters. Don't hide them. Remove all Hidden=1 options, from all container meters ([MeterCPUContainer], [MeterTempContainer], [MeterMemoryContainer], [MeterDisk1Container], [MeterDisk2Container] and [MeterNetworkContainer]). The container meters anyway are not visible, you don't have to hide them. If you do hide them, nothing is shown up on your skin. And exactly this was happened: when I loaded the skin, nothing was shown up on the screen. When I removed those Hidden=1 options, the skin appeared all right.
For sure this isn't something which solves your problem, but this would be the first step to make the skin "visible".
Are you sure you've seen the skin on your screen?
JoeDeertay
Posts: 5
Joined: December 29th, 2018, 3:42 pm

Re: Dynamic variables for color coding meters?

Post by JoeDeertay »

I put the Hidden options in the containers so they would stay hidden until I moused over the sections with the roundlines that are always visible, and that's been working perfectly as expected after some trial and error messing with the container example skins. The gif I posted shows how it should work.

The problem I'm having now is color coding the roundlines based on the more detailed measures that are displayed within the containers. I said it seemed to be working at first because after testing some methods on the CPU measures it appeared to behave like I wanted, but then once I got down to the Memory measures the CPU section broke. It also takes the noticeably longer to refresh. This is making me think that the skin might be doing too much within each Update, but I can't figure out a better way to proceed.

Edit: I fixed the errors shown in the log and now it's not showing any errors, but that didn't help solve this.
User avatar
balala
Rainmeter Sage
Posts: 16198
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Dynamic variables for color coding meters?

Post by balala »

JoeDeertay wrote: December 30th, 2018, 2:32 am I put the Hidden options in the containers so they would stay hidden until I moused over the sections with the roundlines that are always visible, and that's been working perfectly as expected after some trial and error messing with the container example skins. The gif I posted shows how it should work.
Please forgive me, but I doubt it would work. Yes, I saw that gif, and I can't say precisely what have you did, but a container meter isn't visible, even if it's not hidden. Particularly you don't have to hide it, it just can't be seen. Read the first point of the second group here. In plus, although I couldn't find this written into the help (maybe I just missed it?), if you hide the containers (all of them, as you did), you won't see anything on the skin. I suppose this can explained, knowing that if a container is hidden, it has no visible parts and as such, every and all contents are hidden, because there are no solid parts of the containers.
As I said, I removed all Hidden=1 options from all container meters. Keep in mind that containers are not visible, they are hidden, without having to explicitly hide them.

On the other side, as usually, everything is alright with coloring the roundlines. For the memory for example, according to the !SetOption bangs set into the IfTrueAction options of the [MemoryRAMFreePercent] measure, the MemoryStatusLevelVar variable is set to 0 when the memory usage is above 50%, to 1 when the usage is between 10 and 50% and finally to 2, if the usage is below 10%. According to the values set for this variable, the IfTrueAction options of the [MemoryStatusLevel] measure set the color of the line and the fonts of the [MeterMemoryCircle LineColor] and [MeterMemoryPercent] meters to white, yellow and red (through the #White#, #MyYellow# and #MyRed# values). Note that I think there is a small mistake: in my opinion the colors should have to be set to red when the percent it above 50, to yellow when it is between 10 and 50 and finally to white when it is below 10. This would be much more logical.
If I am right and this is indeed what you've intended, just replace the variables into the mentioned !SetOption bangs:

Code: Select all

[MemoryStatusLevel]
Measure=Calc
Formula=#MemoryStatusLevelVar#
DynamicVariables=1
IfCondition=([MemoryStatusLevel:]=0)
IfTrueAction=[!SetOption MeterMemoryCircle LineColor "#MyRed#"][!SetOption MeterMemoryPercent FontColor "#MyRed#"][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"][!Redraw]
IfCondition2=([MemoryStatusLevel:]=1)
IfTrueAction2=[!SetOption MeterMemoryCircle LineColor "#MyYellow#"][!SetOption MeterMemoryPercent FontColor "#MyYellow#"][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"][!Redraw]
IfCondition3=([MemoryStatusLevel:]=2)
IfTrueAction3=[!SetOption MeterMemoryCircle LineColor "#White#"][!SetOption MeterMemoryPercent FontColor "#White#"][!UpdateMeter "MeterMemoryCircle"][!UpdateMeter "MeterMemoryPercent"][!Redraw]
Note that beside changing the variables I also:
  • Added quotations around the color codes, because although these codes are composed from numbers, they in fact are strings and as such it's a good idea to get used to close them into quotations. Not absolutely necessary, but recommended: https://forum.rainmeter.net/viewtopic.php?f=5&t=24426&p=129570&hilit=quote+setoption+balala#p129570.
  • Added a [!Redraw] bang to the end of each IfTrueAction. If you don't add this bang, doesn't worth to update the meters, because the skin anyway will be redrawn just on next update cycle and you'll see the changes only then. !UpdateMeter (and !UpdateMeterGroup) must have to be used in conjunction with !Redraw.
There are some more things to be improved as well, but first please check what I've described above, to see if this fixes the issue.
JoeDeertay
Posts: 5
Joined: December 29th, 2018, 3:42 pm

Re: Dynamic variables for color coding meters?

Post by JoeDeertay »

Hey balala,

Oh ok I think I see what you meant now, but the only thing taking Hidden out really did was make the skin load with all the containers visible, then once I mouse over all of the roundline backgrounds they hide and then behave as intended from that point. Leaving Hidden in the containers makes it at least load they way I want and then appears to perform exactly the same after that, so I'm just going to leave them in I guess.

I don't want those meters on the screen until I mouse over the roundline backgrounds, which will show only the container under it until I move the mouse off. I also wanted all the roundlines to move with the containers as they became visible, and at first I tried putting the meters into groups that I would hide/unhide on mouseover, but hiding the meters that way was messing up the relative positions of the roundlines if a group had more or less meters in it. Using containers instead solved that problem (I guess hidden meters have singularities that takes up pixels but containers don't? I was using 4.2 when I tried that so not sure if 4.3 fixed it), but appeared to create noticeable performance issues. Breaking out just one section in a test skin with a single container is fine, but using all 6 containers in the full skin makes it take a long time to load/refresh. Not sure if that is causing problems with the variables updating the way I mentioned in my original post, but just a thought.

As far as the problems with the color coding go, I know the code technically works as it's written for the individual container meters, but it's not working correctly when coloring the roundline based on the highest measure status level. Sometimes all the "sub"-variables for say CPU will be 0 when it's idling at like 2% (meaning the roundline should be white) but the overall status variable will be 1 and color the roundline yellow. I've also seen cases where the Memory Pages/sec variable is 1 (meaning yellow roundline), but the overall Memory status is 0 and the line is white (this bug is shown in the 2nd gif).

Also, I don't really care if anything is updated earlier than the Update cycle and can wait for each update, especially since most of the meters are using UsageMonitor anyway and that always updates once a second regardless of Update options, right? I just want to make sure everything is actually accurate when the update/redraw happens, so do I really even need the !Update or !Redraw bangs in there? I put em in just in case because I wasn't sure exactly how Update worked or whether they were actually necessary and would just trim them later if they weren't.
JoeDeertay
Posts: 5
Joined: December 29th, 2018, 3:42 pm

Re: Dynamic variables for color coding meters?

Post by JoeDeertay »

Actually, I think I've finally figured it out.

I was reading through the documentation again trying some stuff and realized I misunderstood how IfConditions and IfActions really work, and I'm pretty sure that's the reason for my issues. It seems that a condition needs to evaluate to false then true again before it will execute on updates, and since I was resetting some variables to 0 at the beginning that might be why the skin was misbehaving. I'm going to try switching from Calc to String measures and using IfMatchMode=1 to force execution on each update and let you know how that goes tomorrow.
SparkShredder
Posts: 50
Joined: November 17th, 2017, 12:00 pm

Re: Dynamic variables for color coding meters?

Post by SparkShredder »

You can use (@include)s to reduce the length of main file. For ease in editing
Put Variables and MeterStyles in different files, and they can be used by multiple skins all together.
Common codes can shared among skin same way
SparkShredder
Posts: 50
Joined: November 17th, 2017, 12:00 pm

Re: Dynamic variables for color coding meters?

Post by SparkShredder »

Another thing i didn't understood, why you even used Container option. The only thing it did was to relative positioning
Which you could have done with simple: X=.r, X=.R etc.
I'd suggest Remove Container option and add something like below to give an interactive background look:

Code: Select all

[SkinBg]
Meter=Shape
Shape=Rectangle 0,0,#Width#,#height#| Extend SkinBgFill | StrokeWidth 0
SkinBgFill=Fill Color #BackGround#
MouseOverAction=[!SetOption #CurrentSection# #CurrentSection#Fill "Fill Color #HoverGround#"][!UpdateMeter #CurrentSection#][!Redraw]
MouseLeaveAction=[!SetOption #CurrentSection# #CurrentSection#Fill "Fill Color #BackGround#"][!UpdateMeter #CurrentSection#][!Redraw]
UpdateDivider=-1
Container Option is used for giving meter a special look by cutting and editing to shape other meter, like cut parts of child Image in shape of it's container text meter. Or Give string meter a ripped effect by using a dotted or designed image container.
Using simple Rectangle Shape is virtually not useful at all.
Correct me where I'm wrong
User avatar
balala
Rainmeter Sage
Posts: 16198
Joined: October 11th, 2010, 6:27 pm
Location: Gheorgheni, Romania

Re: Dynamic variables for color coding meters?

Post by balala »

JoeDeertay wrote: December 31st, 2018, 7:29 am I'm going to try switching from Calc to String measures and using IfMatchMode=1 to force execution on each update and let you know how that goes tomorrow.
No need to switch to String measure, because IfCondition also has an IfConditionMode option. You can add this directly to the Calc measure.
SparkShredder
Posts: 50
Joined: November 17th, 2017, 12:00 pm

Re: Dynamic variables for color coding meters?

Post by SparkShredder »

Another thing, While this is not harsh on CPU at all, but , the skin is tooooo long for RainMeter to parse that It literally hanged rainmeter on my PC for 10-15 secs on loading or on refresh.
So, it would be better to divide it in several skins like CPU, NetWork, Storage, Advanced CPU, RAM