RAINMETER
 
Rainmeter is a customizable resource meter that can display various performance data in different formats. Rainmeter can measure:
  • CPU load
  • Allocated Memory
  • Network Traffic
  • NT performance data
  • Uptime
  • Free disk space
  • ...and plenty of other stuff

The data can be displayed e.g. in a histogram, a bar, bitmap frames or just plain numbers. Rainmeter also includes a plugin interface which means that the feature set can be extented with 3rd party plugins.

Windows 2000 or newer is required to run Rainmeter. It does not work in Win95, Win98 or WinME.

And no, Rainmeter does not measure how much it rained last night (though it probably could ;-)

 
 
INSTALLATION
 

IMPORTANT: Rainmeter uses gdi+, so unless you are running WindowsXP you need to download the gdiplus.dll from here (just put the dll into the same folder where Rainmeter is or into Litestep's folder if you're not running Rainmeter as standalone).

Installing for Explorer

Get the installer version of Rainmeter from http://www.rainmeter.net) and run it. If you dislike installers, you can also get the zipped archive and uncompress it to some folder. Rainmeter is ready to be used after that. Note that if you want that Rainmeter starts with the Windows you need to keep the "Startup folder"-option checked in the installation.

Installing for Litestep

To install just copy everything from the zip-file to a Rainmeter-subfolder in your Litestep-folder (i.e. wherever $litestepdir$ variable points to. Usually C:\Litestep\). You don't need the Rainmeter.exe if you are using Rainmeter as Litestep plugin, but there is no harm keeping that also in the folder.

After copying, open your step.rc and add following line:

LoadModule $litestepdir$Rainmeter\Rainmeter.dll

... and recycle. Most of the configuration of Rainmeter is done in a Rainmeter.ini file and not in the step.rc. Check the Settings-section for details.

Uninstalling

If you installed Rainmeter with the installer you can uninstall it from the "Add or Remove Programs". Otherwise just delete all the files you uncompressed from the zip-file (make sure that Rainmeter isn't running when doing that).

 
 
SETTINGS
 

There isn't any fancy settings editor, so you need to change the settings with your favorite text editor. The settings for Rainmeter are scattered to several places, but for most of you the Rainmeter.ini is the only place you need to make changes. The general configuration settings are in a Rainmeter.ini-file. The skin settings are in the skin's ini-files. The Litestep's step.rc only has few optional entries, which can be used to define the paths and select the skin.

Important! Some of the settings cannot be changed while Rainmeter is running becase a refresh will write the old values back to the ini-file. So if you cannot change something try to close Rainmeter and change the value after that.

Step.rc

RainmeterIniFile
This can be set to point to the Rainmeter.ini file if it is not placed in the default place (i.e. in the Rainmeter.dll's folder).

RainmeterSkinPath
This defines the path where the skins are. The skins must be in separate subfolders under the given folder.

RainmeterPluginPath
This defines the path where the plugins are.

RainmeterCurrentConfig
The name of current config. This can be used to force the use of some config. You must also define RainmeterCurrentConfigIni.

RainmeterCurrentConfigIni
The name of current config ini-file (only the ini-file, not the path!).

RainmeterWindowX
Sets the window's x-coordinate.

RainmeterWindowY
Sets the window's y-coordinate.

Rainmeter.ini

The file has two main sections [Rainmeter] and [Statistics]. The Rainmeter section contains general settings that can be used to change how Rainmeter behaves. The settings are used as default values for all new configs that are opened. Once the config is opened it will write the settings under its own sertion in the Rainmeter.ini file.  The Statistics section contains some things that few measures store in there. Do not modify them by hand.

One special section is [TrayMeasure], which can be used to define a measure for the tray icon. You can use any measure for this as long as it returns some meaningful values (i.e. numbers between some limits).

These must be put under [Rainmeter]-section (or under the different config sections):

WindowX
X-position of the meter window. Negative values can be used too, in which case the position is relative to right edge of the screen. If Rainmeter is ran inside a lsbox the window position should be set to 0.

WindowY
Y-position of the meter window. Negative values can be used too, in which case the position is relative to bottom edge of the screen.

AllowNegativeCoordinates
If set to 1, the negative coordinates are interpret as negative. If set to 0, they define offset from the bottom right corner of the desktop (like most Litestep modules do).

SavePosition
If set to 1, the position of the window is stored in the Rainmeter.ini file so that it'll be remembered when Rainmeter is executed the next time.

AlwaysOnTop
If set to 1, the window is always on top of other windows. If 0, the window positioning is normal. If set to -1 the window stays back of the other windows. -2 pins the window to desktop and 2 keeps the window on top of other topmost windows. Note that -2 (OnDesktop) only works with Explorer-shell.

Draggable
If set to 1, the window can be dragged around with the mouse. If 0, the window stationary.

SnapEdges
If set to 1, the window will snap to screen edges when moved.

HideOnMouseOver
If set to 1 the meter window will disappear if the mouse pointer is moved on it. The window will reappear when the mouse pointer is moved off the position where the window was. If shift, ctrl or alt is hold while moving the mouse, the window will not disappear (or reappear).

StartHidden
If set to 1, Rainmeter is hidden when started. You can use !RainmeterShow-bang to make it visible.

NativeTransparency
Set to 1 for native transparency support (only for Win2k & XP).

AlphaValue
The transparency value for the window. Use values between 0...255. Only works if native transparency is enabled.

ClickThrough
If set to 1 the mouse clicks go through the window. Only works if native transparency is enabled.

LeftMouseDownAction
Command or a bang that will be executed when the left mouse button is pressed down over the Rainmeter's window. Note that this disables the dragging.

RightMouseDownAction
Command or a bang that will be executed when the right mouse button is pressed down over the Rainmeter's window.

LeftMouseUpAction
Command or a bang that will be executed when the left mouse button is released over the Rainmeter's window.

RightMouseUpAction
Command or a bang that will be executed when the right mouse button is released over the Rainmeter's window. Note that this disables the context menu.

MouseOverAction
Command or a bang that will be executed when the mouse goes over the Rainmeter's window.

MouseLeaveAction
Command or a bang that will be executed when the mouse leaves the Rainmeter's window.

DesktopWorkArea
Sets a new work area for the desktop. The workarea defines the maximized windows cover. Use four comma separated values (e.g. DesktopWorkArea=0,0,1500,1200). Note that moving the taskbar will reset the workarea to Windows' default (changing screen resolution will do the same).

TrayIcon
Set to 0 to get rid of the tray icon.

FadeDuration
This defines the amount of time it takes to fade the window. The time is in milliseconds. To get rid of the fading set the value to 0.

TrayExecuteL, TrayExecuteM, TrayExecuteR, TrayExecuteDL, TrayExecuteDM, TrayExecuteDR
Executes a command or !bang when the tray icon is (double)clicked with the mouse. Note that TrayExecuteR will override the context menu in the tray.

OnRefreshAction
Executes a command or !bang when the config is refreshed. Refresh is done also when the config is opened the first time.

ConfigEditor
Defines the application that is used to edit the Rainmeter's configuration files. The default is Notepad.

 


These must be put under [TrayMeasure]-section:

Measure
The name of the measure which value the tray will show.

TrayMeter
This can be either HISTOGRAM is BITMAP.

TrayColor1
Defines the background color for the histogram.

TrayColor2
Defines the foreground color for the histogram.

TrayBitmap
Defines the name of the bitmap used in the tray. The bitmap can have as many frames as you like but each frame must be 16x16 in size. The path is relative to the Rainmeter's Skins-folder.

It's possible to also use icon files as the tray bitmap. You can use %i in the filename to define an increasing number from 1. E.g. TrayBitmap=tray-%i.ico would read the icons files tray-1.ico, tray-2.ico, tray-3.ico and so on as long as it can find them. The format specification can be used like in printf (e.g. TrayBitmap=tray-%02i.ico will load tray-01.ico, tray-02.ico, ...).

 

 
 
SKINS
 

The skins are placed into the Skins-folder. Each skin must be in it's own subfolder. The actual skin-file is a normal ini-file with several sections that define the skin's shape and the things it  measures and displays. The skin's subfolder can contain several ini-files, but only one of them can be active at the same time. This allows you to for example supply localized skins or different variations of some skin.

Important: Do not use spaces in the name of the folder or the ini-files.

The skin's ini-file is divided into four parts. All the general settings are put under [Rainmeter] section and the variables in [Variables]-section. After the general stuff comes the measures, which do the actual measuring of values. After the measures comes meters, which are visual representations of the measures. It is possible to bind many meters for one measure. It's not necessary to put the sections to this order but it might make the configs better organized.

The variables are keywords that are replaced in other settings. These can be used e.g. to gather user defined values to the top of the config-file so that they can be easily changed. To use a variable just surround the keyword with '#'-chars.

These must be put under [Rainmeter] section.

Background
Name of the background image. If this is omitted a copy of the desktop is taken and used as the background for the meters. Pink color (255, 0, 255) can be used as transparent color. You can use BMPs, JPGs and PNGs (with alpha channel!)

BackgroundMode
Defines the background mode:

  • 0 = Image as defined by Background
  • 1 = Transparent
  • 2 = Solid color
  • 3 = Scaled background image

BackgroundMargins
Defines the margins for the background image that are not scaled when the BackgroundMode is set to 3. E.g. BackgroundMargins=10,10,10,10

SolidColor
If the background mode is set to 2, this defines the color of the background.

SolidColor2
If the background mode is set to 2, this defines the second color of the background for gradient.

GradientAngle
If the background mode is set to 2, this defines the angle for the color gradient. The angle is defined as radians.

BevelType
This draws a bevel edge around the solid background. 0 = no bevel, 1 = raised, 2 = sunken.

Update
The update time for the meters. The value should be given in milliseconds. The default value is 1000 (i.e. one second).

DynamicWindowSize
If set to 1 the size of the window is calculated during every update. The window is scaled automatically if necessary.

DragMargins
Defines the area from where the window can be dragged. You need to define 4 values separated with comma. The values define the margin of non-draggable area. It's also possible to use negative numbers in which case the margin is calculated from the opposite side. E.g. DragMargins=0, -100, 0, 0

KeepOnScreen
Set to 1 to keep the windows always on the monitor area.

Author
The name and email of the author of the skin. The string is displayed in the about dialog.

AppVersion
The minimum version or Rainmeter that is needed by this skin. It is not necessary to define this if you don't want to. The version is a single number that can be calculated like this: Major * 1000 + Minor. E.g. a value for Rainmeter 0.11.4 would be 11004.

 
 
MEASURES
 

Each measure needs to have a unique name, which defines a section in the ini-file for that measure. The name needs to be put inside []-characters. The name doesn't matter as long as you don't use it anywhere else in the same ini-file. Do not use spaces in the names. The meters use the section names to bind to the measures. Check the supplied ini-files for examples.

Important! Some meters require a range of values (BAR, HISTOGRAM, etc), so that they can display the measured value as relative to the minimum and maximum values. Not all measures are able to calculate the minimum and maximum value automatically so you need to do that manually with MinValue and MaxValue.

General settings for all measures

Measure
This defines what is measured. The valid values are:

  • CPU - Measures total load from all CPUs (Use the PerfMon plugin if you want separate the CPUs).
  • Memory - Measures overall memory utilization.
  • PhysicalMemory - Measures allocated physical memory.
  • SwapMemory - Measures allocated swap.
  • NetIn - Measures incoming network traffic.
  • NetOut - Measures outgoing network traffic.
  • NetTotal - Measures outgoing network traffic.
  • FreeDiskSpace - Measures free diskspace.
  • PerfMon - Gets NT's performance data.
  • Uptime - Shows how long your computer has been on. This works only in a STRING-meter.
  • Plugin - Measure is defined by an external plugin.
  • Registry - Measures registry values.
  • Time - Measures time and date.
  • Calc - Calculates formulas.

InvertMeasure
If set to 1,
the measured value is inverted. E.g. you can measure allocated disk space instead of free space.

IfAboveAction
A bang or command that is executed when the measure goes above the value defined in IfAboveValue. The action is executed only when the measure exceeds the value, so it needs to go below the defined value before the action is executed again.

IfAboveValue
The value for
IfAboveAction.

IfBelowAction
A bang or command that is executed when the measure goes below the value defined in IfBelowValue. The action is executed only when the measure falls below the value, so it needs to go above the defined value before the action is executed again.

IfBelowValue
The value for
IfBelowAction.

IfEqualAction
A bang or command that is executed when the measure is equal with the value defined in IfEqualValue. The action is executed only once when the measure is equal to the value, so it needs to go above or below the defined value before the action is executed again. The value is rounded to full integer.

IfEqualValue
The value for
IfEqualAction.

Disabled
If set to 1, the measure is disabled at start.

UpdateDivider
This value determines how often the measures are updated. This is bound to the Update value. For example if the Update is set to 1000 and the UpdateDivider is 30, the measure is updated every 30 seconds. The default value is 1.

MaxValue
The maximum value the measure can have.

MinValue
The minimum value the measure can have.

Substitute
A list of comma separated value pairs that can be used to change certain value to another. You must use quotes around the values! E.g. Substitute="cat":"dog" would change all cats to dogs in the measured value.

AverageSize
Defines the window size of average measuring. E.g. if this is set to 10 the returned value is average of last ten values.


NetIn

NetInSpeed
The maximum speed of your network connection input. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input. Watch out for peaks.

TrafficAction
Action to be executed when a certain amount of data has been downloaded.

TrafficValue
The value for the TrafficAction.

Interface
The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the fisrt NIC, 2 the second, etc.

Cumulative
If set to 1, the measure gathers cumulative value (i.e. adds the measured values together). This can be used to measure the total amount of transferred data during certain timeperiod.


NetOut

NetOutSpeed
The maximum speed of your network connection output. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input.

TrafficAction
Action to be executed when a certain amount of data has been uploaded.

TrafficValue
The value for the TrafficAction.

Interface
The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the fisrt NIC, 2 the second, etc.

Cumulative
If set to 1, the measure gathers cumulative value (i.e. adds the measured values together). This can be used to measure the total amount of transferred data during certain timeperiod.


NetTotal

NetTotalSpeed
The maximum speed of your total network connection. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input.

TrafficAction
Action to be executed when a certain amount of data has been uploaded and downloaded.

TrafficValue
The value for the TrafficAction.

Interface
The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the fisrt NIC, 2 the second, etc.

Cumulative
If set to 1, the measure gathers cumulative value (i.e. adds the measured values together). This can be used to measure the total amount of transferred data during certain timeperiod.


FreeDiskSpace

Drive
This is the drive which diskspace is measured. E.g. "C:\"

Total
If set to 1 this returns the total size of the drive.

Label
If set to 1 this returns the label of the drive.


Plugin

Plugin
This defines the name of the plugin that handles the actual measuring.


Registry

RegKey
The name of the registry key.

RegHKey
The name of the HKEY. Possible values are: HKEY_CURRENT_CONFIG, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_CLASSES_ROOT, HKEY_PERFORMANCE_DATA and HKEY_DYN_DATA.

RegValue
The name of the registry keys value. Only string and long values are supported.


Time

Format
The format how the time is written. E.g. "%H:%M:%S". You can find out all the format codes from here: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_strftime.2c_.wcsftime.asp

You can also use "locale-time" and "locale-date" to use the format that is used currently in the Windows.

TimeZone
The timezone value (e.g. +2.0). You can use also fractional values. If this is not given the localtime is used.

DaylightSavingTime
If set to 1, the daylight saving time is applied to the time (it depends on your local time). This is only used if the TimeZone has been set.


Calc

Formula
This defines the calculated formula. You can use other measures as variables. There is also a special variable called Counter, which is increased on every update. The variables are updated only after all other measures are updated, so the values are one update cycle behind. Note that everything is case sensitive and the functions must be in all capital letters (e.g. SIN(10 * PI)).

Operations:

  • + (add)
  • - (substract)
  • * (multiply)
  • / (divide)
  • ** (power)
  • % (remainder)
  • & (bitwise and)
  • | (bitwise or)
  • ^ (bitwise xor)
  • ~ (bitwise not)

 Logical operations:

  • <> (not equal)
  • = (equal)
  • > (greater than)
  • < (less than)
  • && (logical and)
  • || (logical or)

Functions:

ARCTAN, ARCSIN, ARCCOS, COS, SIN, TAN, ABS, EXP, LN, LOG, SQRT, SQR, SGN, SIGN, FRAC, TRUNC, FLOOR, CEIL, ROUND(x[, precision])

Conditional operator:

<condition> ? <true expr.> : <false expr.>
 
 
METERS
 

Each meter needs to have an unique name, which defines a section in the ini-file for that meter. The name needs to be put inside []-characters. The name doesn't matter as long as you don't use it anywhere else in the same ini-file. Do not use spaces in the names.

General settings for all meters

MeasureName
The name of the measure that this meter displays.

X
The X-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g. X=5r). You can also use capital R which makes the position relative to the right edge of the previous meter.

Y
The Y-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g. Y=-10r). You can also use capital R which makes the position relative to the bottom edge of the previous meter.

W
The width of the meter. It is not necessary to define this if the width can be calculated from an image or if you are using a STRING meter. If you use the desktop as background for the Rainmeter you should always define the correct height and width for the meters or the window's dimensions might be calculated wrongly.

H
The height of the meter. This can also be left undefined under the same conditions as W.

Hidden
If set to 1, the meter is hidden.

LeftMouseDownAction
RightMouseDownAction
LeftMouseUpAction
RightMouseUpAction
MouseOverAction
MouseLeaveAction
These are the same as with the global settings except that they only apply to the specific meter. I.e. The mouse action is only executed when the mouse is on the meter's area. These settings override the global setting.

Note that the LeftMouseUpAction does not work if the window is draggable. You need to define the drag area with DragMargins so that it doesn't overlap with the meter.

UpdateDivider
This value determines how often the meter is updated. This is bound to the Update value. For example if the Update is set to 1000 and the UpdateDivider is 30, the meter is updated every 30 seconds. The default value is 1.

SolidColor
The color of the meter's background.

SolidColor2
The second color of the meter's background for gradient.

GradientAngle
The angle of the meter's background color gradient. The angle is defined as radians.

BevelType
This draws a bevel edge around the solid background. 0 = no bevel, 1 = raised, 2 = sunken.

Meter
Type of the meter. The valid values are:

  • HISTOGRAM
  • STRING
  • BAR
  • BITMAP
  • IMAGE
  • LINE
  • ROTATOR
  • BUTTON

Histogram

SecondaryMeasureName
The name of the secondary measure. This defines the measure for the secondary histogram that is drawn on the same meter. It is not necessary to define this if the other meter is not needed.

PrimaryColor
Color for the primary histogram. The colors are given in RGB format. Separate the color components with ",". E.g. PrimaryColor=10,30,255

SecondaryColor
Color for the secondary histogram.

BothColor
Color that is used when the primary and secondary histograms are on top of eachother.

PrimaryImage
Name of the image that is used behind the secondary histogram. You can only use either colors or images but not both at the same time. So, if you define PrimaryImage you must also define SecondaryImage and BothImage (if you have a secondary measure in the same histogram).

SecondaryImage
Name of the image that is used behind the secondary histogram.

BothImage
Name of the image that is used when the primary and secondary histograms are on top of eachother.

Autoscale
If set to 1, the histogram is automatically scaled to show all the values.

Flip
If set to 1 the meter is flipped upsidedown.


String

FontColor
The color of the text.

Prefix
String that is displayed before the value.

Postfix
String that is displayed after the value.

FontFace
Name of the font

FontSize
Size of the font.

StringAlign
The alignment of the string. The valid values are: LEFT, CENTER and RIGHT.

StringStyle
Style of the string. The valid values are: NORMAL, BOLD, ITALIC and BOLDITALIC.

Scale
Scaling factor for the measured value. The measured value is divided with the scale value, so in order to get 1000 times smaller values just set the scale to 1000. If the scale value has a decimal point (e.g. 1000.0) the resulting measured value is displayed as floating point value with one decimal.

AutoScale
If set to 1, the value is scaled automatically. This setting overrides Scale. The value is automatically postfixed with T, G, M or k depending how much it was scaled.

Percentual
If set to 1, the value is displayed in percents.

NumOfDecimals
The number of decimals used in the displayed value.

AntiAlias
If set to 1, the text is drawn as antialiased.

Text
The text that is displayed. Use %1 in the string to display the measured value. If this is bound to several measures just use %2, %3, etc. for different values.

ClipString
If set to 1 the width (W) of the meter clips the string. An ellipsis is added to the end of the string.

Angle
This defines the angle of the text. The value is given as radians. Note that the size of the text is still calculated as if the text would be horizontal.


Bar

BarColor
The color of the bar.

BarImage
The image that is used behind the bar. This can be used instead of the BarColor.

BarBorder
This defines how much from the beginning and end of the bitmap is always drawn.

BarOrientation
The orientation of the bar. Valid values are:

  • HORIZONTAL
  • VERTICAL

Flip
Set to 1 to flip the direction of the bar.


Bitmap

BitmapImage
This is the name of the image that holds the image frames. The images can be laid horizontally or vertically in the bitmap. The orientation is determined automatically form the hieght or the width of the bitmap (whichever is larger). Also the size of one frame is calculated automatically so you need to crop the image so that there is no extra space around the frames.

BitmapFrames
The number of  frames in the bitmap.

BitmapZeroFrame
If set to 1, the first frame is used only when the measured value is zero. Otherwise the frames are linearly determined by the measured value.

BitmapExtend
If set to 1 the bitmap is extended so display the whole value. For example if you define a bitmap that defines frames from 0 to 9 you can use this to display the measured value as the bitmap numbers. 

BitmapDigits
Number of digits that are drawn. The first frame is used if the value doesn't have as many digits as this defines. Works only when BitmapExtend is set to 1.

BitmapAlign
Defines the alignment of the bitmap value. Valid values are LEFT, CENTER and RIGHT. Works only when BitmapExtend is set to 1.


Image

Note that this meter need's not to be bound on any measure as it really doesn't show the measured value in any way. The purpose for this meter is to make skinning easier. However, if you bind this to something it tries to load the image that the measure gives out as string value. If the W and H are defined for the meter, the image is scaled to the given size.

ImageName
Name of the image to be displayed.


Line

LineCount
Number of lines in the meter. There can be any number of lines in the same meter. The below settings are set for the different lines by specifying the line number after the name. Note that the [N] for the first line is never given. So, for example to set the color of the first line you'd give "LineColor=255,0,0" and for the second line "LineColor2=0,0,0", etc.

MeasureName[N]
The name of the measure for the line [N].

LineColor[N]
The color of the line N.

Scale[N]
The scale of the line N. The measured value is multiplied with this.

AutoScale
If set to 1, the lines are automatically scaled so that the largest value is visible in the meter. If set to 0, the meter's scale is taken from the largest max value of the measures.

HorizontalLines
If set to 1 horizontal lines are drawn behind the histogram lines.

HorizontalLineColor
The color of the horizontal lines.

AntiAlias
If set to 1, the lines are drawn as antialiased.

LineWidth
Width of the line.

Flip
If set to 1 the meter is flipped upsidedown.


Roundline

LineWidth
This defines the width of the line (1.0 = one pixel).

LineLength
This defines the length of the line. The lenght is always measured from the center of rotation (no matter what the LineStart value is).

LineStart
This defines where the line start.

StartAngle
The start angle for the line. This is in radians and the zero angle is towards positive x-axis. Normal rotation direction is clockwise.

RotationAngle
The size of the rotation angle for the line. Use negative value for counter-clockwise rotation.

AntiAlias
If set to 1, the line is antialiased.

ValueRemainder
Use remainder instead of the actual measured value. This can be used to draw analog clock (check the example in the example skin files).

LineColor
The color of the line.

Solid
Set to 1 and the meter will draw a pie-chart instead.


Rotator

ImageName
Name of the image to be rotated

OffsetX
X-offset of the center of rotation.

OffsetY
Y-offset of the center of rotation.

StartAngle
The start angle for the line. This is in radians and the zero angle is towards positive x-axis. Normal rotation direction is clockwise.

RotationAngle
The size of the rotation angle for the line. Use negative value for counter-clockwise rotation.

ValueRemainder
Use remainder instead of the actual measured value. This can be used to draw analog clock (check the example in the example skin files).


Button

This not a normal meter since you cannot bind it to any measure. The purpose of it is to make button creation easier.

ButtonImage
The name of the button image. The image must have 3 frames which can be set either horizontally or vertically (The orientation is checked from the width/height of the image).

ButtonCommand
The command or !bang that is executed when the button is pressed.

 
 
SOUND
 

The Rainmeter supports audio commands that can be used in the actions (e.g. TrafficAction). Just use the build-in commands like normal commands or !bangs.

PLAY [soundfile] - Plays the given soundfile once.

PLAYLOOP [soundfile] - Plays the given soundfile as loop.

PLAYSTOP - Stops the currently playing sound.

 
 
BANGS
 

The Rainmeter can be controlled also with Litestep !Bang-commands. A bang is a special command that can be executed to change something in the application. You can use the bangs in the various actions that Rainmeter has or just run one from command line by giving it to argiument for Rainmeter.exe. Naturally you can use these from Litestep too.

Note that the [] means that you must supply the argument for the bang (do not include the []-chars). The () mean that the argument is no necessary.

Most !bangs take also the config as an optional parameter. If the config is defined the bang only applies to that particular config. If it's not given, the !bang is send to all active configs. Use * as the config's name to send it to all configs.

The !bangs actually work differently depending where they are handled. If Rainmeter is ran standalone it handles the !bangs itself and adds the name of the config automatically to the end of the argument list. This makes it so that the !bang affects only the config that executed it. If Rainmeter is ran as Litestep's plugin the !bangs are send directly to Litestep which handles them. In this case the name of the config is not added to the arguments so it affects to all active configs. The third case is when the !bang is send via Rainmeter.exe in which case the it is handled by the first Rainmeter config that can be found.

!RainmeterShow (Config)
Displays the Rainmeter-window.

!RainmeterHide (Config)
Hides the Rainmeter-window.

!RainmeterToggle (Config)
Toggles the Rainmeter-window.

!RainmeterRefresh (Config)
Reloads the configuration file. The arguments are optional. If not given the current config is reloaded. The Config and IniFile must exist in the already loaded list of configurations.

!RainmeterRedraw (Config)
Forces the redraw of the window. This also updates all the meters.

!RainmeterHideMeter [Meter] (Config)
Hides the given meter. Note that hiding meter does not stop the measurement, you also need to disable the measure if you don't want to spend the extra CPU cycles for the measuring.

!RainmeterShowMeter [Meter] (Config)
Shows the given meter if it was hidden.

!RainmeterToggleMeter [Meter] (Config)
Toggles the visibility of the given meter.

!RainmeterMoveMeter [X] [Y] [Meter] (Config)
Moves the given meter (i.e. not the window, but the meter) to a new location.

!RainmeterDisableMeasure [Measure] (Config)
Disables the given measure.

!RainmeterEnableMeasure [Measure] (Config)
Enables the given measure.

!RainmeterToggleMeasure [Measure] (Config)
Toggles the status of the given measure (i.e. disabled/enabled).

!RainmeterActivateConfig [Config] [Ini-file]
Activates a new configuration ini-file. The ini-file is just the name of the file; do not include the path.

!RainmeterDeactivateConfig [Config]
Deactivates the configuration ini-file.

!RainmeterToggleConfig [Config] [Ini-file]
Toggles the configuration ini-file.

!RainmeterMove [X] [Y] (Config)
Moves the window to new location.

!RainmeterZPos [POS] (Config)
Changes the z-position of the window. -2 = OnDesktop, -1 = OnBottom, 0 = Normal, 1 = OnTop, 2 = Topmost.

!RainmeterAbout
Opens the About dialog.

!RainmeterLsBoxHook [Config]
Special bang for lsBox. Note that you MUST give the name of the config as argument.

!RainmeterResetStats
Resets the statistics.

!RainmeterPluginBang "[MeasureName] [Arguments]"
Sends a bang to a plugin. The parameter must be inside quotes. The MeasureName defines the plugin which handles the plugin. The Arguments depend on the plugin.

!Execute
Special !bang that can be used to combine several !bangs together. The !bangs are separated with '[' and ']'-chars. You can also launch applications with this (!Execute ["C:\Windows\Notepad.exe"])

 
 
PLUGINS
 

A Rainmeter plugin is a DLL that exports these functions (it's not necessary to export all of them):

UINT Initialize(HMODULE instance, LPCTSTR iniFile, LPCTSTR section, UINT id);
void Finalize(HMODULE instance, UINT id);
UINT Update(UINT id)
double Update2(UINT id)
LPCTSTR GetString(UINT id, UINT flags)

The Initialize function is called when the measure is initialized. The function returns the maximum value that can be measured. If the maximum value is unknown the function should return 0. The plugin can also have it's own settings which can be loaded from the iniFile and the section given as parameters to the initialize function. the id-parameter is used to identify individual measures if there are several of them using the same plugin.

The Finalize is called when the measure is deleted.

The Update is called once per update period (usually once per second). The function returns the measured value. The Update2 is an alternative version of the function which can be used if the measure returns negative values.

The GetString is called when the meter needs the value as string. If this function is not implemented the value returned by the Update is converted to a string automatically.

Check the Rainmeter sources for example how to implement a plugin.

 
 
ADVANCED CPU
 
This is pretty much the same as the using the PerfMon to measure the CPU usage excapt that you can filter out processes or only include some of them.

CPUInclude
List of process names that are included in the cpu measuring. The names are separated with semicolon (";"-char). The include list overrides the excludes.

CPUExclude
List of process names that are excluded from the cpu measuring. The names are separated with semicolon (";"-char). The include list must be empty to exclude something.

TopProcess
Value 1 returns the name of the process that took the most CPU time since the last update. Value 2 returns the CPU time for that process. Note that this returns CPU time and not the percentage. If you measure the value once per second you can scale the value with 100000 to get the percentage but you should note that if the values cannot be measured excatly once per second (like it usually cannot because the timer in Windows is not accurate) you might get values larger than 100%.
 


Examples

Display the name and CPU usage of the top process:

[MeasureTopProcess]
Measure=Plugin
Plugin=Plugins\AdvancedCPU.dll
TopProcess=2
CPUExclude=Idle

[MeasureTopProcess2]
Measure=Plugin
Plugin=Plugins\AdvancedCPU.dll
TopProcess=1
CPUExclude=Idle

[MeterTopProcess]
Meter=STRING
X=0
Y=0
MeasureName=MeasureTopProcess
MeasureName2=MeasureTopProcess2
Text="%1 (%2%)"
NumOfDecimals=1
Scale=100000
 

 
 
MBM5 PLUGIN
 

You need to have MBM5 running in the background when you use this plugin. The plugin doesn't measure anything it just gets the values from MBM5. You can get MBM5 from http://mbm.livewiredev.com.

MBM5Type
This defines what should be measured. Possible values are: TEMPERATURE, FAN, MHZ, CPU and VOLTAGE.

MBM5Number
The index of the measured item. E.g. if you want to measure the temperature of the sensor 2. Note that the values start from 0.

MBM5MaxValue
The maximum value for the measured item.

 


Examples

[MeasureMBMTemp]
Measure=Plugin
Plugin=Plugins/MBM5plugin.dll
MBM5Number=0
MBM5Type=TEMPERATURE
 

 
 
PERFMON
 

Use NT's performance monitor to find out the valid values for these settings.

Important note: The names of the objects, counters and instances need to be in English also in localized versions of Windows.

PerfMonObject
The name of the performance object. E.g. Memory, Process, Processor, ...

PerfMonCounter
The name of the performance counter. E.g. "% Processor Time", "Disk Read Bytes/sec", ...

PerfMonInstance
The name of the instance. E.g. "_Total". If the counter doesn't have any instances you can leave this empty.

PerfMonDifference
If set to 1, the difference between two updates is measured instead of the actual value. This is useful as many of the performance values are counters and you usually want to know how much the counter has increased since last update. Note: This is 1 by default. You need to set it to 0 if you vant to know the current value.


Examples

Display how much Litestep process takes CPU (use Scale=100000.0 in TEXT meter if you want percentual value):

[MeasureLitestep]
Measure=Plugin
Plugin=Perfmon.dll
PerfMonObject="Process"
PerfMonCounter="% Processor Time"
PerfMonInstance=LITESTEP

Display the number of running processes:

[MeasureProcesses]
Measure=Plugin
Plugin=Perfmon.dll
PerfMonObject="System"
PerfMonCounter="Processes"
PerfMonInstance=""
PerfMonDifference=0

Display the disk access in drive C:

[MeasureDiskAccess]
Measure=Plugin
Plugin=PerfMon.dll
PerfMonObject=LogicalDisk
PerfMonCounter="Disk Bytes/sec"
PerfMonInstance=_Total
PerfMonInstance="C:"

 
 
PING PLUGIN
 

This plugin can be used to send ping packets to a server and measure the network latency.

DestAddress
The DNS address or IP-number of the server.

UpdateRate
How often the ping packet will be send to the server. This relative to the config's overall update rate.

Timeout
Defines the amount of time that the plugin waits for a reply. The value is in ms (i.e. value 30000 means 30 secs).

TimeoutValue
Defines the value that is returned when timeout happens. By default this is the Timeout.

 


Examples

[MeasurePing]
Measure=Plugin
Plugin=Plugins\PingPlugin
DestAddress=www.google.com

[MeterPing]
Meter=STRING
X=0
Y=0
MeasureName=MeasurePing
Text="google.com: %1"

 
 
POWER PLUGIN
 

This plugin can be used to measure battery status and the current MHz on laptops. Note that not all laptops support this (or all the values).

PowerState

  • ACLINE - measures if the power is hooked to ac-line (0/1).
  • STATUS - measures the status of the battery (no battery, charging, critical, low, high).
  • STATUS2 - same as STATUS except that the BatteryFlag in SYSTEM_POWER_STATUS is returned as is.
  • LIFETIME - measures the lifetime of the battery.
  • PERCENT - measures percentual lifetime.
  • MHZ - measures the current CPU MHz.

Format
This is the same as in TIME-measure. It is used only when PowerState is LIFETIME.

 


Examples

[MeasureCPUMHz]
Measure=Plugin
Plugin=Plugins\PowerPlugin.dll
PowerState=MHZ

 
 
QUOTE
 

This plugin has two different uses: it can display a random string from a text file or it can select a random file from a folder which can be displayed with the IMAGE meter (if it's an image that is).

PathName
Path to a folder or a file. If it's a folder, the plugin returns the file name of one of the files in it. If it's a file, the plugin reads a random part of text from it. The file can be ANSI or UNICODE.

Separator
A string that separates the text. The default value is \n (i.e. newline).

Subfolders
Set to 1 to scan also the subfolders.

FileFilter
This can used to filter the files by their name. It's possible to define several file filters by separating them with ';'-char. E.g. FileFilter=*.jpg;*.gif

 


Examples

Shows random image from your My Pictures folder as 200x200 thumbnail.

[MeasureQuote]
Measure=Plugin
Plugin=Plugins\QuotePlugin.dll
PathName=%HOMEDRIVE%%HOMEPATH%\My Documents\My Pictures\
Subfolders=1
FileFilter=*.jpg;*.gif

[MeterQuote]
Meter=IMAGE
X=0
Y=0
W=200
H=200
MeasureName=MeasureQuote

 
 
RESMON
 

Requires Windows XP SP1 or newer. The plugin was originally made by Daedalus.

ResCountType

  • GDI - Measures the number of GDI objects.
  • USER- Measures the number of user objects.
  • HANDLE - Measures the number of open handles.
  • WINDOW - Measures the number of windows in the system.

ProcessName
The name of the process that is measured. E.g. ProcessName=Litestep.exe would measure only Litestep's resources. Leave this empty if you want to measure all resources in the system. This has no effect if the ResCountType is set to WINDOW.

 


Examples

[MeasureResMon]
Measure=Plugin
Plugin=Plugins\ResMon.dll
ResCountType=HANDLE
ProcessName=Rainmeter.exe
 

 
 
SPEEDFAN
 

This plugin can read the values measured by SpeedFan. You need to have SpeedFan running for this plugin to work since it doesn't do any measuring itself.

SpeedFanType

  • TEMPERATURE - returns the temperature value.
  • FAN - returns the fan speed.
  • VOLTAGE - returns the voltage value.

SpeedFanNumber
This defines the index for the returned value. The indexing starts from 0 so if you want to return e.g. the second temperature value use SpeedFanNumber=1.

 


Examples

[MeasureSpeedFan]
Measure=Plugin
Plugin=Plugins\SpeedFanPlugin.dll
SpeedFanType=VOLTAGE
SpeedFanNumber=5
 

 
 
SYSINFO
 

This plugin returns various information about your system.

Note: This measure can be used only with the string meter.

SysInfoType
Type of the system information. The valid values are:

  • COMPUTER_NAME
  • USER_NAME
  • SCREEN_SIZE
  • RAS_STATUS
  • OS_VERSION
  • ADAPTER_DESCRIPTION (SysInfoData specifies the adapter)
  • NET_MASK (SysInfoData specifies which net mask, if there are several)
  • IP_ADDRESS (SysInfoData specifies which ip address, if there are several)
  • GATEWAY_ADDRESS (SysInfoData specifies the adapter)
  • HOST_NAME
  • DOMAIN_NAME
  • DNS_SERVER

SysInfoData
Additional data that some of the SysInfoType items require. This is always a number.

 


Examples

[MeasureSysInfo]
Measure=Plugin
Plugin=Plugins\SysInfo.dll
SysInfoType=GATEWAY_ADDRESS
SysInfoData=1
 

 
 
WEB PARSER
 

WebParser reads information from webpages. The plugin uses regular expressions to parse the web page which allows it to extract information pretty much from any page. The plugin can be used e.g. to get the current TV shows, weather conditions, stock exchange values, news and basically anything that is on the net. The negative side is that the regular expressions might look rather complex especially if you're not familiar with programming languages (and even if you are :-).

Url
Url to the file to be downloaded and parsed. The Url can also be another WebParser-measure, in which case the already downloaded and parsed information can be reused (e.g. when displaying different StringIndex on the same page). To do this just give the name of the measure in the Url, like this: Url=[MeasureSlashDot]

RegExp
The regular expression used in parsing. The plugin uses Perl Compatible Regular Expressions, so check the Perl docs for syntax and more info.

FinishAction
Action that is executed when the page has been downloaded and the parsing is done.

StringIndex
Defines which string from the regexp this measure returns. You can get the correct index values by setting the Debug=1, which will add all matched strings to the log-file.

StringIndex2
The second string index is used when using a RegExp in a measure that uses data from another webparser measure (i.e. the Url points to a measure and not to a real URL). In this case the StringIndex defines the index of the result of the other RegExp and the StringIndex2 defines the index of this measure's RegExp (i.e. it defines the string that the measure returns). If the RegExp is not defined in this measure the StringIndex2 has no effect.

UpdateRate
The rate how often the webpage is downloaded. This is relative to the config's main update rate. It is advisable to limit the rate so that you're not flooding the server with constant requests. The web server admins will not like it and you probably get banned from the server altogether if you try to poll the server too often. So, if the main update rate is 1000 (i.e. one second, which is the default) set this e.g. to 60 to read the webpage once per minute.

Debug
Set this to 1 and the log file will contain some useful debug information. Value 2 dumps the downloaded webpage to C:\WebParserDump.txt. This can be useful since some web servers send different information depending which client requests it. Remember to remove this from your config once you have it working correctly.

Download
If set to 1, the Url is downloaded to a temporary folder and the name to the file is returned as string value. The measure can be bound to a IMAGE meter to download images from web and show them. If the RegExp is defined the parsed string is interpreted as a link to the downloaded image.

ErrorString
String that is returned in case there is a parse error.

Proxy
Name of the proxy server. The plugin doesn't support any authentication so it's possible to use only servers that does not require it or you need a some different way to authenticate yourself to the proxy server.

CodePage
Defines the codepage of the downloaded web page. For example CodePage=28605 interprets the page as Latin 9 (ISO-8859-15). If the CodePage is set to 0 no conversion is done. CodePage=65001 means UTF-8. You can check other Windows code pages from here.


Examples

Display the title and first item from Slashdot's RSS feed.

[MeasureRSSTitle]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateDivider=3600
Url=http://slashdot.org/slashdot.rdf
RegExp="(?siU)<title>(.+)</title>(.+)<item(.+)<title>(.+)</title>"
StringIndex=1
FinishAction=!RainmeterRedraw

[MeasureRSS]
Measure=Plugin
Plugin=Plugins\WebParser.dll
Url=[MeasureRSSTitle]
StringIndex=4
Substitute="&amp;":"&"


Download the current weather map from Finnish Meteorological Institute.

[MeasureDL]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=1800
Url=http://www.fmi.fi/saa/sadejapi_5.html?selected=7
RegExp="(?siU)ennuste" SRC=\"(.*)\"></TD>"
FinishAction=!RainmeterRedraw
StringIndex=1
Download=1

[MeterImage]
Meter=IMAGE
MeasureName=MeasureDL
X=0
Y=0
W=400
H=300

 
 
WINDOW MESSAGE
 

This plugin can be used to send and receive information from other applications. It can send window messages to other applications and show the result. The plugin can be used for example to control Winamp or some similar media players.

WindowName
The name of the window. This is used to identify the window. It's not necessary to set this if the WindowClass is set.

WindowClass
The class of the window. This is used to identify the window. It's not necessary to set this if the WindowName is set.

WindowMessage
This is the message to be send to the window. You need to define 3 parameters to where the first one is the message and the next ones are wParam and lParam. The values are unsigned decimal integers. The measure returns the value returned by the SendMessage()-function. If the WindowMessage is not given the measure returns the window's current title.

It's also possible to send messages to applications with !RainmeterPluginBang. The arguments are similar as in WindowMessages. You need to define the name of the measure (this identifies the window), "SendMessage", the message number and wParam and lParam. See examples below.


Examples

This returns the name of the song that is playing in Winamp.

[MeasureWinamp]
Measure=Plugin
Plugin=Plugins\WindowMessagePlugin.dll
WindowClass=Winamp v1.x
Substitute="[Paused]":""," - Winamp":""
 

Check if Winamp is playing, or not. This returns 0 if it's not playing, 1 if it is playing and 3 if it's paused.

[MeasureWinampPlaying]
Measure=Plugin
Plugin=Plugins\WindowMessagePlugin.dll
WindowClass=Winamp v1.x
WindowMessage=1024 0 104
 

Show song progress. The  [MeasureWinampDuration] will return the current song position as a value between 0 and 1. You can use for example the BAR-meter to display the value.

[MeasureWinampFull]
Measure=Plugin
Plugin=Plugins\WindowMessagePlugin.dll
WindowClass=Winamp v1.x
WindowMessage=1024 1 105

[MeasureWinampCurr]
Measure=Plugin
Plugin=Plugins\WindowMessagePlugin.dll
WindowClass=Winamp v1.x
WindowMessage=1024 0 105

[MeasureWinampDuration]
Measure=Calc
Formula=(MeasureWinampCurr<=0)?0:(MeasureWinampCurr/(MeasureWinampFull*1000+1))

Bangs:

Prev: !RainmeterPluginBang "MeasureWinamp SendMessage 273 40044 0"
Play: !RainmeterPluginBang "MeasureWinamp SendMessage 273 40045 0"
Pause: !RainmeterPluginBang "MeasureWinamp SendMessage 273 40046 0"
Stop: !RainmeterPluginBang "MeasureWinamp SendMessage 273 40047 0"
Next: !RainmeterPluginBang "MeasureWinamp SendMessage 273 40048 0"
 

Check the wa_ipc.h in WinampSDK for more messages values and their parameters.
 

 
 
WIRELESSINFO
 

The WirelessInfo plugin was developed at some cost of time and money, but is being freely distributed. If you find the plugin valuable, please express your gratitude by donating a small amount ($1, $2, $5, whatever you wish) by clicking on the follow PayPal link.

Send any questions, comments or skins that use the plugin to christh21@comcast.net.

WirelessInfoType

  • STATUS - measures the connection status (0 - disconnected / 1 - connected)
  • CONNECTION - returns connection type (0 - Ad-hoc / 1 - Access Point)
  • SSID - measures the SSID of the current connection (string)
  • BANDWIDTH - measures the bandwidth of the current connection
  • STRENGTH - signal strength in percent
  • WEP - measures the status of WEP (0 - no WEP / 1 - WEP enabled)

WirelessInfoData
Selects the wireless network adapter (usually 0)

WirelessMin
Used only in STRENGTH meters. Specifies the minimum RSSI value your network adapter reports. A value of 100 is a minimum RSSI of -100dBm.

WirelessMax
Used only in STRENGTH meters. Specifies the maximum RSSI value your network adapter reports. A value of 50 is a maxiumum RSSI of -50dBm.

To find the Min/Max values for your adapter, use a program such as "NetStumbler" to view the dBm levels that your network card reports at different signal strengths. For most adapters use WirelessMin=100 and WirelessMax=50. These values must be correct in order to display accurate signal strength percentages.


Installing the WirelessInfo plugin

  1. In Network Connections UI, select an adapter and open Properties.

    Click Install, then Protocol, then Add, and then Have disk.
    Then point to the location of the wirelessuio.inf and driver (in the Rainmeter/Plugins directory).

    Select Wireless Usermode I/O Protocol and click OK.

  2. Start the protocol. Click Start, then Run, and type "Net start wirelessuio".
  3. If the plugin stops reporting data, close Rainmeter and run the following commands:
    "net stop wirelessuio", then "net stop wirelessuio".

Examples

[MeasureStrength]
Measure=Plugin
Plugin=Plugins\WirelessInfo.dll
WirelessInfoType=STRENGTH
WirelessInfoData=0
WirelessMin=90 ; -90dBm
WirelessMax=50 ; -50dBm

[MeasureSSID]
Measure=Plugin
Plugin=Plugins\WirelessInfo.dll
WirelessInfoType=SSID
WirelessInfoData=0
 
 
CONTACT
 

The latest version will be found from my http://www.rainmeter.net. You may also send comments and bug-reports to author but before you contact me with questions check the FAQ and the forum.

Please put the name of the product (i.e. Rainmeter) in the subject-field of the mail. It may be useful if you write the version of the product also. If you are reporting a bug, please try to be as exact as possible when describing the symptoms. Also write down the details of your system (like OS version, Rainmeter build, and so on).

It might also be helpful if you include the log-file that Rainmeter creates when sending bug-reports. On standalone version you can activate the log-file by creating an empty file called Rainmeter.log into the same forder where Rainmeter.dll is. If Rainmeter is ran as Litestep's plugin the log is written with into the Litestep's logfile (just activate it in your step.rc).

 
 
LICENSE
 
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS


 
 
HISTORY
 

22 JAN 2006 (Version 0.14 ß)

  • Webparser parses the files as UTF8 by default. The codepage can be changed with CodePage.
  • Added proxy support for the webparser.
  • The reference measures in Webparser can use RegExps to parse the substring.
  • Fixed few graphics problems with the images.
  • Fixed the background rendering bug and incompatibility problem with DynamicWindowSize.
  • Some !bangs didn't work during the first update cycle. Fixed.
  • Fixed SSID and BANDWIDTH in the WirelessPlugin.
  • WindowMessagePlugin uses PostMessage instead of SendMessage so now you can control Rainmeter with it too :-).
  • Fixed couple of crashes with !RainmeterRefresh-bang.
  • The plugin folder can be defined with RainmeterPluginPath in step.rc.
  • The AdvancedCPU can show the process that currently takes the most CPU time.
  • Substitutes are applied in the order they are defined.
  • Fixed a crash with the PingPlugin and added TimeoutValue which defines the value on timeout.
  • QuotePlugin can scan subfolders and it's possible to filter the files by extension.
  • The tray meter can load directly icon files.
  • Fixed hit test in BITMAP measure when alignments are used.
  • Format in TIME measure can show the time and date as locale specific string.
  • Added OnRefreshAction which is executed when the config is refreshed.
  • Fixed uptime in 64-bit build.

20 JUL 2005 (Version 0.13 ß)

  • Compiled as Unicode so this is Win2k/WinXP only from now on.
  • Removed wharf interface. Use !RainmeterLsBoxHook instead.
  • Some code optimizations.
  • Updated the PCRE-library in WebParser.
  • WebParser: Debug=2 Dumps the downloaded data to a file (C:\WebParserDump.txt).
  • Fixed crash bug when plugins were used as the tray measure.
  • UpdateDivider didn't work in meters. Fixed.
  • Empty substitutes are now also possible.
  • Added button meter, which should make button creation easier.
  • Removed size limitation from the section names. It should be now possible to have as many meters and measures in the skins as you like.
  • Meter background can be drawn with a gradient fill (It's quite slow so don't overuse it).
  • R (i.e capital r) in the relative position makes the meter relative to the bottom (or right) edge of the previous meter.
  • Created a quote plugin for random texts and images.
  • Created a window message plugin that allows to control other applications (e.g. Winamp).
  • Created a ping plugin for network status checking.
  • STRING meter calculates its size automatically.
  • The window size can be recalculated dynamically with DynamicWindowSize.
  • It's possible to use the string value of the measures in the actions.
  • Quoted paths work with !Execute-bang
  • MaxValue works in all plugins.
  • Configs can use environment strings.
  • Added fade effects. Set FadeDuration=0 to disable them.
  • The memory measures can show >4GB values correctly.
  • The tray histogram's colors can be changed.
  • Tray can show also a bitmap meter.
  • Snap to Edges snaps to other meter windows too
  • Added Angle to string meter.
  • Fixed the 4GB addition bug with cumulative net measures (I hope :-)
  • Font size does not change anymore with the screen DPI.
  • Added Format to Uptime measure.
  • Added BackgroundMargins and scalable background images (Use BackgroundMode=3)
  • WebParser checks references only in the same config file and not in all active configs.
  • Shift, alt and ctrl-keys don't disable mouse events anymore (except the "Hide on mouse over")
  • The drag area can be defined with DragMargins
  • Added Flip to bar meter.
  • Added "Keep on Screen"-option which makes the window to stay inside the monitor.
  • ClickThrough can be disabled with Shift-key.
  • Added ErrorString to WebParser.
  • Negative values should work with the MBM5 plugin.
  • Added IfEqualValue and IfEqualAction.
  • Added Label to the DiskSpace measure which will return the drive's label as string.
  • Mouse clicks to the tray icon can execute bangs now.
  • The about dialog shouldn't have a scrolling problem anymore.

13 AUG 2004 (Version 0.12 ß)

  • Fixed !RainmeterLsBoxHook.
  • Position changing from the menu works a bit better now.
  • Mouse over actions didn't work unless the window was set to draggable. Fixed.
  • Added automatic update checking (it can be enabled from the about dialog).
  • Sending bangs to deactivated config shouldn't crash Rainmeter anymore.
  • Fixed a typo: ValueReminder -> ValueRemainder (the old one works still too)
  • Added LineStart to the roundline-meter.

10 JUL 2004 (Version 0.11 ß)

  • The OnDesktop setting wasn't read from the config file correctly. Fixed.
  • Meter position can be defined relatively to the previous meter by adding 'r' to the end if the value (e.g. X=10r).
  • Fixed autoscaling with NumOfDecimals=0.
  • Added Format to LIFETIME in PowerPlugin.
  • Added STATUS2 to PowerPlugin, which is the same as STATUS except that the BatteryFlag in SYSTEM_POWER_STATUS is returned as is.
  • Fixed finalization in the plugins.
  • Calc-measure's Counter is separate for each active config.
  • Fixed TrayIcon.
  • Added handling of MaxValue to WebParser.
  • IMAGE meter's W and H can be used to scale the image.
  • Width of the STRING meter is handled correctly for right and center aligned text.
  • Mouse leave checks transparent pixels.
  • The WebParser can be now used to download images from the net.
  • Refresh all updates the skin-list so it's not necessary to restart Rainmeter anymore when installing new skins.
  • Fixed a crash bug with HISTOGRAM meter.
  • All substitute strings were not used always. Fixed.
  • Added "Show Log File" to context menu.
  • Spaces in config names should now work correctly. Use quotes around the name in !bangs.
  • Use * as config name in bangs to send the command to all active configs.
  • Added !RainmeterToggleConfig-bang.
  • Added BarBorder to the BAR-meter.
  • Rainmeter reads now the whole folder structure of the Skins-dir (i.e. skins can be placed into subfolders).
  • Date for local time wasn't calculated correctly. Fixed.

5 JUN 2004 (Version 0.10 ß)

  • Fixed a bug in PowerPlugin (the max value of STATUS was set incorrectly).
  • Inverted measures sometimes gave negative values. Fixed.
  • MBM5plugin's MHZ didn't work. Fixed.
  • Added CPU speed measure into the PowerPlugin too. This one measures the current MHz of the processor.
  • Fixed a memory leak in Perfmon and in AdvancedCPU plugins.
  • Improved the about dialog.
  • Created ROTATOR meter, which rotates images.
  • Added menu items for config & skin editing (opens the ini-file in editor).
  • Added TimeZone and DaylightSavingTime to Time measure.
  • Most of the values are now doubles instead of integers. This also means that there might be some inaccuracy with very large values (e.g. diskspace).
  • MaxValue and MinValue can be defined for all measures.
  • Time measure converts the Format to value (e.g. if Format=%S, a meter bound to it shows values from 0 to 59).
  • MaxRegValue is gone. Use MaxValue instead.
  • Sysinfo plugin detects now Windows 2003 too.
  • Variables can be defined in [Variables] section for 'easy' customization of the configs.
  • Added possibility to change the string values with substitute strings.
  • Meter's transparency can be changed with AlphaValue.
  • Added a click through feature (works only with native transparency).
  • Added Total to FreeDiskSpace and the memory measures.
  • Added LineWidth to the Line meter.
  • Added Flip to Histogram and Line meters.
  • Made the string meter multibindable. Several values can be displayed with Text-keyword.
  • Added MouseOverAction and MouseLeaveAction to the meters and main window.
  • Implemented Calc measure, which can calculate math formulas. The measures can be used as variables.
  • Added Solid to the ROUNDLINE meter, which draws a pie.
  • Moved the Update setting from Rainmeter.ini to the skin's ini-file so that skin can determine it's update speed.
  • AverageSize can be used to measures an average value (the parameter is the value window size)
  • UpdateDivider works for meters to