Introduction

Introduction

Rainmeter is a Windows customization application. Empower your desktop with an expandable library of useful tools - handy notes and application launchers, weather and feeds from the web, system status and more. Then, rearrange and modify them to suit your personal style. With Rainmeter, your desktop is finally yours.

Rainmeter can display various performance data in different formats. It can measure:

  • CPU load
  • Allocated Memory
  • Network Traffic
  • NT performance data
  • Uptime
  • Free disk space
  • and a lot more!

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.

Rainmeter will run on Windows 2000/XP/Vista/Win7 and has both 32bit and 64bit versions.

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

Important links

Location of the latest version of Rainmeter for download: Rainmeter Homepage
The Rainmeter Community Forums: Rainmeter Forums
Rainmeter Skins on DeviantArt: Rainmeter on DeviantArt
Rainmeter Skins on Customize.org: Rainmeter on Customize.org

 
Installation

Installation

Download the latest release or beta version from http://rainmeter.net. You may download and run the installer (.exe) version or manually install with the "portable" (.zip) version.

Rainmeter is fully Windows Vista / Windows 7 compatible. The file which Rainmeter uses to keep track of the skins you have loaded and how they are configured (Rainmeter.ini) is now in your "Application Data" folder, and all Rainmeter "skins" are stored in your "My Documents" folder. This means that you do not have to run Rainmeter as an "Administrator" or worry about conflicts with UAC (User Account Control).

Rainmeter automatically installs the suite of skins "Enigma" by Kaelri as well as the "RainBrowser" skin manager and "RainThemes" themes manager by JSMorley.

Note - Rainmeter will not function correctly if your "My Documents" folder in Windows is defined directly on a network server drive using the \\ServerName\Folder syntax. You must map a drive letter and folder name to this drive, like E:\Folder, and set this path as your "My Documents" folder in Windows. Alternatively, you can use the "Portable" installation below to store your skins locally instead of in the remote "My Documents".

Normal Installation

Run the installer. By default Rainmeter will install in "C:\Program Files\Rainmeter", but you may install it in any folder you wish.

Rainmeter will install all required files and place shortcuts for the program, RainBrowser and RainThemes in your Start Menu. The installer will also offer to have Rainmeter automatically start with Windows, and will ask if you wish to install for just the current or all users.

When Rainmeter starts the first time, it will install the default skins and themes in the proper folder locations and load the "Enigma" suite of skins. Start by using the configuration tool in Enigma to configure your personal settings (like Weather location code and e-mail address), then RainThemes to load one of the pre-defined setups or RainBrowser to manage or load individual skins.

Manual Installation

To install Rainmeter manually, download the .zip version of the program, and simply unzip it into the location from where you wish to run the program. This would normally be C:\Program Files\Rainmeter, but can be any folder location.

When Rainmeter starts the first time, it will again install the default skins and themes in the proper folder locations and you can use the program normally. You will need to create any Start Menu shortcuts you desire yourself and place a shortcut for Rainmeter.exe in the "Startup" folder if you wish Rainmeter to run when Windows starts.

Portable Installation

If you wish to run Rainmeter from one folder, so it can be easily taken with you or even run directly from a removable drive, all you need to do is install the program using either the "Normal" or "Manual" installation as described above, then BEFORE you run Rainmeter for the first time, rename the file "Default.ini" you will find in the program folder to "Rainmeter.ini". This will tell Rainmeter that you wish to keep the program and all configuration data, skins and themes in the program folder. No files will be created in Application Data or My Documents. You may now use the program normally, but can easily take the application "on the road" by copying the entire \Rainmeter folder and sub-folders.

Notes on a "portable" installation - If you are running Windows Vista or Windows 7 and have UAC (User Account Control) turned on, you must run Rainmeter with "Administrator" privileges if you wish to keep the application in "C:\Program Files\Rainmeter" and run the application "portable". (where all information is kept in the UAC protected "C:\Program Files" folder) If you do not, UAC will prevent Rainmeter from writing to Rainmeter.ini and no changes you make will be saved. An alternative for a "portable" installation is to install Rainmeter in a non-protected folder like "C:\Rainmeter".

Default File Locations

The Program:
Windows XP: C:\Program Files\Rainmeter
Windows Vista & Win7: C:\Program Files\Rainmeter

Your "Skin" files
Windows XP: C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins
Windows Vista & Win7: C:\Users\YourName\My Documents\Rainmeter\Skins

Rainmeter.ini and your "Themes"
Windows XP: C:\Documents and Settings\YourName\Application Data\Rainmeter
Windows Vista & Win7: C:\Users\YourName\Appdata\Roaming\Rainmeter

Uninstalling

If you installed Rainmeter with the installer you can uninstall it from "Add or Remove Programs". Otherwise just delete all the files you uncompressed from the zip-file

Note that if you have added to or changed any "Skins" or "Themes" you will need to manually delete these folders as described above to fully remove Rainmeter from your system

Ensure that Rainmeter is not running when uninstalling.

 
Settings

Settings

There is no fancy settings editor, so you need to change the settings with your favorite text editor. The general configuration settings are in a file named Rainmeter.ini. The skin settings are in the skin's respective .ini files.

The Rainmeter.ini file has two main sections [Rainmeter] and [Statistics] as well as individual sections for each config has been run. 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 section 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 (ie: numbers between some limits).

Important: Some of the settings in the Rainmeter.ini file 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 then change the value.

[Rainmeter]

The following must be placed under the [Rainmeter] section before any of the individual configs' settings:

DesktopWorkArea
Sets a new work area for the desktop. The workarea defines the area maximized windows cover. Use four comma separated values to set the location of the top-left and bottom-right corners of the area (eg: DesktopWorkArea=0,0,1500, 1200). Note that moving the taskbar will reset the workarea to Windows' default, as will changing screen resolution.

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

TrayExecuteL, TrayExecuteM, TrayExecuteR, TrayExecuteDL, TrayExecuteDM, TrayExecuteDR
Executes a command or !bang when the tray icon is (double)clicked with the mouse. L, R and M denote left, right and middle buttons respectively. Note that TrayExecuteR will override the normal context menu in the tray.

ConfigEditor
Defines the application that is used to edit the Rainmeter's configuration files when "Edit Skin" is chosen from the context menu. The default is Notepad. Relative paths can be used here, which may be useful for portable installs.

SkinPath
Is set by Rainmeter automatically (or can be manually changed) to indicate the location of the Config/Skin folders for Rainmeter.
The default is:
Windows XP: C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins
Windows Vista & Win7: C:\Users\YourName\My Documents\Rainmeter\Skins

Debug
If set to "1" then additional logging information will be added to Rainmeter.log. Default is "0"

[ConfigName]

The following should be put under the the sections for their respective configs (ie: [ConfigName]:

WindowX and WindowY
These define the X and Y positions of the config on the screen in pixels. If the %-sign is added, the measurement will be in percentage. If a capital R is added to the value then the position will be relative to the right edge of the screen instead of the left. By default the position is relative to the primary screen. You can override this with @n where n is 0 to 32 and denotes which screen to position the meter on (1-32) or the virtual desktop (0). The screen selection will apply to both WindowX and WindowY if the value is set on only one of them. If Rainmeter is ran inside a lsbox the window position should be set to 0.

AnchorX and AnchorY
By default WindowX and WindowY control the position of the upper left corner of the config window. AnchorX and AnchorY allow that anchor position to be changed. The Anchor can be defined in pixels from the upper left corner of the window or as a percentage of the config if % is used. If a letter R or B is added to AnchorX or AnchorY, then the position is relative to the right or bottom edge of the window.

As an example, by setting WindowX, WindowY, AnchorX and AnchorY all to 50% the config will be truly centered in the primary monitor regardless of screen resolution or aspect ratio.

SavePosition
If set to 1, the position of the window is stored in the Rainmeter.ini file so that it will be remembered when Rainmeter is executed the next time. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

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 behind the other windows. A value -2 pins the window to the desktop and 2 keeps the window ontop of other topmost windows.

Note that -2 (On Desktop) only works with Explorer.exe as the Window shell. Also be aware that the "order" of skins when two or more are set to "On Desktop" and positioned on top of each other is determined by their order in Rainmeter.ini in ascending order. The first skin [section] in Rainmeter.ini is on the bottom relative to ones that come after. A value of -2 (On Desktop) will work with XP/Vista/Windows 7 with the Aero Interface on or off. In Vista and Windows 7 if a skin is set to On Desktop and Windows "Show Desktop" is used (WIN+D), the Rainmeter skins will stay visible.

These values can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu > Position".

Draggable
If set to 1, the window can be dragged around with the mouse. If 0, the window will be stationary. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

SnapEdges
If set to 1, the window will snap, or "stick", to screen edges and other skins when moved. If shift, ctrl or alt is held while moving, the window will not snap. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

HideOnMouseOver
If set to 1 the config will disappear if the mouse pointer is moved over it. The window will reappear when the mouse pointer is moved off the position where the window was. If shift, ctrl or alt is held while moving the mouse, the window will not disappear (or reappear). This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

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

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

AlphaValue
The transparency value for the window. Use values between 0...255. Only works if native transparency is enabled. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu > Transparency".

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.

ClickThrough
If set to 1 the mouse clicks go through the window. Only works if native transparency is enabled. If shift, ctrl or alt is held while clicking, the skin will respond to clicks as normal. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

KeepOnScreen
Set to 1 to keep the windows always on the monitor area. This can also be set via the context menu by right-clicking the desired config and navigating to "Skin Menu".

LoadOrder
This determines the order in which the configs are loaded. Values can be positive or negative. Configs will load starting with the one with the lowest value for LoadOrder, ending with the highest. Configs loaded first are below those loaded last, for example: Three configs having "LoadOrder=-1", "LoadOrder=2" and "LoadOrder=5" would load the configs in that order, with the config with "LoadOrder=-1" appearing beneath the one with "LoadOrder=2" which is in turn beneath the config containing "LoadOrder=5". If two configs have the same value for "LoadOrder", they are then loaded in alphabetical order. "LoadOrder" must be set manually in "Rainmeter.ini" by selecting "Edit Settings..." from the context menu, or by using the "Skin Settings" button in the RainBrowser addon.

NOTE: The value of "LoadOrder" has no bearing on what the position of the config is, ie: "On Desktop", "Normal, "Topmost", etc. Configs in these positions will continue to appear in the same manner, with "LoadOrder" only affecting how skins in the same position interact with each other. That is to say, configs set to "Topmost" will always appear above configs set to "Normal", but two configs in "Topmost" will layer themselves according to their "LoadOrder" value.

More on Multiple Monitors

There is a "Display Monitor" submenu in [Skins Menu]-[Position] of the Rainmeter tray icon.

These menus set the position of the skin to the desired monitor in a multiple monitor configuration.

  • "Use default: Primary monitor"
    removes the @-directive from WindowX/Y.
  • @0(@1, @2, ...)
    Adds the specified monitor number to WindowX/Y. @0 means "The Virtual Screen".
    More info at: http://msdn.microsoft.com/en-us/library/dd145136%28VS.85%29.aspx
  • "Auto-select based on window position".
    If checked, the WindowX and WindowY "@n" settings are made automatically based on the position of the meter's window.
    If a monitor is selected directly using "Display Monitor" in the Rainmeter / skin context menu, this menu is unchecked. This setting can be manually made in either the [Rainmeter] (all configs) or individual config sections of Rainmeter.ini.

AutoSelectScreen
If set to 1, the WindowX and WindowY "@n" settings are made automatically based on the position of the meter's window. If a monitor is selected directly using "Display Monitor" in the Rainmeter / skin context menu, this setting is reset to 0.

Built-in variables for multiple monitors

The following variables are for the virtual screen.

  • #VSCREENAREAX# is the X-position of the left-side of the virtual screen.
  • #VSCREENAREAY# is the Y-position of the top-side of the virtual screen.
  • #VSCREENAREAWIDTH# is the width of the virtual screen.
  • #VSCREENAREAHEIGHT# is the height of the virtual screen.

The following variables are for the PRESENT monitor.
Note that these variables automatically change by the WindowX and WindowY "@n" settings. If "@n" is not set, these variables return the value of the primary monitor.

  • #WORKAREAX# is the X-position of the left-side of the work area.
  • #WORKAREAY# is the Y-position of the top-side of the work area.
  • #WORKAREAWIDTH# is the width of the work area.
  • #WORKAREAHEIGHT# is the height of the work area.
  • #SCREENAREAX# is the X-position of the left-side of the monitor screen.
  • #SCREENAREAY# is the Y-position of the top-side of the monitor screen.
  • #SCREENAREAWIDTH# is the width of the display resolution.
  • #SCREENAREAHEIGHT# is the height of the display resolution.

The following variables are for the PRIMARY monitor.

  • #PWORKAREAX# is the X-position of the left-side of the work area.
  • #PWORKAREAY# is the Y-position of the top-side of the work area.
  • #PWORKAREAWIDTH# is the width of the work area.
  • #PWORKAREAHEIGHT# is the height of the work area.
  • #PSCREENAREAX# is the X-position of the left-side of the monitor screen. (maybe, always 0)
  • #PSCREENAREAY# is the Y-position of the top-side of the monitor screen. (maybe, always 0)
  • #PSCREENAREAWIDTH# is the width of the display resolution.
  • #PSCREENAREAHEIGHT# is the height of the display resolution.

The following variables are for the SPECIFIED monitor. (@n = @1, @2, ...)

  • #WORKAREAX@n# is the X-position of the left-side of the work area.
  • #WORKAREAY@n# is the Y-position of the top-side of the work area.
  • #WORKAREAWIDTH@n# is the width of the work area.
  • #WORKAREAHEIGHT@n# is the height of the work area.
  • #SCREENAREAX@n# is the X-position of the left-side of the monitor screen.
  • #SCREENAREAY@n# is the Y-position of the top-side of the monitor screen.
  • #SCREENAREAWIDTH@n# is the width of the display resolution.
  • #SCREENAREAHEIGHT@n# is the height of the display resolution.

[TrayMeasure]

The following must be put under the [TrayMeasure] section:

Measure
The type measure to be shown as the tray icon. The normal parameters for that measure should follow.

TrayMeter
The manner in which the measure is depicted. This can be either HISTOGRAM or BITMAP.

TrayColor1
Defines the background color when HISTOGRAM is chosen for TrayMeter.

TrayColor2
Defines the foreground color when HISTOGRAM is chosen for TrayMeter.

TrayBitmap
Defines the name of the bitmap used when BITMAP is chosen for TrayMeter. 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. eg: 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 is like printf (eg: TrayBitmap=tray-%02i.ico will load tray-01.ico, tray-02.ico, ...)

Note: To use the default Rainmeter icon as the tray icon, remove the entire [TrayMeasure] section.

 
Skins

Skins

The skins are placed into the "Skins" folder. Each skin must be in its own subfolder. The actual skin file is a normal .ini file with several sections that defines 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 any time. This allows you, for example, to supply localized skins or different variations of some skin.

The skin's ini file is divided into four parts. All the general settings are put under the [Rainmeter] section and the variables in the [Variables] section. After the general stuff come the "measures", which do the actual measuring of values. After the measures comethe "meters", which are visual representations of the measures. It is possible to bind many meters for one measure. While it is not necessary to place the sections in this order, it is the convention that is observed by many skin authors.

[Rainmeter]

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. eg: 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 the gradient.

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

BevelType
If the background mode is set to 2, This draws a beveled edge around the solid background.

  • 0 = no bevel
  • 1 = raised
  • 2 = sunken.

Update
The time between updates for the measures and meters. The value should be given in milliseconds. The default value is 1000 (ie: once per second).

TransitionUpdate
The update time for the meter transitions. When a transition is active (ie: a meter which supports transitions is changing its value) the redraw rate of the window will be set to this value. The value should be given in milliseconds. The default value is 100.

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. (eg: DragMargins=0, -100, 0, 0)

LeftMouseDownAction
A 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 dragging.

RightMouseDownAction
A command or a bang that will be executed when the right mouse button is pressed down over the Rainmeter's window. Note that this disables the context menu.

MiddleMouseDownAction
A command or a bang that will be executed when the middle mouse button is pressed down over the Rainmeter's window.

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

RightMouseUpAction
A 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.

MiddleMouseUpAction
A command or a bang that will be executed when the middle mouse button is released over the Rainmeter's window.

LeftMouseDoubleClickAction
A command or a bang that will be executed when the left mouse button is Double Clicked on the Rainmeter's window. (if this action is missing, LeftMouseDownAction will be executed)

RightMouseDoubleClickAction
A command or a bang that will be executed when the right mouse button is Double Clicked on the Rainmeter's window. Note that this disables the context menu.

MiddleMouseDoubleClickAction
A command or a bang that will be executed when the middle mouse button is Double Clicked on the Rainmeter's window.

MouseOverAction
A command or a bang that will be executed when the mouse goes over the Skin or Meter.

MouseLeaveAction
A command or a bang that will be executed when the mouse leaves the Skin or Meter.

OnRefreshAction
Executes a command or !bang that is executed when the config is refreshed. This includes when the config is opened the first time.

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

AppVersion
The minimum version of Rainmeter that is needed by this skin.

If you specify an AppVersion in your skin, and the version of Rainmeter being used by the end user is not equal to or greater than the version number in AppVersion=, The end user will be prompted to upgrade.
It is not necessary to define this if you don't want to, howerver it shoild be noted that if your skin uses features or settings not available in the version of Rainmeter the end user is runing, the skin may fail to operate correctly.

AppVersion is a single number that can be calculated like this:
Major * 1000000 + Minor1 * 1000 + Minor2. eg: a value for Rainmeter 0.11.4 would be 11004 and Rainmeter 1.0 would be 1000000.

LocalFont
Allows a skin author to include fonts with the skin without forcing the end user to install the fonts in \Windows\Fonts.

LocalFont=[path]FilenameOfFont.ttf | .otf
LocalFont2=[path]FilenameOfFont.ttf | .otf
Continue for as many as needed

Example:

[Rainmeter]
LocalFont=#PROGRAMPATH#Fonts\TheSaBdCp.ttf

[MeterName]
Meter=STRING
FontFace=TheSansBold-Caps

Note that while it is suggested that the font reside in C:\Program Files\Rainmeter\Fonts to reduce duplication of fonts on a user's system, the font can be in any folder and any valid Windows path can be used with LocalFont. Also be aware that the filename of a font is almost never the same as the fontface name used in the FontFace= statement. It is the skin author's repsonsibility to ensure the correct FontFace name is used.

[Variables]

The variables are keywords that are replaced in other settings. These can be used eg: 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.

Variables take the form:
VariableName=Value

The variable is then referred to later in measures and meters as:
#VariableName#

So to set a variable for the size of the font you want to use on all your meters you might use:
FontSize=11

Then in every meter displaying text, you could set the parameter:
FontSize=#FontSize#

All the meters will use the font size of "11", and they can ALL be easily changed to another size by changing just the variable, rather than changing each individual meter.

Variables can be used to define folders and executables for later use in commands performing some "action"
PathToWinamp="C:\Program Files\Winamp\Winamp.exe"

They can also be used to set the URL for use in WebParser measures reading from the internet.
GoogleNewsURL="http://news.google.com/rss"

Built-in variables

The following are pre-existing variables whose values are set by the system and do not need to be defined in the [Variables] section. They many be used anywhere, including within Rainmeter.ini.

  • #CRLF#
    - Inserts a line break.
  • #PROGRAMDRIVE#
    - The drive the program is installed to (eg: C:, \\server\Users\, etc...).
  • #PROGRAMPATH#
    - The path to the program folder (eg: C:\Program Files\Rainmeter\).
  • #SETTINGSPATH#
    - The path to the folder where the settings file is located (eg: C:\Documents and Settings\{yourname}\Application Data\Rainmeter\)
  • #SKINSPATH#
    - The path to the skins folder (eg: C:\Documents and Settings\{yourname}\My Documents\Rainmeter\Skins\)
  • #PLUGINSPATH#
    - The path to the plugins folder (eg: C:\Program Files\Rainmeter\Plugins\)
  • #ADDONSPATH#
    - The path to the addons folder (C:\Program Files\Rainmeter\Addons\)
  • #CURRENTPATH#
    - The path to the currently read ini file.
  • #CURRENTCONFIG#
    - The full ConfigName of the currently loaded skin. (eg: Enigma\Sidebar)
  • #WORKAREAX#
    - The X-position of the work area.
  • #WORKAREAY#
    - The Y-position of the work area.
  • #WORKAREAWIDTH#
    - The width of the work area.
  • #WORKAREAHEIGHT#
    - The height of the work area.
  • #SCREENAREAWIDTH#
    - The width of the display resolution.
  • #SCREENAREAHEIGHT#
    - The height of the display resolution.

Dynamic Variables

By setting DynamicVariables=1 in a measure or meter, variables that have had their values changed by the "!RainmeterSetVariable" !bang can be read by that measure or meter. Additionally, if Dynamic Variables are turned on, a measure's name can be used as a variable to use its current value elsewhere. Measure values are encased by [square brackets] rather that #pound signs#. Dynamic Variables can be used in any measure or meter, but not in the [Rainmeter] or [Variables] sections. There is also currently no support for Dynamic Variables in plugins, such as WebParser or QuotePlugin.

Example:

[Variables]
Width=100

[MeasureCalc]
Measure=Calc
Formula=Counter%100

[Square1]
Meter=Image
SolidColor=255,0,0
W=#Width#
H=50
MouseOverAction=!RainmeterSetVariable Width 200
DynamicVariables=1

[Square2]
Meter=Image
SolidColor=0,0,255
W=[MeasureCalc]
H=50
Y=R

In this example, Square1 would show a red 100x50 pixel box. When the mouse is place over the box, it grows to 200x50 as the variable is changed. Square2 shows a blue box that is 50 pixels tall and continuously grows from 0 to 100 pixels wide as it gets its width from the value of MeasureCalc.

@Include

Loads an external file in the .ini format so an author can have skin, config, suite or Rainmeter-wide variables, or even shared measures. The loaded file is treated as if the contents were included in the actual skin .ini file. The path used is relative to the current .ini file.

The @include statement must be used under some section (ie: it cannot be the first thing in the file). If there are multiple included files within the same section of the .ini file, each @include statement should be number thusly:
@include1=...
@include2=...
@include3=...
etc...

Remember that since the included file is being treated as part of the .ini file, it must also have the proper .ini formatting (ie: [section] parameter=value). If the included file is not itself a fully working skin, then it should not use the .ini extension. Doing so may cause issues with Rainmeter's context menu, as well as some third-party applications. A common alternative is the .inc extension

The included file is read at the position where the @include is defined so the values from the included file with the same name as those from the .ini file will overwrite the values from previous sections and vice versa.

Note: It's possible to use the variables with the @include but dynamic variables won't work with the @include.

Example:

IncludedFile.inc:
    [Variables]
    FontColor=255,255,255,255

HostSkin.ini:
    [Variables]
    FontFace=Arial
    @Include=IncludedFile.inc

[Metadata]

This section contains information about the skin itself. Alone, metadata is useful as a consistent and reliable place to learn about a skin, and how it is meant to be used and configured. In addition, addons like RainBrowser can take advantage of metadata to enable more sophisticated skin management features.

It is important for all metadata to be written in the [Metadata] section using a specific set of keys. A template is provided below. As a skin developer, you should provide appropriate values for all of these keys.

[Metadata]
Name=Title | Subtitle
- This is the name and subtitle you wish the skin to be known by.
Config=Root Skin Folder | Subfolders | Current Folder
- This is the config (folder) structure the skin is in.
Description=Point 1 | Point 2 | Point 3
- Your description of the skin and its functionality. Use " | " for linefeeds.
Instructions=Point 1 | Point 2 | Point 3
- Any instructions for the end user. Use " | " for linefeeds.
Version=2.0
- The version of the skin.
Tags=Tag 1 | Tag 2 | Tag 3
- Tags, separated by " | " which are used for categorizing and searching skins.
License=Creative Commons Attribution-Non-Commercial-Share Alike 3.0
- The author's license for the skin.
Variant=1
- Which variant in a folder with multiple .ini files.
Preview=#SKINSPATH#MyConfig\Images\Previews\Preview.png
- Path and name of a preview image used in RainBrowser.

 
Measures

Measures

Measures are the sections that determine what information Rainmeter should retrieve. Each measure needs to have a unique name, which is put inside [Square Brackets]. It does not matter what the name is as long as there are no spaces and you don't use that name anywhere else within the same .ini file. The meters use these section names to bind to the measures. Check the supplied .ini 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 CPU or individual cores.
  • Memory - Measures overall memory utilization.
  • PhysicalMemory - Measures allocated physical memory.
  • SwapMemory - Measures virtual memory allocation (Swap).
  • Uptime - Shows how long your computer has been on. This works only in a STRING meter.
  • NetIn - Measures incoming network traffic.
  • NetOut - Measures outgoing network traffic.
  • NetTotal - Measures total network traffic.
  • FreeDiskSpace - Measures free diskspace.
  • PerfMon - Gets NT's performance data.
  • 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. For example, you can measure the 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 at the moment when the measure exceeds the value, so it needs to go below the defined value before the action is executed again.

IfAboveValue
The value used by IfAboveAction.

IfBelowAction
A bang or command that is executed when the measure goes below the value defined in IfBelowValue. The action is executed only at the moment 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 used by 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 used by IfEqualAction.

Disabled
If set to 1, the measure is disabled at start. A disabled measure always returns zero as its value.

UpdateDivider
This value modifies the update rate of the measure. The global Update value (set in the [Rainmeter] section) is multiplied by this number to determine the update rate for the measure. 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. The default is 1.0.

MinValue
The minimum value the measure can have. The default is 0.0.

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

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

The following are settings that are specific to certain measure types:

CPU

Processor
Can be set to the number (1-n) of the processor core you wish to measure. If not given or set to "0", the average of all cores will be returned.

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 used by TrafficAction.

Interface
The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the first 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 period of time.

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 first 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 first NIC, 2 the second, etc.

Cumulative
If set to 1, the measure gathers cumulative value (ie: 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 disk space is measured. (eg: "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.

InvertMeasure
If set to 1 this returns "used space" instead of "free space". This setting is not limited to FreeDriveSpace.

IgnoreRemovable
Default is 1 - Removable drives are ignored. If set to 0, removable drives are measured.

Plugin

Plugin
The path to the plugin relative to the program folder, where Rainmeter.exe is (eg: Plugin=Plugins\WebParser.dll).

Note: Each plugin in turn has its own settings that must be placed in this section. See their respective help pages to learn more on the plugins included with Rainmeter.

Registry

RegHKey
The name of the HKEY. Possible values are:

  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_CLASSES_ROOT
  • HKEY_PERFORMANCE_DATA
  • HKEY_DYN_DATA

RegKey
The name of the registry key.

RegValue
The name of the registry key's value. Only string and long values are supported.

Time

Format
The format how the time is written (eg: Format="%H:%M:%S"). The format codes are listed 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 Windows.

TimeZone
The timezone value (eg: TimeZone=+2.0). You can use also fractional values. If this is not given the local time 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 formula to be calculated. You can use the names of other measures as variables. There is also a special variable called Counter, which is incremented on every update. The variables are updated only after all other measures are updated, so the values are always one update cycle behind.

Note: Everything is case sensitive and the functions must be in all capital letters (eg: SIN(10 * PI)).

Operators:

  • + (addition)
  • - (substraction)
  • * (multiplication)
  • / (division)
  • ** (power)
  • % (remainder or modulus)
  • & (bitwise and)
  • | (bitwise or)
  • ^ (bitwise xor)
  • ~ (bitwise not)

 Logical operators:

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

Functions:

  • ATAN(x), ASIN(x), ACOS(x), COS(x), SIN(x), TAN(x) - Standard trigonometric functions
  • ABS(x) - Absolute value of x.
  • EXP(x) - Returns ex.
  • LOG(x) - Base 10 logarithm of x.
  • LN(x) - Natural logarithm of x.
  • SQRT(x) - Square root of x.
  • SGN(x) - Return 1 if x is positive, -1 if x is negative.
  • FRAC(x) - Fractional, or decimal, part (eg: FRAC(1.234) = 0.234).
  • TRUNC(x) - Integer par (eg:TRUNC(1.234) = 1).
  • FLOOR(x) - Floor of x.
  • CEIL(x) - Ceiling of x.
  • ROUND(x[,precision]) - Rounds x to an integer, or to a specified number of decimal places. Precision is optional.

Constants:

  • PI - Pi (~3.14159265...)
  • E - Euler's constant (~2.71828182...)

Conditional operator:

<condition> ? <expr. if true.> : <expr. if false.>
This will evaluate condition as being either true or false. If it is true, the expression to the left of the colon (:) is evaluated. If it is false, the expression to the right is evaluated. This is equivalent to the following if-then-else statement:

   if (condition)
     then
       expr. if true
     else
       expr. if false
   end if

Random Function:

The word "Random" returns a random number between the values of "LowBound" and "HighBound" defined in the measure.

Example:

[MeasureCalc]
Measure=Calc
Formula=(Random)
LowBound=5
HighBound=100
UpdateRandom=1

UpdateRandom=1 (New random number each Update cycle)
UpdateRandom=0 (New random number on refresh)

 
Meters

Meters

Meters are the sections that tell Rainmeter how to display information. Each meter needs to have an unique name, which should be put inside [Square Brackets]. It does not matter what the name is as long as there are no spaces and it is not used elsewhere within the same.ini file.

General settings for all meters

A note on color codes:

  • FontColor
  • FontEffectColor
  • SolidColor
  • PrimaryColor
  • SecondaryColor
  • BothColor
  • BarColor
  • LineColor
  • HorizontalLineColor

Color codes in Rainmeter are based on RGBA, which stands for Red, Green, Blue, Alpha.
They consist of a comma delineated set of 4 values:

RED, GREEN, BLUE, ALPHA

Each component can have a value from 0 to 255
The RED component controls the intensity of red in the color, with 255 being full saturation
The GREEN component controls the intensity of green in the color, with 255 being full saturation
The BLUE component controls the intensity of blue in the color, with 255 being full saturation
The ALPHA component controls the transparency of the color, with 0 being transparent and 255 being fully opaque

Examples:

FontColor=255,255,255,255

Solid opaque red = 255,0,0,255
Solid opaque blue = 0,0,255,255
Solid opaque grey = 128,128,128,255
Half-transparent green = 0,255,0,128

In Rainmeter 1.1, an alternate color format was added, more familiar to web designers. Colors can now be defined as strings of 8 hexadecimal values:

Half-transparent red = FF000088

These hex color codes work similarly to HTML RGB Hex codes, except 2 hex numbers have been added for Alpha

The first two hexadecimal digits are the RED component, from 0 to 255 in hex
The second two hexadecimal digits are the BLUE component, from 0 to 255 in hex
The third two hexadecimal digits are the GREEN component, from 0 to 255 in hex
The fourth two hexadecimal digits are the ALPHA component, from 0 to 255 in hex


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 (eg: 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 (eg: 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 incorrectly.

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

Note: You can use math formulas with X, Y, W and H. In that case the value must be surrounded with parenthesis (eg: "Y=(300/3)"). If you use a formula, you can not use relative positioning.

Hidden
If set to 1, the meter is hidden.

LeftMouseDownAction
A command or a bang that will be executed when the left mouse button is pressed down over the meter. Note that this disables dragging.

RightMouseDownAction
A command or a bang that will be executed when the right mouse button is pressed down over the meter. Note that this disables the context menu.

MiddleMouseDownAction
A command or a bang that will be executed when the middle mouse button is pressed down over the meter.

LeftMouseUpAction
A command or a bang that will be executed when the left mouse button is released over the meter. 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.

RightMouseUpAction
A command or a bang that will be executed when the right mouse button is released over the meter. Note that this disables the context menu.

MiddleMouseUpAction
A command or a bang that will be executed when the middle mouse button is released over the meter.

LeftMouseDoubleClickAction
A command or a bang that will be executed when the left mouse button is Double Clicked on the meter. (if this action is missing, LeftMouseDownAction will be executed)

RightMouseDoubleClickAction
A command or a bang that will be executed when the right mouse button is Double Clicked on the meter. Note that this disables the context menu.

MiddleMouseDoubleClickAction
A command or a bang that will be executed when the middle mouse button is Double Clicked on the meter.

MouseOverAction
A command or a bang that will be executed when the mouse goes over the Meter.

MouseLeaveAction
A command or a bang that will be executed when the mouse leaves the Skin or Meter.

MouseActionCursor
When set to 1 (which is the default), Rainmeter will change the cursor to a pointer if it is over a meter with a mouse action or a button.

The default for a specific skin can be set to 0 by putting MouseActionCursor=0 in the [Rainmeter] section of the skin. This can then be overridden on a meter by meter basis with MouseActionCursor=1.

Note: If you have a meter or button with a mouse action, and there is a meter (text or image) on TOP of it, you will need to set MouseActionCursor=0 on the foreground meter, even if it does not have a mouse action, or the action will not be seen on the background meter/button and the cursor will not change. MouseActionCursor=0 causes the "cursor" routines to ignore a meter, and the action on the background meter/button will then be detected.

UpdateDivider
This value modifies the update rate of the meter. The global Update value (set in the [Rainmeter] section) is multiplied by this number to determine the update rate for the meter. 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. The value is given in RGB(A) format: Red, Green, Blue and an optional Alpha value. It can be written either as 3 or 4 comma-separated values from 0 to 255 (eg: SolidColor=255,0,0,128), or in hexadecimal format (eg: SolidColor=FF000080). If it is not set, the background is completely transparent.

SolidColor2
An optional second color for the meter's background to create a gradient. This follows the same format as SolidColor.

GradientAngle
The angle of the meter's background color gradient. The angle is defined in degrees.

BevelType
Draws a bevel edge around the solid background:

  • 0 = no bevel
  • 1 = raised
  • 2 = sunken.

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

TransformationMatrix
This defines a 3x2 matrix which can be used to transform the meter. There must be exactly 6 values separated by semicolons (;) (eg: TransformationMatrix=1;0;0;1;0;0). The values a;b;c;d;e;f correspond to the following matrix:

|a c e|
|b d f|
In short, the values have the following effects:
  • a - Scale horizontally
  • b - Skew along the y-axis
  • c - Scale vertically
  • d - Skew along the x-axis
  • e - Translate (ie: move) horizontally
  • f - Translate vertically
Combining these can have drastic effects on the meter it is applied to. For more comprehensivev information on TransformationMatrix, read the forum thread.

The following are some examples showing the actual matrix and the corresponding TransformationMatrix values:

Flip X along line x=20:

|-1 0 2x|   |-1 0 40|
| 0 1 0 | = | 0 1  0|
TransformationMatrix=-1;0;0;1;40;0

Flip Y along line y=50:
| 1  0 0  |   | 1  0   0|
| 0 -1 2*y| = | 0 -1 100|
TransformationMatrix=1;0;0;-1;0;100

Scale X by 0.5 (at x=50):
|0.5 0 0.5*x|   |0.5 0 25|
|0   1 0    | = |0   1  0|
TransformationMatrix=0.5;0;0;1;25;0

Note: All transformations are relative to the top left corner of the window and not to the meter itself. So if you want to rotate the meter by its center the translation component in the matrix must be relative to the top left corner of the window.

Also note that the even if the meter's visual location and orientation is changed by the transformation the place where it would be located without the transformation will still be used to define the window size and register the mouse clicks. This might change in the future though.

MeterStyle
This allows you to create CSS-like "Styles" for meters. The current meter will use the settings from the specified style as its own. A "Style" is really just another section, however it is not necessarily a meter or measure. Any settings within the style that apply to the meter using it will automatically be used as though they were written within the meter itself.

Example:

[MyStringStyle]

FontColor=#FontColor#
FontFace=TheSansBold-Caps
FontSize=11
StringEffect=SHADOW
StringStyle=BOLD
StringAlign=LEFT
AntiAlias=1

;Then in any meter, use:

[Meter]
Meter=STRING ;(or any other meter type)
MeterStyle=MyStringStyle

The settings for [Meter] are "inherited" from MeterStyle. In the example, the string would have TheSansBold-Caps as the font and the text would be size 11, shadowed, bold, antialiased and aligned to the left. Note that any settings that already exist in the meter take precedence and will override the ones found in the style.

Meter
Indicates the type of the meter. The valid values are:
  • BAR
  • BITMAP
  • BUTTON
  • HISTOGRAM
  • IMAGE
  • LINE
  • ROTATOR
  • ROUNDLINE
  • STRING
 
Meter-Bar

Bar Meter

Meter=BAR

Bar meters display the value of a measure in a single vertical or horizontal bar. The amount the bar is filled corresponds to the relative value of the measure. Bar graphs require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

BarColor
The color of the bar. The colors are given in the same manner as with SolidColor: RGB(A).

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

BarBorder
If an image is used, this determines the number of pixels on either side of the image that are always drawn (ie: top and bottom margins for vertical bars, left and right margins for horizontal bars).

BarOrientation
The orientation of the bar. Valid values are: HORIZONTAL or VERTICAL

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

Examples:

[MeasureMemory]
Measure=PhysicalMemory

[MeterMemory]
MeasureName=MeasureMemory
Meter=BAR
X=0
Y=0
W=100
H=20
BarColor=0,0,0,200
SolidColor=255,255,255,200
BarOrientation=HORIZONTAL

 
Meter-Bitmap

Bitmap Meter

Meter=BITMAP

The Bitmap meter takes an image and divides it into equally-sized frames. Each frame is shown as the relative value of the measure attached to it reaches the relative position of the pieces. For example, if the image a strip of 5 images, when the measure is between 0% and 19% the first frame is shown, from 20 to 39% the second frame is show, and so on. Bitmaps are often used with counters to display animations, or are used to show stylized numbers.

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 height 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. The image can be any supported format: bmp, gif, jpg or png. If BitmapExtend is not 1, then bitmap meters require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

BitmapFrames
The number of frames in the image.

BitmapTransitionFrames
The number of transition frames per value. The transition frames are frames which are displayed when the meter's value changes. The same number of transition frames must be used after each regular frame. The TransitionUpdate setting in the [Rainmeter] section determines the rate at which the frames are displayed during the transition. The total duration of the transition animation is therefore TransitionUpdate * BitmapTransitionFrames. Note that BitmapFrames will always define the total number of frames in the bitmap, including the transition frames. So, for example, if the bitmap has 10 values and each transition consists of 4 additional frames, then BitmapFrames should be set to 50 and BitmapTransitionFrames to 4.

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.

BitmapSeparation
Separation between digits when BitmapDigits is higher than one. This can also be a negative number.

Examples:

[MeasureDate]
Measure=Time
Format=%d

[MeterDate]
MeasureName=MeasureDate
Meter=BITMAP
X=50
Y=0
BitmapImage=number.png
BitmapFrames=10
BitmapExtend=1
BitmapDigits=2
BitmapAlign=CENTER

 
Meter-Button

Button Meter

Meter=BUTTON

The button meter cannot be bound to any measure. Its entire purpose is to make the creation of buttons easier. A button can display a normal, hover and clicked state of an image and perform an action automatically.

ButtonImage
The name of the button image. The image must have 3 frames which can be set either horizontally or vertically (the orientation is determined by the width and height of the image). The first frame corresponds to he button's normal image. The second frame is shown when the button is clicked. The third frame is shown while the mouse is hovering over the button.

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

Examples:

[MeterNote]
Meter=BUTTON
X=0
Y=0
ButtonImage=Button.png
ButtonCommand=!Execute [notepad]

 
Meter-Histogram

Histogram Meter

Meter=HISTOGRAM

Histograms display values using vertical bars - one per update - on a graph. They require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

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 the same manner as with SolidColor: RGB(A).

SecondaryColor
Color for the secondary histogram.

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

PrimaryImage
Name of the image that is used behind the secondary histogram. You can 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, Not SecondaryColor or BothColor.

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 upside-down.

Examples:

[MeasureCPU]
Measure=CPU

[MeterCPU]
MeasureName=MeasureCPU
Meter=HISTOGRAM
X=0
Y=0
W=100
H=20
PrimaryColor=0,0,0,200
SolidColor=255,255,255,200
BarOrientation=HORIZONTAL
AntiAlias=1

 
Meter-Image

Image Meter

Meter=IMAGE

The Image meter is used to show images. It does not necessarily need to be tied to a measure and is often used just to display a specific image for aesthetic purposes. However, when used with a measure, it will try to display the image whose filename corresponds to the value of the measure.

ImageName
Name of the image to be displayed.

Path
Path to the image. The path is relative to the skin's folder.

AntiAlias
If set to 1, the image has antialias interpolation routines applied to it when displayed.

PreserveAspectRatio
If set to 1, the aspect ratio of the image is preserved when the image is scaled.
The default is PreserveAspectRatio=0

  • You can specify both W and H with PreserveAspectRatio=0, and it will scale the image to the exact specified size. Aspect ratio is not preserved.
  • You can specify W or H alone with PreserveAspectRatio=1, and the image will be scaled to the given value, with the other undefined "aspect" being automatically scaled to preserve the aspect ratio.
  • You can specify both W and H with PreserveAspectRatio=1, and the image will be scaled by using the larger of the width or height dimensions in the original image, setting that to the user defined value, and setting the other "aspect" to what is needed to preserve the aspect ratio. That way the image will be made to "fit" in the container defined by H and W even if the user doesn't know if the image is originally "portrait" or "landscape" (tall or wide) from the source.
  • In all cases the image is "centered" in the meter defined by W and H. "Dead space" created by preserving the aspect ratio (much like the black bars on your TV when you watch a widescreen movie on a standard 4:3 screen) is transparent.
  • Image meters can use [MeasureName] as the value of either W or H or both, and the image scaling is done on each update of the measure used. This means that a refresh is not required to resize an image and dynamic "zooming" of the image can be achieved by using measures to change the size values.

Greyscale
If set to 1, the image will be greyscaled. This is applied before ImageTint or ColorMatrix if they are specified.

ImageTint
The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255).

ColorMatrixN
The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

ColorMatrix1=1; 0; 0; 0; 0
ColorMatrix2=0; 1; 0; 0; 0
ColorMatrix3=0; 0; 1; 0; 0
ColorMatrix4=0; 0; 0; 1; 0
ColorMatrix5=0; 0; 0; 0; 1
The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (ColorMatrix5) determining offset values that are added directly to the color. (ex: ColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). A deeper explanation will be included in a tutorial upon full release of Rainmeter v1.2.

ImageFlip
Values are "NONE", "HORIZONTAL", "VERTICAL" or "BOTH".

ImageRotate
Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise.

ImageAlpha
Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. NOTE: If set, this value will override the Alpha parameter in the ImageTint setting.

Examples:

[MeasureQuote]
Measure=Plugin
Plugin=Plugins\QuotePlugin.dll
PathName="#PROGRAMPATH#Skins\Tranquil\"
FileFilter=*.png

[MeterImage]
Meter=IMAGE
MeasureName=MeasureQuote
X=0
Y=0
W=150
H=150
PreserveAspectRatio=1

; The following image would be greyscaled, then tinted orange:
[MeterTintedImage]
Meter=Image
ImageName=image.png
Greyscale=1
ImageTint=255,128,64,255
X=0
Y=0
W=200
H=200

 
Meter-Line

Line Meter

Meter=LINE

The line meter shows the values of a measure as a graph with a line connecting each data point. Any number of lines can be shown depicting as many measures with a single meter, all overlapping. Line meters require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

LineCount
Number of lines in the meter. There can be any number of lines in the same meter. Settings with [N] in their name must have the number of the line being used to be defined. Note that the number for the first line is never given (ei: MeasureName, LineColor and Scale are all used for the first line, with numbers added for subsequent lines).

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

LineColor[N]
The color of the line [N]. The colors are given in the same manner as with SolidColor: RGB(A).

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

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 all of the measures used.

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

HorizontalLineColor
The color of the horizontal lines. The colors are given in the same manner as with SolidColor: RGB(A).

LineWidth
The width of the line in pixels.

Flip
If set to 1 the meter is flipped upside down.

Examples:

[MeasureNetIn]
Measure=NetIn

[MeasureNetOut]
Measure=NetOut

[MeterNetwork]
Meter=LINE
MeasureName=MeasureNetOut
MeasureName2=MeasureNetIn
X=0
Y=0
W=100
H=20
LineCount=2
LineColor=221,53,174,200
LineColor2=0,0,0,200
SolidColor=255,255,255,200
AutoScale=1
AntiAlias=1

 
Meter-Rotator

Rotator Meter

Meter=ROTATOR

The rotator meter displays an image that rotates around a point where the angle of rotation is determined by the measure it is attached to. Rotator meters require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

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 at the right. The defualt 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.

Examples:

[MeasureTime]
Measure=Time

[MeterHours]
MeasureName=MeasureTime
Meter=ROTATOR
X=0
Y=0
W=30
H=30
ImageName=Hours.png
StartAngle=6.2832
RotationAngle=6.2832
ValueReminder=43200
OffsetX=14.5
OffsetY=14.5

[MeterMinutes]
MeasureName=MeasureTime
Meter=ROTATOR
X=0
Y=0
W=30
H=30
ImageName=Minutes.png
StartAngle=6.2832
RotationAngle=6.2832
ValueReminder=3600
OffsetX=14.5
OffsetY=14.5

 
Meter-Roundline

Roundline Meter

Meter=ROUNDLINE

The roundline meter displays a single line that rotates around a point. The angle of the line is determined by the measure. By default, the minimum position is pointing to the right, the line then moves clockwise until it is pointing to the right again. If the width and height are not defined, the center point is the at the X and Y position of the meter. If width and height are specified, it is in the middle of the bounding box. Roundline meters require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set.

LineWidth
The width of the line in pixels

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

ControlLength, LengthShift
If ControlLength is set to 1, the measure value controls the LineLength from LineLength to LineLength + LengthShift.

LineStart
This defines the distance from the center at which the line starts.

ControlStart, StartShift
If ControlStart is set to 1, the measure controls the LineStart from LineStart to LineStart + StartShift.

StartAngle
The starting angle for the line. This is in radians and the zero angle is at the right. The default rotation direction is clockwise.

ControlAngle, RotationAngle
Unless ControlAngle is set to 0, the measure controls the RotationAngle from 0 to RotationAngle. The size of the rotation angle for the line. Use a negative value for counter-clockwise rotation.

ValueRemainder
Use remainder instead of the actual measured value. This can be used to draw an analog clock.

LineColor
The color of the line. The colors are given in the same manner as with SolidColor: RGB(A).

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

Examples:

[MeasureDisk]
Measure=FreeDiskSpace
Drive=C:
InvertMeasure=1

[MeterDisk]
Meter=ROUNDLINE
MeasureName=MeasureDisk
X=0
Y=0
W=50
H=50
StartAngle=4.712
RotationAngle=6.283
LineLength=25
LineColor=0,0,0,200
Solid=1
AntiAlias=1

 
Meter-String

String Meter

Meter=STRING

String meters display the value of a measure as text. A string meter does not necessarily need to have a measure attached to it and can just be a set string of text.

MeasureName#
String meters allow for more than one measure to be used at once within the same meter. To specify other measures, append a number to "MeasureName" (eg: MeasureName2, MeasureName3, etc...).

FontColor
The color of the text. The colors are given in the same manner as with SolidColor: RGB(A).

Prefix
String that is displayed before the value.

Postfix
String that is displayed after the value.

FontFace
Name of the font. Note that this is not the name of the font's file, but the font itself.

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.

StringEffect
Effect of the string. The valid values are: NONE, SHADOW and BORDER.

FontEffectColor
The color of the StringEffect. The colors are given in the same manner as with SolidColor: RGB(A).

StringCase
Sets the "case" of the string. The Valid values are NONE, UPPER, LOWER, PROPER.

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 (eg: 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 as a percentage.

NumOfDecimals
The number of decimals used in the displayed value.

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 of the meter clips the string. An ellipsis (...) is added to the end of the string. Width and height must be specified. If the height is large enough to allow for another row of text, it will wrap the text into two or more lines, instead of using the ellipsis.

Angle
This defines the angle of the text. The value is given in radians. Note that the size and position of the text is still calculated as if the text were horizontal.

Examples:

[MeasureDate]
Measure=Time

[MeterDate]
MeasureName=MeasureDate
Meter=STRING
X=0
Y=0
FontColor=0,0,0,255
FontFace="Trebuchet MS"
FontSize=20
StringEffect=BORDER
FontEffectColor=255,255,255,255
AntiAlias=1

 
Sound

Sound

Rainmeter supports audio commands that can be used like and other commands or !bangs.

PLAY [soundfile] - Plays the given soundfile once.

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

PLAYSTOP - Stops the currently playing sound.

Example:

[BeeperButton]
Meter=Button
ButtonImage=button.png
ButtonCommand=PLAY #SKINSPATH#Beeper\Sounds\beep.wav

This would create a button that plays "beep.wav" when it is clicked.

 
Bangs

Bangs

Rainmeter can also be controlled with !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 run from them from the command line by giving it as an argument for Rainmeter.exe.

Note that the [] means that you must supply the argument for the bang (do not include the []-chars). The () means that the argument is not 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 sent to the current (in a skin) or first (from the command line) config. Use * as the config's name to send it to all configs.

!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"])

!RainmeterQuit
Quits Rainmeter.

!RainmeterSetVariable [Variable] [Value] (Config)
Sets a new value for a variable. The meter or measure where the variable is used must have dynamic variables enabled (DynamicVariables=1). Formulas may be used, enclosed in parentheses. As with all !Bangs, quotes must be used around the parameter if there are spaces: !RainmeterSetVariable VarName "(#SCREENAREAWIDTH# - 10)"

!RainmeterRefreshApp
Does a full refresh of all skins and reloads the list of configs and Rainmeter.ini settings. This is the same as "Refresh All" from the system tray context menu. Is not the same as !RainmeterRefresh [config | *] as it can be used to make Rainmeter "see" a new folder added to \Skins by the user or a process.

!RainmeterSetTransparency [AlphaAmount] (Config)
Sets the transparency of a skin from 0 (invisible) to 255 (opaque).

!RainmeterShowFade (Config), !RainmeterHideFade (Config), !RainmeterToggleFade (Config)
Shows or hides the current or specified (Config) skin using a "fade" effect. The speed of the fade is determined by the "FadeDuration=" setting for the skin in Rainmeter.ini.


 
Plugins

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.

Finalize is called when the measure is deleted.

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.

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 source for examples on how to implement a plugin.

 
Plugin-AdvancedCPU

AdvancedCPU Plugin

Plugin=Plugins/AdvancedCPU.dll

This is pretty much the same as the using 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 2 returns the name of the process that took the most CPU time since the last update. Value 1 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="%2 (%1%)"
NumOfDecimals=1
Scale=100000

 
Plugin-iTunes

iTunes (v1.001) Plugin

Plugin=Plugins/iTunesPlugin.dll

This plugin can be used to remote control iTunes and get information from it.

Command
Can be any of the following:

Bang (no return value) - Player Controls

  • Backtrack - reposition to the beginning of the current track or go to the previous track if already at start of current track
  • FastForward - skip forward in a playing track
  • NextTrack - advance to the next track in the current playlist
  • Pause - pause playback
  • Play - play the currently targeted track
  • PlayPause - toggle the playing/paused state of the current track
  • PreviousTrack - return to the previous track in the current playlist
  • Resume - disable fast forward/rewind and resume playback if playing
  • Rewind - skip backwards in a playing track
  • Stop - stop playback

Bang (no return value) - Others

  • GotoMusicStoreHomePage - go to the iTunes Store home page
  • Power - open/close iTunes instance
  • Quit - exit the iTunes application
  • SoundVolumeUp - turn the volume up 5%
  • SoundVolumeDown - turn the volume down 5%
  • ToggleiTunes - show/hide iTunes window
  • ToggleVisuals - show/hide iTunes visuals
  • UpdateIPod - update the contents of the iPod
  • UpdatePodcastFeeds - update all podcast feeds (equivalent to the user pressing the Update button when Podcasts is selected in the Source list)

Integer Values

  • GetSoundVolume - return sound volume between 0 ~ 100
  • GetPlayerPosition - return player position in seconds
  • GetPlayerPositionPercent - return player position between 0 ~ 100

String Values - Current track information

  • GetCurrentTrackAlbum - album
  • GetCurrentTrackArtist - artist
  • GetCurrentTrackBitrate - bitrate
  • GetCurrentTrackBPM - beats per minute
  • GetCurrentTrackComment - comment
  • GetCurrentTrackComposer - composer
  • GetCurrentTrackEQ - EQ preset name
  • GetCurrentTrackGenre - genre(category)
  • GetCurrentTrackKindAsString - file description
  • GetCurrentTrackName - name
  • GetCurrentTrackRating - rating (0 ~ 100)
  • GetCurrentTrackSampleRate - sample rate
  • GetCurrentTrackSize - file size
  • GetCurrentTrackTime - the length of the track
  • GetCurrentTrackTrackCount - track count of the album
  • GetCurrentTrackTrackNumber - track index
  • GetCurrentTrackYear - year
  • GetCurrentTrackArtwork - return artwork file path, use DefaultArtwork to set the default path (relative path to the skin's folder).

Examples:

[MeasurePlay]
Measure=Plugin
Plugin=Plugins\iTunesPlugin.dll
Command=Play

[MeterPlay]
Meter=IMAGE
X=40
Y=110
ImageName=img\play.png
LeftMouseDownAction=!execute [!RainmeterPluginBang "MeasurePlay"]

[MeasureCurrentTrackArtwork]
Measure=Plugin
Plugin=Plugins\iTunesPlugin.dll
Command=GetCurrentTrackArtwork
DefaultArtwork=img\defaultartwork.png

[MeterCurrentTrackArtwork]
Meter=IMAGE
X=170
Y=10
W=80
H=80
ImageName="%1"
MeasureName=MeasureCurrentTrackArtwork

 
Plugin-MBM5Plugin

MBM5 Plugin

Plugin=Plugins/MBM5Plugin.dll

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.

 
Plugin-PerfMon

Perfmon Plugin

Plugin=Plugins/PerfMon.dll

Use Window's Performance Monitor to find out the valid values for these settings.

There are a great many counters which Windows tracks in Performance Monitor. From the Start Menu, type "Perfmon.msc" to run the tool and find the counters you wish to measure.

Important note: The names of the objects, counters and instances need to be in English even 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 CPU Rainmeter is using:(use Scale=100000.0 in TEXT meter if you want percentual value)

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

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:"

 
Plugin-PingPlugin

Ping Plugin

Plugin=Plugins/PingPlugin.dll

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. 30000 = 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"

 
Plugin-PowerPlugin

Power Plugin

Plugin=Plugins/PowerPlugin.dll

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 a TIME-measure. It is used only when PowerState is LIFETIME.

 
Plugin-Quote

Quote Plugin

Plugin=Plugins/QuotePlugin.dll

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

 
Plugin-RecycleManager

RecycleManager Plugin

Plugin=Plugins/RecycleManager.dll

This plugin can be used to check the size and count of the files in the recycle bin.

RecycleType
COUNT = The number of items in the recycle bin.
SIZE = The total size of the items in the recycle bin.

Drives
for total system bin, use Drives=ALL.
for multiple drives use | as a delimiter e.g. Drives=A:|C:|D: will give the sum of these drives.

Examples:

[MeasureBin]
Measure=Plugin
Plugin=Plugins\RecycleManager.dll
RecycleType=SIZE
Drives=C:
UpdateDivider=10

[MeterBin]
Meter=STRING
MeasureName=MeasureBin
X=0
Y=0
AutoScale=1
Text="TrashSize: %1"

Bangs:

!RainmeterPluginBang "MeasureBin OpenBin"
!RainmeterPluginBang "MeasureBin EmptyBin"
!RainmeterPluginBang "MeasureBin EmptyBinSilent"

 
Plugin-ResMon

ResMon Plugin

Plugin=Plugins/ResMon.dll

Requires Windows XP with Service Pack 1 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=Rainmeter.exe would measure only Rainmeter'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.

 
Plugin-Speedfan

Speedfan Plugin

Plugin=Plugins/SpeedFanPlugin.dll

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.

SpeedFanScale
This defines the temperature unit of measure you want the value displayed in. (Only applicable when SpeedFanType=TEMPERATURE)

  • C - Returns the temperature in Centigrade.
  • F - Returns the temperature in Fahrenheit.
  • K - Returns the temperature in Kelvin.

  • This requires SpeedFan to be set to return Centigrade. If it is set any other way the returned value will not be correct.

 
Plugin-SysInfo

SysInfo Plugin

Plugin=Plugins/SysInfo.dll

This plugin returns various information about your system.

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

String Values - Can only by used with the string meter

  • COMPUTER_NAME
  • USER_NAME
  • SCREEN_SIZE - The resolution of the primary display monitor in a string of the form "width x height"
  • WORK_AREA - The size of the client area of the primary display monitor in a string of the form "width x height"
  • RAS_STATUS
  • OS_VERSION
  • OS_BITS
  • 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. 0-999 for installed, 1000-1999 for active)
  • GATEWAY_ADDRESS (SysInfoData specifies the adapter)
  • HOST_NAME
  • DOMAIN_NAME
  • DNS_SERVER

Numeric Values

  • SCREEN_WIDTH (SysInfoData specifies which monitor, if there are several)
  • SCREEN_HEIGHT (SysInfoData specifies which monitor, if there are several)
  • VIRTUAL_SCREEN_TOP - Y-Coordinate of the upper left corner of the virtual screen. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
  • VIRTUAL_SCREEN_LEFT - X-Coordinate of the upper left corner of the virtual screen. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
  • VIRTUAL_SCREEN_WIDTH - Width of the virtual screen which encompases all display monitors.
  • VIRTUAL_SCREEN_HEIGHT - Height of the virtual screen which encompases all display monitors.
  • WORK_AREA_TOP - Y-Coordinate of the upper left corner of the client area. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
  • WORK_AREA_LEFT - X-Coordinate of the upper left corner of the client area. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
  • WORK_AREA_WIDTH - Width of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are several.
  • WORK_AREA_HEIGHT - Height of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are several.
  • NUM_MONITORS - The number of display monitors currently active.

SysInfoData
Additional data that some of the SysInfoType items require. This is always a number. For SysInfoTypes which use SysInfoData to specify a monitor, the appropriate value to pass can be found by opening the Windows Display Properties dialog. It is important to note that "1" is not always the primary display monitor.

 
Plugin-WebParser

WebParser Plugin

Plugin=Plugins/WebParser.dll

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.

Debug2File
If Debug is set to "=2" then this parameter will allow you to set the path and filename of the file to use for the downloaded webpage. This will allow you to use WebParser to parse the local version for testing, or for use in another measure or skin.

Usage:

[WebParserMeasure]
Debug2File="[path\]Filename.ext"
Debug=2

Examples:

[WebParserMeasure]
Debug2File="Debug2File.txt" (saves to current skin folder)
Debug=2

[WebParserMeasure]
Debug2File="#SKINSPATH#DebugFiles\Debug2File.txt" (saves to\DebugFiles under the \Skins folder)
Debug=2

Notes:

  • Must include at least a filename. Path alone will not work.
  • Must be a directory which already exists. Does not create the target directory.
  • If the Debug2File= parameter is not used, WebParser will save webparserdbump.txt in the root of C: as it always has.

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.

DownloadFile
When Download is set to 1, the file is downloaded to DownloadFile folder in the skin folder as a filename set to this value. If you define it as "DownloadFile=image.jpg", DownloadFile folder will be created in the current skin folder then the downloaded file is saved as "image.jpg" If you define as "DownloadFile=photo\image.jpg", the subfolder photo is created then a file is saved in this folder.

Notes:

  • This file is not a temporary file so it is not deleted even if it close a skin.
  • As for specification of file path, it is not possible to specify by the absolute path and also specification to the outside of DownloadFile folder is not possible.

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

ForceReload
WebParser reads the resource only if it has been modified. This can be overridden with ForceReload=1.

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 Microsoft Reference.

Examples

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

[MeasureRSSTitle]
Measure=Plugin
Plugin=Plugins\WebParser.dll
UpdateRate=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

 
Plugin-WifiStatus

WiFiStatus Plugin

Plugin=Plugins/WifiStatus.dll

The WifiStatus plugin can be used to display various attributes of visible wireless networks in your area.

This plugin has been tested succesfully on all versions of Windows (32 and 64 bit). Note: if you are running Windows XP SP1/SP2, you will need to install this hotfix: KB918977

The plugin uses the following values as input:

WifiInfoType= (required)

  • SSID broadcast name for your current connection. If you are still trying to connect, you may see a 'connecting...' or 'authorizing...' next to the name, but only if your update speed is around 2 seconds
  • QUALITY this is a percentage value of the maximum dBm signal strength for your current connection)
  • ENCRYPTION the cipher algorithm being used for your current connection. Possible values are: NONE, WEP40, TKIP, AES, WEP104, WPA_GROUP, WEP, ???(unknown)
  • AUTH the authentication algorithm being used for your current connection. Possible values are: Open, Shared, WPA_NONE, WPA_Enterprise, WPA_Personal, WPA2_Enterprise, WPA2_Personal, ???
  • PHY this shows the supported bands for your connection (NOT your adapter). Possible values are 802.11a, 802.11b, 802.11g, 802.11n, DSSS, FHSSS, IR-Band, ???
    Note: The PHY measure is not supported by Windows XP(SP1/2/3). It should work fine in Vista and Windows 7
  • LIST this shows a list of all visible networks. The list is automatically separated by line-breaks '\n', so each network appears on a separate line. Also next to the network name you will also see its band, cipher, and authentication algorithms.

WifiIntfID= (optional)
Should be kept at 0 ("WifiIntfID=0") unless you have more than 1 wireless interface adapter (this may / may not include bluetooth/infrared receivers). If you do not get any response from the measure with this value at 0, then try other values starting from 1, then 2 and so on ...

WifiListStyle= (optional) Allows you to control what information appears along with the names of all visible networks (returned when WifiInfoType=LIST, see above). This value should be either 0, 1, 2 or 3. This is how the list will show up based on these values:
0: SSID
1: SSID @band
2: SSID (Encryption:Authentication)
3: SSID @band (Encryption:Authentication)
Tip: You can use rainmeter's 'substitute=' feature to modify the characters used as delimiters here

WifiListLimit= (optional) Allows you to control how many networks will be displayed by the LIST measure.Note: The list is sorted in descending order based on the signal quality of each network (i.e. strongest first, weakest last)
Any value greater than 0 is valid for this measure.

Examples

[MeasureSSID]
Measure=Plugin
Plugin=Plugins\WifiStatus.dll
WifiInfoType=SSID
WifiIntfID=0

[MeasureNetworks]
Measure=Plugin
Plugin=Plugins\WifiStatus.dll
WifiInfoType=LIST
WifiIntfID=0
WifiListStyle=3

A more detailed sample + support availabe in this thread : WifiStatus support thread

 
Plugin-WindowMessage

WindowMessage Plugin

Plugin=Plugins/WindowMessagePlugin.dll

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

 
Plugin-WirelessInfo

WirelessInfo Plugin

Plugin=Plugins/WirelessInfo.dll

This plugin is depreciated as of version 1.0 of Rainmeter.Please use WiFiStatus for new skins

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

  • In Network Connections UI, select an adapter and open Properties.
  • Click Install, then Protocol, then Add, and then Have disk.
  • Point to the location of the wirelessuio.inf and driver (in the Rainmeter/Plugins directory).
  • Select Wireless Usermode I/O Protocol and click OK.
  • Start the protocol. Click Start, then Run, and type "Net start wirelessuio".
  • 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

Contact

Support for Rainmeter is provided at: http://www.rainmeter.net.

The best way to get help is to create a thread on the Rainmeter Forums.

Be sure when creating a help thread to indicate:

  • The exact version of Rainmeter you are running
  • Your operating system version (XP/Vista/Win7) and architecture (32bit/64bit)
  • The nature of the issue, with as much detail as possible
  • Any other relevant information (eg: if a skin is causing problems, the name and possibly the .ini file of that skin)

It might also be helpful if you include the log-file that Rainmeter creates when creating bug-reports. You can activate the log-file by right clicking the Rainmeter System Tray icon and selecting "Show Log File". Rainmeter will offer to create the log file if it does not exist.

Rainy, the author of Rainmeter can be contacted at: Rainy

 
License

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

History

24 JAN 2010 (Version 1.2)

  • Major improvements to how Rainmeter works with multiple monitors.
  • New WebParser settting "DownloadFile=" to allow local storage and naming of downloaded images.
  • New !Bang - !RainmeterRefreshApp. Allows full Rainmeter refresh from a skin or command line.
  • FIXED: Issue where DynamicVariables=1 disabled UpdateDivider.
  • FIXED: LineColor did not use the values of Dynamic Variables in Meter=Line.
  • FIXED: Inconsistent numerical value via DynamicVariables ( issue 130 )
  • FIXED: Problem with WebParser and "local files" with Cyrillic chars in the path. (issue 139)
  • The coded character set of the logfile is changed to UTF-8. (ccs=UTF-8) msdn.microsoft.com
  • "MS Shell Dlg 2" is now used for the ABOUT dialog box. msdn.microsoft.com
  • FIXED: Invalid error message box when DynamicVariables is 1 and FontSize is 0. (issue 126)
  • FIXED: Virtual Bytes usage for an x64 process with perfmon plugin does not display value greater than 4 GB ( issue 113 )
  • FIXED: A numeric value greater than 32bit can be now displayed when NumOfDecimals is 0 in Meter=STRING.
  • FIXED: Compatibility issue in Windows 2000. (AboutDialog, SysInfo)
  • CHANGED: FontSize=0 (invisible) is now valid in a STRING meter.
  • CHANGED: The parsing of parameters to use default values for incorrect "typing" (ie: FontSize=ABC)
  • FIXED: An issue with skins not positioning correctly on multiple monitors when KeepOnScreen=1.
  • Added "Processor=n" parameter to Measure=CPU function so it can be used as well as / instead of PefMon.dll Plugin to measure multiple-core CPU systems. Processor=1 is the first core, etc. Processor=0 or no parameter is still the average of all cores.
  • Changed NetIn and NetOut function to return correct information if Interface=0 is set. This was returning an incorrectly high value by combining the activity of the physical network card with Windows virtual interfaces.
  • Added the statement "Debug=1 / 0" in the [Rainmeter] section of Rainmeter.ini. This currently will do some logging of enumerated monitors and network interfaces and may be added to over time.
  • FIXED: Corrected an invalid return value from MainWndProc.
  • Added the parameter "ImageAlpha=" for image meters. This will allow setting the "transparency" of an image from 0 (invisible) to 255 (fully opaque).
  • Changed "AntiAlias=1" to use "default" interpolation instead of "Bicubic". This should result in better antialiasing of images.
  • RainBrowser: Minor change to a link added by the program to [Metadata]
  • FIXED: Corrected an issue where a BAR meter did not work correctly with DynamicVariables=1
  • Added new image tinting / transforming functions in IMAGE meter. (ImageTint, GreyScale, ColorMatrix(1-5), ImageFlip, ImageRotate)
  • FIXED: Improved image antialiasing with ImageRotate function
  • Removed ImageAlpha function as it is replaced by ImageTint
  • FIXED: The ability to have inline comments was broken in r340. Now works again to have Key=Value  ;comment
  • FIXED: The RANDOM function was only returning a random number on the first run.
  • Changed the PLAY function to play the .wav file asynchronously so Rainmeter is not "paused" during play.
  • Added StringCase function to Meter=String. StringCase=[NONE | UPPER | LOWER | PROPER]
  • Change !RainmeterSetVariable to accept formulas as a parameter. Formulas must be enclosed in parentheses with the entire parameter enclosed in quotes if there are spaces in the formula: !RainmeterSetVariable VarName "(#SCREENAREAWIDTH# - 50)"
  • Changed the code to enable the use of "On Desktop" (AlwaysOnTop=-2) Z-Position for skins under Vista and Win7.
  • Added !RainmeterSetTransparency, !RainmeterShowFade, !RainmeterHideFade,!RainmeterToggleFade.
  • Added logging of the installed font families to the log file when Debug=1 is set.
  • FIXED: a problem with incorrect image resizing when AntiAlias=0 was set.
  • Fixed the crash problem when multiple Rainmeter instances are running and Window's "show desktop" was used.
  • RainThemes: Changed code so your original ConfigEditor and SkinPath settings are not modified when you load a theme.
  • Modified the handling of "On Desktop". This affects all Windows versions.
  • Added "LoadOrder=" in Rainmeter.ini on each config, to handle the skins' loading order.
  • Some changes in how network statistics are saved in Rainmeter.ini
  • Fixed a problem that prevented !RainmeterQuit from executing when no meter window is running.
  • Fixed a problem with StyleTemplate which was causing issues with MeterStyle in rare cases.
  • Added a workaround to avoid the "IniFileMapping" function when reading skins, which was causing .ini files with Windows reserved names like Control.ini or Win.ini to produce errors.
  • Added Rainmeter version information to the right click (Properties / Details) menu for Rainmeter.exe.
  • Fixed an issue with Rainmeter properly using UNC (Universal Naming Convention) network shared drives / folders, such as "\\SERVER".
  • Fixed a small bug in @Include routines that impacted some @Inlcude and MeterStyle combinations.
  • The RANDOM math function was case sensitive, requiring "Random" only. Now case insensitive.
  • Fixed an issue where a very high Update rate could cause problems closing a skin.
  • Changed the HighBound parameter for RANDOM to return up to and including the number in HighBound instead of just up to.
  • Added #CRLF# as a built-in variable to allow putting a carriage return / line feed in a string meter.
  • Changed the undocumented LG (logarithm) function to be LOG and added to the manual.
  • Corrected an issue where formulas could not be used for defining X and Y on a meter if the "relative position" (r/R) modifiers were used.
  • Added new built-in variable #PROGRAMDRIVE# which will return X: or \\Server or \\Server\X: (X=drive letter)
  • Corrected an issue with network statistics on a logical WiFi network interface.
  • Build 376 was missing a fix that addressed a WiFi NetIn/NetOut problem.
  • Fix to allow UNC paths in @Include statements to function correctly.
  • Rainstaller is now included in the Rainmeter build.
  • Rainmeter installer now asks to run Rainmeter when complete.
  • Rainstaller: Added a sample .rmskin as a template for authors.
  • Rainstaller: Fixed a bug when there was no top level folder in a .rmskin
  • Rainstaller: Added Merge=1/0 to support addons for suites.
  • Changes to better support PortableApps.com in RainThemes and Rainstaller. Now preserves user's settings in [Rainmeter] for SkinPath, ConfigEditor and TrayExecute(x).
  • Improved the Registry measure to handle registry keys added or deleted while the skin is running.
  • RainThemes: Added the ability to edit themes in your text editor. Changed the UI to better match Rainstaller.
  • Removed Tranquil suite of skins.
  • Removed Wing Firefox and Lightning Sunset Enigma themes.
  • Added Gnometer suite of skins as a default. Either Enigma or Gnometer can be chosen on a new install.
  • Added RainBackup application. Added to Windows Start Menu under Rainmeter.
  • Many Improvements to Rainmeter Installer. Allows for selection of default suite of skins and runs Rainmeter at the end.
  • Speedfan improvement to add SpeedFanScale for converting from Celsius to Fahrenheit.
  • Many Updates and fixes to Enigma.
  • RainThemes now protects default themes from overwrite to facilitate future updates.
  • Fix to Ping Plugin to work better with newer versions of Windows
  • Fix to timing issue with Ping Plugin to reduce possibility of Rainmeter crash when pinging an active server not responding to the Ping service.
  • Changed @Include to allow the use of variables in the statement.
  • Updated GUI for EnigmaConfigure. Now also restores saved settings on upgrade of Enigma from \Backup.
  • Improvement of functionality when using !Rainmeter(Hide/Show)Meter and DynamicVariables=1
  • Fixed a bug in SpeedFan that could cause a crash if SpeedFanType was not set to TEMPERATURE.
  • Changed an error in using Dynamic image names to write to the log rather than producing an error dialog.
  • Fixed an issue with loading image names when in a MeterStyle.
  • Fixed a bug in Meter=Histogram.
  • Fixed a bug in the Ping plugin that could cause a crash if the network was not present when the skin was refreshed.

1 NOV 2009 (Version 1.1)

  • The default value for the UpdateRate in the WebParser is now 600 (=10 mins).
  • Fix for the ToggleiTunes command in the iTunesPlugin.
  • The IgnoreRemovable now defaults to true (1) which should help with the missing disk errors.
  • Added Themes submenu to the Rainmeter's context and tray menus.
  • Variables can be used under the [Variables] section (as long as they have been defined before the current variable is read).
  • Changed RainThemes to automatically create a theme called "AutoSave" which will contain your current setup.
  • The windows stay visible with Windows 7 Aero Peek.
  • WebParser reads the resource now only if it has been modified. This can be overridden with ForceReload=1.
  • !RainmeterRefresh and !RainmeterQuit are now handled only during the event loop since they can crash the application if executed during Update().
  • It's now possible to use the measures as if they were variables (use [MeasureName] instead #VariableName#). Set DynamicVariables=1 for all meters and measures which refer to other measures.
  • New bang !RainmeterSetVariable can be used to change the value of a variable (DynamicVariables must be 1 in places where the variable is used).
  • Skin information and instructions can be added to [Metadata] section.
  • Aspect ratio of the image is preserved when the image is scaled.
  • New RANDOM function in the CALC measure type.
  • Fonts can now be stored in Rainmeter\Fonts or with the skin and not "installed" in Windows.
  • Added support for style sections. MeterStyle can be used in meters to read the values from the style section.
  • Added support for the middle mouse button (MiddleMouseDownAction / MiddleMouseUpAction)
  • The skin files can read other files with @include statement.
  • If native transparency is enabled the windows are not refreshed anymore when settings change but they are just moved to the correct location.
  • Added a version check for the skins which come with Rainmeter so they can be upgraded.
  • Path and filename of the file created by Debug=2 in WebParser is now configurable with Debug2File="[Path\]filename.ext"
  • The standard "hand pointer" mouse cursor is shown when you hover over a meter with any "MouseAction" on it or a button.
  • Added #CURRENTCONFIG# as a "built-in" variable.
  • Fixed: [Measure] contained in Action in Measure and Meter are not replaced when reading skins. They are replaced only when executing action.
  • Fixed: When the designation of Drive is wrong, a strange volume label is indicated.
  • The !bangs can be now used from command line even if there are no active configs.
  • Included RainBrowser to the build.
  • WiFiStatus: Added a variable called WifiListLimit=X that allows you control how many access points to display at a time
  • WiFiStatus: Removed all popup errors, all debugging messages now sent to Rainmeter log file
  • WiFiStatus: Fixed some memory leaks 7 and Vista users were facing

7 AUG 2009 (Version 1.0)

  • Diskspace can be checked from the removable drives too.
  • Time measure didn't show correct week number. Fixed.
  • New plugins: RecycleManager and iTunesPlugin
  • SysInfo plugin updated with 11 new SysInfoTypes.
  • SysInfo IP Address extened to select active interfaces
  • The help couldn't be opened if Rainmeter was installed to a folder with spaces. Fixed.
  • Added support for transition frames for the bitmap meter.
  • Some Vista specific fixes: Rainmeter.ini and Rainmeter.log are now written to %APPDATA%\Rainmeter and editing the skins will ask for admin privileges.
  • When Rainmeter is started the first time the default skin is activated automatically.
  • New build in variables: #WORKAREAX#, #WORKAREAY#, #WORKAREAWIDTH#, #WORKAREAHEIGHT#, #SCREENAREAWIDTH#, #SCREENAREAHEIGHT#, #PROGRAMPATH#, #SETTINGSPATH#, #SKINSPATH#, #PLUGINSPATH#, #ADDONSPATH# and #CURRENTPATH# (this is the path where the ini file that is currently read is located).
  • Math formulas can be used to define the window position and the meter dimensions (the formula must be surrounded in parenthesis).
  • If there is a file called Default.ini in the program folder it will be used as the default settings file for new users.
  • The location of the settings file (rainmeter.ini) can be defined as a command line argument.
  • Meters have now support for a transformation matrix.
  • New !bangs: !RainmeterPluginBang and !RainmeterQuit.

22 JAN 2006 (Version 0.14 - Beta)

  • 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 - Beta)

  • 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 - Beta)

  • 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 - Beta)

  • 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 - Beta)

  • 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 too.
  • If the image meter is bound to a measure it tries to load the image named after the value (that is returned as string).
  • Added !RainmeterResetStats-bang.
  • Fixed !RainmeterZPos-bang when executed without Litestep.
  • Added ClipString to the string meter.
  • AlwaysOnTop=2 keeps the window on top of other topmost windows (like to taskbar).
  • AlwaysOnTop=-2 keeps the window on desktop.
  • DesktopWorkArea can be used to change the desktop's work area.
  • String meter displays the battery time in HH:MM:SS-format (or "Unknown", if it not supported)
  • Removed !RainmeterChangeConfig and added !RainmeterActivateConfig and !RainmeterDeactivateConfig
  • Added a tray icon. It can be bound to a [TrayMeasure] in Rainmeter.ini.
  • The tray icon can be disabled with TrayIcon=0.
  • Meters can be moved with !RainmeterMoveMeter.
  • Window position can be overridden with RainmeterWindowX and RainmeterWindowY in step.rc.
  • Configs can use AppVersion to inform that they need a specific version of Rainmeter to run.
  • The config editor can be changed with ConfigEditor=editor.exe in Rainmeter.ini (don't use spaces in the filename).
  • New Help!

9 FEB 2003 (Version 0.9 - Beta)

  • Fixed a bug in the ini-file parsing routine.
  • Created a PowerPlugin for laptop battery information.
  • Selecting the network interface didn't work. Fixed.
  • The general config and skin's config are separated into different ini-files.
  • Added RainmeterSkinPath step.rc command, which sets the path to the skin folders.
  • Skins are read from Skins-folder by default (instead of the main folder).
  • The about dialog now shows all the active measures.
  • Removed GatherStatistics. Stats are now always gathered if a measure supports that.
  • Added Cumulative to net meters.
  • Added AntiAlias to line meter and string meter.
  • All colors can now have 4 parameters, where the last one is the alpha value.
  • Added a round line meter that can be used draw analog VU-meters and such.
  • Added Autoscale to the histogram meter.
  • Added support for native W2k/XP transparency.
  • Implemented a median filter in the automatic max value tracker to strip out the spikes.
  • !Execute bang works now also with the standalone version of Rainmeter.
  • Added BackgroundMode option.
  • Added SolidColor & BevelType options to the meters and the main window for a solid color background.
  • Added few new bangs: !RainmeterMove, !RainmeterZPos, !RainmeterAbout, !RainmeterRedraw and !RainmeterLsBoxHook.
  • The string meter can be used to draw normal text if it's not bound to anything (just use the Prefix/Postfix).
  • Added AllowNegativeCoordinates option to allow the use of negative coordinates.
  • Snapping now works on all monitors (thanks to Owain Cleaver for the patch).
  • Fixed the MBM5plugin to work with the newer version of Motherboard Monitor.
  • Added CPU and MHZ to the MBM5plugin.

30 JUN 2002 (Version 0.8 - Beta)

  • Rainmeter is not anymore dependant on lsapi.dll. It only uses lsapi.dll's functions if ran as Litestep plugin.
  • The position is not updated to the ini-file if the file has changed.
  • Added possibility to choose the measured network interface.
  • Negative coords were saved as very high positive values. Now they should be saved as zero.
  • Added a autoscaling line meter that can display multiple histograms.
  • Added RainmeterCurrentConfig and RainmeterCurrentConfigIni step.rc commands that can used to set a specific config.
  • Added MBM5MaxValue for the MBM5 plug-in.
  • Fixed a bug that didn't reset the AlwaysOnTop state of the window after refresh.
  • AlwaysOnTop has now three possible values: -1 puts the window always on bottom, 0 is normal window positioning and 1 puts it always on top.
  • Changed the compilation settings and the DLL is a quite a bit smaller now.
  • Plugins can display string values now too.
  • Created a SysInfo plugin that displays all kinds of data (IP number, OS version, etc.).
  • The about dialog is now modeless.
  • Fixed a memory leak in perfmon.dll
  • Created a AdvancedCPU plugin that allows include/exclude processes in % Processor Time.
  • Added SnapEdges option that snaps the window the the screen edges when moved.
  • Added NumOfDecimals option for the string meter.
  • Added !RainmeterToggle bang.

5 MAY 2002 (Version 0.7 - Beta)

  • Fixed a bug with histogram meter's bitmap blitting.
  • IfAboveAction and IfBelowAction didn't work. Fixed.
  • Added BitmapZeroFrame option to BITMAP meter.
  • Added build-in commands for playing sounds in actions.
  • Added NetTotal measure.
  • Added TrafficAction and TrafficValue to execute actions after certain amount of net traffic.
  • Added Hidden option to meters and Disabled option to measures
  • New plugin: MBM5plugin, which measures MBM5 data (temperature, fans and volts).
  • Added Image meter, which just shows one image.
  • Fixed a bug in Perfmon.dll that prevented measuring counters that do not have instance names.
  • Added !RainmeterHideMeter, !RainmeterShowMeter and !RainmeterToggleMeter to change visiblity of individual meters.
  • Added !RainmeterDisableMeasure, !RainmeterEnableMeasure and !RainmeterToggleMeasure to change status of individual measures.
  • The registry measure is now able to access also other keys than just the ones under HKEY_CURRENT_USER.
  • The ini-files inside subfolders do not have to be named as Rainmeter.ini (anything that ends with .ini works).
  • The same subfolder can contain several configuration ini-files.
  • The !RainmeterRefresh can now get the config name and the inifile as arguments.
  • Added !RainmeterChangeConfig bang.
  • Negative coordinates are saved as zero to prevent the window to be placed off screen.
  • Added UpdateDivider for measures.
  • The Rainmeter.exe can be used to send !bangs to the Rainmeter (but only Rainmeter bangs!).
  • Fixed vertical bar meter (should grow, not slide).
  • Fixed a bug: histogram values were drawn one pixel too short.
  • The left and right mouse actions can be defined also per meter.

15 JANUARY 2002 (Version 0.6 - Beta)

  • Fixed a bug that made the CPU-meter to go 100% after refreshing on Win9x.
  • It is not necessary to name the config file as "Rainmeter.ini", anything that ends with ".ini" will do. Note that this only applies if the name of the config file is defined explicitely.
  • If the previously used config cannot be found anymore, the first one is used instead.

26 DECEMBER 2001 (Version 0.5 - Beta)

  • IMPORTANT! The configuration file format has been changed and the old ini-files do not work anymore! Also some of the config keywords have been changed.
  • Structural changes to the code (now it is easier to maintain).
  • Added GatherStatistics, which is currently only supported by the NetIn/Out-measures.
  • Added Plugin measure for external counters. Check the source code for example plugin.
  • Added Registry measure, which can get data from a given registry key.
  • Added button up actions (RightMouseUpAction and LeftMouseUpAction) and renamed the down actions as RightMouseDownAction and LeftMouseDownAction
  • Added support for actions that are executed when a measure goes above/below certain value.
  • Removed the PerfMon measure because of incompatibilities with NT4. The PerfMon measure is now implemented as Rainmeter plugin.
  • Added Time-measure.
  • Colors can now be defined also as hex values in RGB-format (e.g. FontColor=FFCCDD).
  • The position of the window can be stored into the ini-file automatically.
  • Added support for multiple configurations. The configs can be changed from context menu.

1 SEPTEMBER 2001 (Version 0.4 - Beta)

  • If the maximum value for the meters (e.g. NetInSpeed) is not given it is determined automatically from the input.
  • All measures can be displayed as percentual strings.
  • Added uptime-measure. Usable in a string-meter only!
  • Added two new meters: Bar and Bitmap.
  • Added !RainmeterRefresh bang.
  • Added left and right mouse button actions.
  • Now it is possible to define the location (and the name) of Rainmeter.ini-file in the step.rc with RainmeterIniFile.
  • Added context menu, which can be used to refresh the window and quit the program if ran as standalone.
  • Added possibility to use images as the backgrounds for the histogram graphs.
  • Small adjustments so that Rainmeter can run in a lsbox as *WharfModule. Dunno if it also works in a real wharf.

19 AUGUST 2001 (Version 0.3 - Beta)

  • Added support for NT performance data.
  • Added support for measuring free disk space.
  • Added possibility to display the measure values as plain strings.
  • Added automatic scaling for the string values.
  • Added possibility to invert the values (e.g. measure allocated disk space instead of free space).
  • Improved mouse over hiding.
  • Now it is possible to start Rainmeter hidden.
  • Added support for Litestep's Revision ID.

19 JULY 2001 (Version 0.2 - Beta)

  • Rewrote (almost) everything.
  • The CPU & memory are now measured a bit different way.

22 FEBRUARY 2001 (Version 0.1 - Beta)

  • Initial beta release