Download pdf - Rain Meter Manual

Transcript

1

Rainmeter

Manual

Documentation for the latest beta version of Rainmeter. Use links in the sidebar to navigate.

Installation

Download the latest release or beta version from rainmeter.net.

Standard installation

The standard installation is recommended for most users. Simply run the installer and follow the instructions.

Portable installation

To run Rainmeter from a single folder, so it can be easily taken with you or even run directly from a removable drive, select 'Portable install' during the

install process. Note that the required C++ and .NET runtime libraries will have to be manually installed.

Silent installation (advanced)

To install Rainmeter without user interaction, use the installer command line switches.

Default file locations

Program folder:

C:\Program Files\Rainmeter

Skins folder:

C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins (Windows XP)

C:\Users\YourName\Documents\Rainmeter\Skins (Windows Vista and later)

Rainmeter.ini and themes:

C:\Documents and Settings\YourName\Application Data\Rainmeter (Windows XP)

C:\Users\YourName\Appdata\Roaming\Rainmeter (Windows Vista and later)

Settings

The general configuration settings are in a file named Rainmeter.ini. To modify settings, use the Manage dialog by clicking on the Rainmeter tray icon.

Alternatively, right-click on the tray icon and select "Edit Settings" to modify the options with a text editor.

The Rainmeter.ini file has several sections: [Rainmeter], [TrayMeasure], and individual sections for each config which has been loaded. 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 a config is opened it will write the settings under its own section in the Rainmeter.ini file.

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. If you cannot change something, try changing the value after completely closing Rainmeter.

2

Settings-Rainmeter

The [Rainmeter] section of Rainmeter.ini defines general Rainmeter settings. The following must be put under the [Rainmeter] section:

Options

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 (e.g. DesktopWorkArea=0,0,1500,1200 ). The values are Left,Top, Right, Bottom. Note that

moving the taskbar will reset the workarea to Windows' default, as will changing screen resolution. If you have multiple monitors, you can set the

DesktopWorkArea for a specific monitor by adding @ and the number of the monitor to the end of

DesktopWorkArea. DesktopWorkArea= or DesktopWorkArea@0= is the primary monitor, and DesktopWorkArea@1 -@xx is a specific monitor.

DesktopWorkAreaType

If set to 1, the values in DesktopWorkArea will be used to define a margin relative to the edge of the screen. Default is 0.

If DesktopWorkAreaType is 0, then DesktopWorkArea defines a region on the screen by both size and position with Left, Top, Right, Bottom. If

DesktopWorkAreaType is 1, then DesktopWorkArea defines a region by excluding Left, Top, Right, Bottom amount of pixels from the edges of the

screen.

TrayIcon

Set to 0 to get rid of the tray icon.

TrayExecuteM, TrayExecuteR, TrayExecuteDM, TrayExecuteDR

Executes a command or !bang when the tray icon is clicked or double-clicked with the mouse. M and R denote middle and right buttons respectively.

Note that TrayExecuteR will override the normal context menu in the tray (hold the CTRL key to force default behaviour).

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

Logging

If set to 1, Rainmeter will log errors and other information in a log file stored in %APPDATA%\Rainmeter\Rainmeter.log. You can start, stop, view and

delete this log by using the Rainmeter system tray context menu.

Debug

If set to 1, logging will be more verbose. This setting should be used only when debugging as it negatively impacts performance. Default is 0.

DisableVersionCheck

By default, Rainmeter will check to see if there is a newer RELEASE version of the application available. If so, it will prompt you with a link to the site

where the new version can be obtained. If you wish to disable this version checking, set DisableVersionCheck=1 . Note that only release (not beta)

versions of Rainmeter are checked for.

3

Settings-TrayMeasure

One special section is [TrayMeasure], which can be used to define a measure for the tray icon. You can use any measure for this as long as it returns some

meaningful values (i.e. numbers between some limits). The following must be put under the [TrayMeasure] section:

Options

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 TrayMeter=Histogram .

TrayColor2

Defines the foreground color when TrayMeter=Histogram .

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 Skins folder. It's possible to also use icon files as the tray bitmap. You can use %i in the filename to define an

increasing number from 1. E.g. TrayBitmap=tray-%i.ico would read the icons files tray-1.ico, tray-2.ico, tray-3.ico and so on as long as it can find

them. The format specification is like printf (e.g. 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.

4

Settings-ConfigName

The following should be put under the the sections for their respective configs, e.g. [illustro\Clock]. Most of these settings can also be set via the skin right-click context menu or through the Manage dialog.

Options

WindowX, 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.

AnchorX, 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.

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.

Draggable

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

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.

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

StartHidden

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

NativeTransparency

Set to 1 for native transparency support (only necessary for Windows XP).

AlphaValue

The transparency value (0 - 255) for the window. For Windows XP, NativeTransparency must be enabled.

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.

KeepOnScreen

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

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 tray context menu.

Note: The value of LoadOrder has no bearing on what the position of the config is, i.e. "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.

5

Settings-BuiltInVariables

The following are pre-existing variables that are set and controlled by Rainmeter. Their values cannot be manually changed.

Variables which return fully qualified paths.

#PROGRAMDRIVE# - Drive Rainmeter is installed to.

e.g. C: or \\server\Users\

Note that the following paths already contain a trailing slash.

#PROGRAMPATH# - Rainmeter program folder.

e.g. C:\Program Files\Rainmeter\

#SETTINGSPATH# - Folder which contains Rainmeter.ini.

e.g. C:\Users\YourName\AppData\Roaming\Rainmeter\

#SKINSPATH# - Skins folder.

e.g. C:\Users\YourName\My Documents\Rainmeter\Skins\

#PLUGINSPATH# - Plugins folder.

e.g. C:\Program Files\Rainmeter\Plugins\

#ADDONSPATH# - Addons folder.

e.g. C:\Program Files\Rainmeter\Addons\

#CURRENTPATH# - Path of current skin.

e.g. C:\PathToSkinsFolder\illustro\Clock\

#ROOTCONFIGPATH# - Path to highest-level folder under \Skins of current skin.

e.g. C:\Users\YourName\My Documents\Rainmeter\Skins\illustro\

Variables which return current skin information

#CURRENTFILE# - File name of current skin (e.g. Clock.ini )

#CURRENTCONFIG# - Config name of current skin (e.g. illustro\Clock )

#CURRENTSECTION# - Current [Section] name. Note that if used in [Variables], it will return "Variables" wherever used.

The variables below are dynamic in nature. As a result, DynamicVariables=1 must be set on the measure or meter in which they are used and they

may not be used in the [Rainmeter] or [Variables] sections.

#CURRENTCONFIGWIDTH# - Width of the current config in pixels

#CURRENTCONFIGHEIGHT# - Width of the height config in pixels

#CURRENTCONFIGX# - Left screen position of the current config in pixels

#CURRENTCONFIGY# - Top screen position of the current config in pixels

Variables which return information about your screen

#WORKAREAX# - X-position of the work area

#WORKAREAY# - Y-position of the work area

#WORKAREAWIDTH# - Width of the work area

#WORKAREAHEIGHT# - Height of the work area

#SCREENAREAWIDTH# - Width of the display resolution

#SCREENAREAHEIGHT# - Height of the display resolution

More variables and information when using multiple monitors with Rainmeter.

Miscellaneous variables

#CRLF# - Causes a line break when used in the Text option of a meter.

You may also use Windows environment variables, which can be obtained by the set command in cmd.exe (command prompt). To use them, use the name

of the environment variable within two percent sign (e.g. %APPDATA%). Note that environment variables may vary from system to system.

6

Settings-Groups

Configs can be categorized into "groups" to allow quick control of multiple configs at once. To add a Config to a group, simply add the Group statement to

the section under Rainmeter.ini. Alternatively, you may add Group under the [Rainmeter] section of the skin file.

Any number of groups may be added to a section, all of which must be separated by a vertical bar (i.e. "|"). Groups may also be specified under

the [Rainmeter] section of Rainmeter.ini. In this case, that group will be considered the default for all configs that have no groups defined.

Example (Rainmeter.ini):

[Enigma\Sidebar\Systems]

Active=0

WindowX=0

WindowY=0

AlphaValue=255

FadeDuration=250

ClickThrough=0

SavePosition=1

SnapEdges=1

KeepOnScreen=1

Group=Enigma | Systems

The Enigma\Sidebar\Systems config be added to the "Enigma" and "Systems" groups, which can then be controlled through several bangs.

Example (skin):

[Rainmeter]

Update=1000

Author=Me

Group=Enigma | Systems

The skin is added to the "Enigma" and "Systems" groups, which can then be controlled through several bangs.

7

Settings-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 MSDN.

"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

Variables 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. Variables 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. Variables 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. Variables for the SPECIFIED monitor (@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.

Skins

All skins are placed in the skin folder. Each skin must be in its own subfolder. The actual skin file is a normal .ini file with several sections that define the

skin layout and values. A subfolder may contain several .ini files, but only one .ini file per folder can be active at a given time.

The skin .ini file is divided into several parts. All the general settings are put under the [Rainmeter] section, details about the are placed in the [Metadata]

section, and the variables in the [Variables] section. Then follow the measures (which collect data) and meters (which display data). While it is not

necessary to place the sections in this order, it is the convention that is observed by the vast majority of skin authors.

Note: Rainmeter reads and executes measures and meters in the order they are in the skin .ini file. This is important in particular for positioning of meters

relative to each other.

8

Skins-Rainmeter

The [Rainmeter] section of a skin defines skin-wide options.

Background Options

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.

Changes to the image are applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

BackgroundMode

Defines the background mode. Valid values are:

o 0 - Image as defined by Background

o 1 - Transparent (default if no Background image defined)

o 2 - Solid color

o 3 - Scaled background image

o 4 - Tiled background image

BackgroundMargins

If BackgroundMode=3 , defined the margins of the background image that are not scaled. The parameters

are BackgroundMargins=left,top,right,bottom . For example, BackgroundMargins=0,10,0,20 implies that 10 pixels from the top and 20 pixels

from the bottom of the image are not scaled.

ImageCrop

Crops the image. The parameters are ImageCrop=X,Y,W,H,Origin . Origin is optional and can be set to one of the following:

o 1 - Top left

o 2 - Top right

o 3 - Bottom right

o 4 - Bottom left

o 5 - Center (both W and H)

Greyscale

If set to 1, the image will be greyscaled.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Flips the image. Valid values are:

o None

o Horizontal

o Vertical

o Both - flips both horizontally and vertically

ImageRotate

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

SolidColor

If BackgroundMode=2 , defines the color of the background.

SolidColor2

If BackgroundMode=2 , defines a second color for the background to create a gradient.

GradientAngle

If BackgroundMode=2 , defines the angle for the color gradient. The angle is defined in degrees.

BevelType

If BackgroundMode=2 , defines a bevel around the background.

o 0 - No bevel

o 1 - Raised

o 2 - Sunken

Blur

If set to 1, enables Aero blur on supported systems.

BlurRegion, BlurRegion2, ...

If BlurRegion is not specified, the blur is applied to the entire background of the skin. BlurRegion is defined as follows:

o 1,x1,y1,x2,y2 - Rectangular region

o 2,x1,y1,x2,y2,r - Rectangular region with rounded corners of radius r

o 3,x1,y1,x2,y2 - Elliptic region within the boundaries of the rectangle

(x1,y1) are the coordinates for the top-left corner while (x2, y2) are the coordinates for the bottom-right corner. If the first parameter is set to 0, that

specific BlurRegionN is ignored. A more detailed description with examples is available at Aero Blur.

9

Other Options

Update

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

setting of -1 will "disable" ongoing updating for the skin, so it will only update once, on load or refresh.

TransitionUpdate

The update time for the meter transitions. When a transition is active (i.e. 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. Currently, only Meter=BITMAP is supported.

DynamicWindowSize

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

DragMargins

Defines the area from where the window can be dragged. You need to define 4 values separated with comma. The values define the margin of non-

draggable area. It's also possible to use negative numbers in which case the margin is calculated from the opposite side. E.g. DragMargins=0,-

100,0,0

OnRefreshAction

Defines a command or !bang that is executed when the config is refreshed. This includes when the config is first loaded.

OnCloseAction

Defines a command or !bang that is executed when the config is closed / unloaded. This includes when exiting Rainmeter.

Author

The name and email of the author of the skin.

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, however it should be noted that if your skin uses features or settings not available in the version

of Rainmeter the end user is running, the skin may fail to operate correctly. AppVersion is a single number that can be calculated like this:

Major * 1000000 + Minor1 * 1000 + Minor2. E.g. the value for Rainmeter 2.0 would be 2000000 and Rainmeter 2.1 would be 2001000.

LocalFont, LocalFont2, ...

Allows the use of fonts without installing into Windows\Fonts.

Example:

[Rainmeter]

LocalFont=#CURRENTPATH#\TheSaBdCp.ttf

[SomeMeter]

Meter=String

FontFace=TheSansBold-Caps

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. Details on using fonts with Rainmeter can be found at A Note on Fonts.

10

Skins-Metadata

This section contains details about the skin. The information is displayed in the Manage dialog.

Options

Name

The name of the skin.

Information

A description of the skin, setup and usage instructions, credits, or other documentation elements, as needed. Use pipe separators ("|") to indicate line

breaks.

Version

The version number of the skin or parent suite.

License

Permissions and conditions for ports, mods and derivative works. If you use a standard license, e.g. Creative Commons or GNU, you can simply include

the name and version of the license.

Skins-Variables

Variables represent other values. There are several built-in variables, but custom variables may also be defined to centralize common values used later on

in the skin.

Variables are defined as follows under the [Variables] section:

VariableName=Value

The variable can then be referred in measures and meters as:

#VariableName#

For example, to set a variable for the size of the font you want to use on all your meters you might use:

[Variables]

Size=11

[SomeMeter]

FontSize=#Size#

[SomeMeter2]

FontSize=#Size#

If you want to use the variable name (and not its value), use asterisks to escape the variable:

#*VariableName*# . This is useful especially when using the !SetOption bang.

11

Skins-AeroBlur

Allows users on Windows Vista and later to enable Aero blur effects on transparent parts of the skin.

The following options must be in the [Rainmeter] section of the skin. The options have no effect on Windows XP or when Aero is disabled.

Options

Blur

Set to 1 to enable blur (default 0). If no BlurRegions are specified, the entire config background region is blurred.

BlurRegion, BlurRegion2, ...

Defines the area and shape of the region of the skin to be blurred. The setting is in the format BlurRegion=TYPE, TOPx, TOPy, BOTTOMx, BOTTOMy

(,RADIUS)

The first parameter, the type of the blur region, can be set to:

o 0 - Region is disabled

o 1 - Rectangular region

o 2 - Rectangular region with rounded corners. An additional parameter for the radius of the corners has to be specified

o 3 - Elliptical region

The following parameters define the size and shape of the region to be blurred. They are, in order:

o TopX - Top left horizontal point in the skin

o TopY - Top left vertical point in the skin

o BottomX - Bottom right horizontal point in the skin

o BottomY - Bottom right vertical point in the skin

o Radius - Radius of the corners of rounded rectangles (for use with type 2 only)

Formulas and variables can be used, although dynamic variables and measures aren't supported in the [Rainmeter] section. For example:

BlurRegion=1,#MyVar1#,#MyVar2#,(10 + 10),(#SCREENAREAHEIGHT# - 30)

Bangs

!ShowBlur / !HideBlur / !ToggleBlur

These effect ALL BlurRegions at once. It is used to turn on and off the blur effect in general.

!AddBlur "region" / !RemoveBlur "region"

These are used to add or remove blur regions. The "region" argument is identical to BlurRegion settings. Example Skin

Skins-DynamicVariables

By setting DynamicVariables=1 in a measure or meter, the measure or meter will respond to variable changes by the !SetVariable bang. Additionally,

if dynamic variables is enabled, a measure's name can be used as a variable by enclosing it in square brackets (e.g. [MyMeasure] ). Dynamic variables can

be used in any meter or measure, but not in the [Rainmeter] section.

Dynamic variables can only be used with a limited number of plugins. Currently, the following plugins support dynamic variables:

CoreTemp

FolderInfo

NowPlaying

PerfMon

Ping

QuotePlugin

RecycleManager

ResMon

SpeedFan

SysInfo

WindowMessage

espressorf
Strike-Out

12

Example:

[Rainmeter]

Update=1000

[Variables]

Width=100

[MeasureCalc]

Measure=Calc

Formula=Counter%100

[Square1]

Meter=Image

SolidColor=255,0,0

W=#Width#

H=50

MouseOverAction=!SetVariable Width 200

DynamicVariables=1

[Square2]

Meter=Image

SolidColor=0,0,255

W=[MeasureCalc]

H=50

Y=R

DynamicVariables=1

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.

Skins-Include

The @Include option is used to load an external .ini file into the skin. The loaded file is treated as if the contents were included in the actual skin .ini

file. The option is often it is used in the [Variables] section of a skin to include common variables shared between skins. If there are multiple included files

within the same section, each @include statement should be numbered as follows:

@include1=...

@include2=...

@include3=...

Include files must use the INI format, meaning that they must have appropriate section names followed by key and value pairs. Commonly, Include files

use the .inc file extension (rather than .ini) to avoid listing the include files in the Rainmeter skin list.

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. While the file is read at the given position, the contents of the file are treated as if they

are at the bottom of the file in which the @include is called.

Note: You may use a variable as the name of an @include file, but not a dynamic variable.

Example:

IncludeFile.inc:

[Variables]

Color=255,255,255,255

Skin.ini:

[Variables]

Font=Arial

@Include=IncludeFile.inc

[SomeMeter]

FontFace=#Font#

FontColor=#Color#

Further explanation as well as examples of use are available at The power of @include.

13

Skins-MeterMeasureGroups

Measures and meters can be categorized into groups to allow easier control over a set of meters and measures with the

Groupbangs (e.g. !HideMeterGroup ). To add a measure or meter to a group, simply add the Group= option. Any number of groups may be added to a

section, all of which must be separated by a vertical bar (i.e. | )..

Example: In this example, both of the meters belong to the "CPU" group. In addition, MeterCPUText belongs to the "Strings" group and MeterCPUBar in turn belongs to the "Bars" group.

[MeterCPUText]

Meter=String

MeasureName=MeasureCPU

Group=CPU | Strings

[MeterCPUBar]

Meter=Bar

MeasureName=MeasureCPU

Group=CPU | Bars

Meters in the CPU group, for example, can be hidden as follows: !HideMeterGroup CPU

Measures

Measures are sections that determine what information Rainmeter should retrieve. Within a .ini file, names for measures must be unique and they must

not have spaces. The meters use these section names to bind to the measures and display the results.

Note: 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.

Measures-GeneralSettings

These general settings apply to all measure types.

Options

Measure

This defines what is measured. The valid values are:

o CPU - Measures total load from CPU or individual cores.

o Memory - Measures overall memory utilization.

o PhysicalMemory - Measures allocated physical memory.

o SwapMemory - Measures virtual memory allocation.

o Uptime - Measures how long computer has been on. This works only in a String meter.

o NetIn - Measures incoming network traffic.

o NetOut - Measures outgoing network traffic.

o NetTotal - Measures total network traffic.

o FreeDiskSpace - Measures free diskspace.

o Plugin - Measure is defined by an external plugin.

o Registry - Measures registry values.

o Time - Measures time and date.

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

Disabled

If set to 1, the measure is never updated. A disabled measure always returns zero as its value in numerical contexts (e.g. when used in a Calc formula

or with IfActions), but may still return a textual value (e.g. when used in String meters).

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=1000 and UpdateDivider=30 , the measure is updated every 30 seconds. The default

value is 1. A setting of -1 will disable ongoing updates for the measure, so it will only be executed once on load or refresh.

MaxValue

The maximum value the measure can have. The default is 1.0. - Formulas allowed in this setting.

Note: This option is used solely to scale the of result of some meters (e.g. Histogram). The actual value of the measure will remain unchanged.

MinValue

The minimum value the measure can have. The default is 0.0. - Formulas allowed in this setting.

Note: This option is used solely to scale the of result of some meters (e.g. Histogram). The actual value of the measure will remain unchanged.

AverageSize

Defines the window size of average measuring. For example, when AverageSize=10 , the returned value is the average of last ten values.

14

Measures-IfActions

Measure IfActions are commands you add to a measure to have Rainmeter take some action when a defined "above/equal/below" threshold value is

returned by the measure. You can have Rainmeter run a built-in !Bang, several !Bangs at once, or even execute some external command.

IfActions are done by using pairs of Above, Equal, and Below Value and Action statements. You may have one of each kind of IfAction in a single measure.

How an action is formatted varies somewhat depending on which !Bang is being used, or what an external application expects. The rules can be found at

the Bangs page.

Options

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. - Formulas allowed in this setting.

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. - Formulas allowed in this setting.

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. - Formulas allowed in this setting. Example Skin

Measures-Substitute

Substitute is an option used on measures to replace some or all of a string value returned by the measure with another string. When combined with the

RegExpSubstitute option, regular expressions can be used in the option.

[MeasureYear]

Measure=Time

Format=%Y

Substitute="2012":"Twenty Twelve","2013":"Twenty Thirteen","2014":"Twenty Fourteen"

Substitute

A list of comma separated "search":"replace" pairs that can be used to change strings returned by a measure. You must use quotes around the values.

E.g. Substitute="cat":"dog" would change all "cat" to "dogs" in the measured value, and Substitute="red":"green","blue":"yellow" would

change all "red" to "green" and "blue" to "yellow".

o When the measure is defined as the MeasureName= option in a meter, the substituted value will be used.

[MeasureYear]

Measure=Time

Format=%Y

Substitute="2012":"Twenty Twelve"

[MeterYearText]

Meter=String

MeasureName=MeasureYear

MeterYearText will display "Twenty Twelve".

o When the measure is directly used in a meter or another measure, for instance in a Measure=Calc measure, the substituted value will only be used if

the measure name is enclosed in [brackets] and DynamicVariables is used on the meter or measure. Otherwise, the original value will be used.

[MeasureYear]

Measure=Time

Format=%y

15

Substitute="12":"Twenty Twelve"

[MeasureYearNumber]

Measure=Calc

Formula=(2000 + MeasureYear)

[MeterYearText]

Meter=String

Text=[MeasureYear]

DynamicVariables=1

MeasureYearNumber will return 2012 and MeterYearText will display "Twenty Twelve".

o Substitutions are done from the left to right, in order and iteratively. In other words, the result of the substitution of the first "search":"replace"

pair is then used when the second pair is evaluated. This means the the order you define the substitution in is important, as well as defining the

searches in a way that does not cause unintended changes.

Substitute="1":"2","10":"3","100":"4"

This statement will not return what you might expect. First, Substitute will replace all "1" characters with "2". This means that "10" and "100" will

never be found, as they will already have been changed to "20" and "200". This can be handled by defining the Substitute in an order that is

unambiguous and with with "search":"replace" pairs that don't step on each other.

Substitute="100":"4","10":"3","1":"2"

o You may substitute quote characters in Substitute= statements. This is done by using single quotes to surround the first part of the "find":"replace"

pair. So Substitute='"':"" would remove all quotes from the text.

Note: Single and double quotes MUST be "mismatched" on the "find:replace" pairs when using single quotes as a delimiter, or the Substitute will fail.

Example: Substitute='"':"None" will replace a quote with the word None. Substitute="None":'"' will replace the word None with a quote.

However, Substitute='"':'None' will fail, as you can't use single quotes on both sides of the "find:replace" pairs. An easier to read example

is Substitute='red':'blue' , which will fail.

RegExpSubstitute

If set to 1, it is possible to use Regular Expressions within the substitute string. The section of the original string which is matched by the expression is

replaced by the contents of the second part of the substitute pair.

The second part can have parts of the original string embedded within it. You must capture any parts of the string you want using parentheses, then

these can be referenced by number in the replaced string using \1, \2 etc. It is also possible to use \0 to embed the whole matched section of the

string.

Examples:

Replace a 2 digit number with "It Works", then the first two characters with "This":

56

RegExpSubstitute=1

Substitute="\d\d":"It Works","^..":"This"

This Works

Mask an IP address:

192.168.1.101

RegExpSubstitute=1

Substitute="^(\d{1,3}).(\d{1,3}).(\d{1,3}).\d{1,3}$":"\1.\2.\3.***"

192.168.1.***

Truncate string by length and append "...":

Cloudy with chance of rain

RegExpSubstitute=1

Substitute="^(.{11,}).+$":"\1..."

Cloudy with...

16

Measures-Calc

The Calc measure is used to calculate formulas.

Options

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.

UpdateRandom

When UpdateRandom=1 a new random number is set on each update cycle. When UpdateRandom=0 a random number is set on refresh.

LowBound

Defines the lower boundary for any Round functions used in the measure's formula.

HighBound

Defines the upper boundary for any Round functions used in the measure's formula.

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)

<= (less than or equal to)

>= (greater than or equal to)

&& (logical and)

|| (logical or) Note: Conditional statements evaluate to 1 (true) or 0 (false).

Functions

ATAN(x), ASIN(x), ACOS(x), COS(x), SIN(x), TAN(x) - Standard trigonometric functions. Where x is measured in Radians.

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 (e.g. FRAC(1.234) = 0.234).

TRUNC(x) - Integer par (e.g. 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.

RAD(x) - Converts x from degrees to radians.

Constants

PI - Pi (~3.14159265...)

E - Euler's constant (~2.71828182...)

17

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

[Example]

Measure=Calc

Formula=1<2 ? 3 : 4

This measure would return the number 3 since the condition 1<2 evaluates to true. Rainmeter can also handle nested conditional operators. It should be noted that there is a maximum of 30 nested operators. Example:

[Example]

Measure=Calc

Formula=1>2 ? 3 : (4<5 ? 6 : 7)

This measure would return 6. Since the first statement of 1>2 is false the nested conditional operator in the else statement is executed.

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

Other Bases

The Calc measure allows numbers to be represented numbering systems other than decimal. To use another base, prefix the number with a zero then the letter representing the system you wish to use. The following are accepted prefixes, which are case (lower) sensitive:

0b - Binary number (base 2) (ex: 0b110110 - returns 54 in decimal)

0o - Octal number (base 8) (ex: 0o123 - returns 83 in decimal)

0x - Hexadecimal number (base 16) (ex: 0xF1 - returns 241 in decimal) Example skin

Measures-CPU

Returns the percentage used of the entire CPU or individual cores.

Options

Processor

Can be set to the number (1, 2, ...) of the processor core to be measured. If set to 0 (default), the average of all cores will be returned. Example Skin

18

Measures-FreeDiskSpace

FreeDiskSpace returns usage statistics for the selected drive.

Options

Drive

This is the drive for which the 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.

Type

If set to 1 this returns the type of the drive.

String >> numeric return:

o Error >> 0

o Removed >> 1

o Removable >> 3

o Fixed >> 4

o Network >> 5

o CDRom >> 6

o Ram >> 7

IgnoreRemovable

If set to 1 (default), removable drives are ignored. If set to 0, removable drives are measured. Be sure to set IgnoreRemovable=0 if you want to

measure a USB drive.

Note: FreeDiskSpace does not support CD or DVD drives other than Type and Label. Example Skin

Measures-Memory

Measures the amount of virtual memory free in bytes. Virtual memory is equal to Pagefile + RAM + RAM.

Options

Total

If set to 1 this returns the total memory. Example Skin

Measures-NetInOut

Measures various types of network traffic.

NetIn

Measures incoming network traffic.

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.

19

NetOut

Measures outgoing network traffic.

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

Measures total network traffic.

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 a certain time period. Example Skin

Measures-PhysicalMemory

Measures the amount of physical RAM memory free in bytes.

Options

Total

If set to 1 this returns the total physical memory. Example Skin

Measures-Plugin

A plugin in Rainmeter is a dynamic link library (.dll) program specifically written to provide additional functionality not built into Rainmeter. A plugin is

used in Rainmeter with the specific measure type Measure=Plugin. Each plugin in turn has its own settings that must be placed in this section.

See Plugins to learn more on the plugins included with Rainmeter and what settings are required for each.

You may also use a 3rd-party plugin developed for Rainmeter but not included with the installation. Simply place the new plugin .dll file into the Plugins

folder under the location of your Rainmeter.exe and the new plugin can be used like any of the default ones. Note: Be sure that the 3rd-party plugin you

add was compiled for the same architecture version of Rainmeter (32bit or 64bit) as the version you are using. You may not use a 32bit plugin with 64bit

Rainmeter or a 64bit plugin with 32bit Rainmeter.

Options

Plugin

The path and name of the plugin relative to the program folder, where Rainmeter.exe is (e.g. Plugin=Plugins\WebParser.dll ).

Example Skin

20

Measures-Registry

Provides a way to read data from the Windows Registry.

Options

RegHKey

The name of the HKEY. Possible values are:

o HKEY_CURRENT_CONFIG

o HKEY_CURRENT_USER

o HKEY_LOCAL_MACHINE

o HKEY_CLASSES_ROOT

o HKEY_PERFORMANCE_DATA

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

Registry data types

If you open Regedit.exe to the location you are trying to read, you will notice the second column in the right pane is called "Type". There are several

different types, but the two most common - and the two supported by Rainmeter - are REG_SZ and REG_DWORD. If the value is of type REG_SZ it means it

is a string. If it is REG_DWORD it is a number. Many of Rainmeter's meter types require a number as input rather than a string. This means that if the value

you are trying to read is of type REG_SZ, meters like Line, Histogram, Bar, etc. will not recognize the value. Even if the value is entirely numeric, it will

still be read as a string.

Numeric string values from the registry can be used as a number if you convert them with a Measure=Calc.

[MeasureRegistry]

Measure=Registry

...

[MeasureStringToNum]

Measure=Calc

Formula=[MeasureRegistry]

MinValue=0

MaxValue=100

DynamicVariables=1

Example Skin

21

Measures-Script

The Script measure allows the execution of Lua (a scripting lanague) code. The Lua script can be used to retrieve the values of measures, send bangs, and

more. A Lua script can do programming that would be difficult or impossible in native Rainmeter code, and can return values or change settings in the

Rainmeter skin.

Options

ScriptFile

Name of valid Lua script file.

Custom options can be added to the measure, which can then be retrieved and used with SELF:GetOption() or SELF:GetNumberOption() in the script.

Example:

[MeasureScript]

Measure=Script

ScriptFile=MyLua.lua

ItemsToCount=5

Bangs

The Script measure can be controlled with the !CommandMeasure bang. The argument must be valid Lua code and will be executed in the context of

ScriptFile.

A full explanation of how to use this measure type with the Lua scripting language can be found at Lua Scripting. This guide should be carefully read

before creating a skin using the Script measure.

Measures-SwapMemory

Measures the amount of virtual (swap) memory free in bytes.

Options

Total

If set to 1 this returns the total swap memory. Example Skin

Measures-Time

Measures the current date/time.

Options

Format (default: "%H:%M:%S")

The format for the date/time string you wish returned. (e.g. Format="%a, %b %#d %Y - %H:%M:%S" )

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

TimeZone

The timezone GMT offset value in the format +/-hours.fraction (e.g. TimeZone=+2.0 ). This format must be used even if, as in the case of London,

there is no offset from GMT. (e.g. TimeZone=+0.0 ) If this option is not used, then the measure will use your local computer's time.

DaylightSavingTime

If set to 1, the current local value for daylight saving time is applied to the time. This is only used if TimeZone has been set.

Note: This setting can be temporarily incorrect if the timezone you are setting changes between Daylight Savings and Standard time at different

times of year than your location.

22

Format codes

Full details on Time/Date formatting codes can be found at msdn.microsoft.com. %a - Abbreviated weekday name %A - Full weekday name %b - Abbreviated month name %B - Full month name %c - Date and time representation appropriate for locale %d - Day of month as decimal number (01 - 31) %H - Hour in 24-hour format (00 - 23) %I - Hour in 12-hour format (01 - 12) %j - Day of year as decimal number (001 - 366) %m - Month as decimal number (01 - 12) %M - Minute as decimal number (00 - 59) %p - Current locale's A.M./P.M. indicator for 12-hour clock %S - Second as decimal number (00 - 59) %U - Week of year as decimal number, with Sunday as first day of week (00 - 53) %w - Weekday as decimal number (0 - 6; Sunday is 0) %W - Week of year as decimal number, with Monday as first day of week (00 - 53) %x - Date representation for current locale %X - Time representation for current locale %y - Year without century, as decimal number (00 - 99) %Y - Year with century, as decimal number %z, %Z - Either the time-zone name or time zone abbreviation, depending on registry settings %% - Percent sign # - A "#" character used before a code (%#d) will removing leading zeros from the result. Example Skin

Measures-UpTime

Returns the amount of time since the last restart of the computer.

Options

Format

Format to display the output. The default is Format="%4!i!d %3!i!:%2!02i!" .

o %4 - Days

o %3 - Hours

o %2 - Minutes

o %1 - Seconds

o !i! - Putting this after the format code shows the numbers with no leading zeros

o !02i! - Putting this after the format code shows the numbers with leading zeros

AddDaysToHours

If %4 (days) is not included in the Format statement, %3 (hours) will be incremented by days * 24. To disable this, set AddDaysToHours to 0 (default 1).

Example Skin

Meters

Meters are the sections that tell Rainmeter how to display information. Each meter needs to have a 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.

Meters by default are evaluated and displayed in the order they are in the skin .ini file. Settings like W= and H= and X= and Y= can be used to size and

position meters in the context of the skin containing them. So a meter with a setting of X=0 will be positioned 0 pixels from the left edge of the skin it is

in. If you drag the entire skin to another location, the meter will remain positioned 0 pixels from the left edge of the skin, regardless of where the skin is

on the screen.

There are many different types of supported meter types in Rainmeter. The manual pages for each describe them in detail, with settings specific to each

type.

Example Skin

23

Meters-GeneralSettings

The following are setting which apply to all meter types.

Options

Meter

Indicates the type of the meter. The valid values are:

o BAR

o BITMAP

o BUTTON

o HISTOGRAM

o IMAGE

o LINE

o ROTATOR

o ROUNDLINE

o STRING

MeterStyle

The name of a [Section] containing settings for meter attributes you wishto share with multiple meters. See MeterStyles for details.

MeasureName

The name of the measure that this meter displays the returned value for. This setting is not required if the meter is not going to use values from a

measure, such as a String or Image meter not needing information returned by a measure.

X

The X-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g.

X=5r). You can also use capital R which makes the position relative to the right edge of the previous meter.

Y

The Y-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g.

Y=-10r). You can also use capital R which makes the position relative to the bottom edge of the previous meter.

W

The width of the meter. It is not necessary to define this if the width can be calculated from an image or if you are using a STRING meter. If you use

the desktop as background for the Rainmeter you should always define the correct height and width for the meters or the window's dimensions might

be calculated 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 (e.g. Y=(300/3) ).

Hidden

If set to 1, the meter is hidden.

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 (e.g. SolidColor=255,0,0,128 ), or in hexadecimal format (e.g. 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

This draws a beveled edge around the specified H and W of the meter.

o 0 - No bevel (Default)

o 1 - Raised

o 2 - Sunken

AntiAlias

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

24

Meters-ColorCodes

Rainmeter uses colors in the settings of many different meters.

FontColor

FontEffectColor

SolidColor

PrimaryColor

SecondaryColor

BothColor

BarColor

LineColor

HorizontalLineColor

Color codes in Rainmeter are based on RGBA, which stands for red, green, blue, and alpha. The values can be entered either using a set of four numbers

ranging from 0 to 255 in either decimal or hexadecimal form. You may leave off the alpha value, and Rainmeter will default to 255 / FF, or fully opaque.

Decimal format: SolidColor=RRR,GGG,BBB,AAA

The RRR component controls the intensity of red ranging from 0 to 255 (full saturation).

The GGG component controls the intensity of green ranging from 0 to 255 (full saturation).

The BBB component controls the intensity of blue ranging from 0 to 255 (full saturation).

The AAA component controls the transparency ranging from 0 (transparent) to 255 (full saturation).

Hexadecimal format: SolidColor=RRGGBBAA

The RR component controls the intensity of red in hex, with FF being full saturation.

The GG component controls the intensity of green in hex, with FF being full saturation.

The BB component controls the intensity of blue in hex, with FF being full saturation.

The AA component controls the transparency in hex, with 00 being transparent and FF being fully opaque.

Note: If you use an alpha of 0, then the element using the color will not only be invisible, but will not be seen by Rainmeter at all for the purpose of

mouse actions. If you want a meter to be invisible but still seen by Rainmeter, use an alpha of 1.

A online color picking tool which will provide the RGB and HEX codes for a color can be found at Rainmeter Color Picker.

Examples

Solid opaque red is 255,0,0,255 or FF0000FF

Solid opaque blue is 0,0,255,255 or 0000FFFF

Solid opaque grey is 128,128,128,255 or 808080FF

Half-transparent green is 0,255,0,128 or 00FF0080

Meters-MeterStyle

MeterStyles allow CSS-like common "styles" for meters. This allows you to centralize common parameters for meter into a single section. Using the

MeterStyle option will essentially cause the specific meter to inherit all applicable properties from the given style. A style is just another section (it can

even be a meter). Multiple styles can be used by separating them with a pipe (i.e. Style1 | Style2 | ... ).

Note: You may not "daisy chain" MeterStyles. In other words although a meter may be used as a MeterStyle for another meter, that second one may not be

used as a MeterStyle for a third.

Example Skin

25

Meters-ANoteOnFonts

Fonts are used in String meters.

Fonts installed in Windows can be used by specifying the "Family Name" of the font in the FontFace option in the String meter. (e.g. FontFace=Trebuchet

MS ).

Using 3rd-party fonts not installed in Windows can be done by creating a folder @Resources\Fonts in the root level folder of your skin, and putting the

font .ttf files there. Rainmeter will automatically load any fonts found in that folder, and they will be available to use with the "Family Name" of the font

as if they were installed in Windows.

Note: It is recommended that you do not distribute skins with fonts in a .rmskin set to automatically install in a user's Windows system. There is

generally no need to do this, and it makes it more difficult for users who are running Rainmeter "portable" to use your skin. Just put the fonts you are

using in your skin in the @Resources\Fonts folder when you create a .rmskin to distribute.

Using fonts

The font must be a .ttf (TrueType) font, and not a .otf (OpenType) font. If you have downloaded a .otf file, it is possible, but not certain, that you can

convert this file using FontConverter.com online. Once you have converted the file, try using it. I have found that about 70-80% of .otf fonts can

successfully be converted and used.

Even better results can be had with a font conversion tool like FontCreator, but almost none of these are free. There isFontForge, but this must be run

in a unix environment and while it can be done with the CygWin unix-in-windows utility, this is NOT for the faint of heart or new Windows user.

You must use the "Family Name" of the font. This can be found by double clicking the font .ttf file and at the very top in the Windows font viewer see

the "Font Name:" at the top left. Now, this also has a "gotcha". Many fonts have subfamily names that are appended on the "Family Name" in Windows

font viewer. The Font Name: may be MyFont-Bold or MyFont Bold or MyFont BoldItalic" You should not use these subfamily postfixes when identifying

the font in Rainmeter with FontFace=xxx. This can involve a bit of trial and error, but in this example FontFace=MyFont is the mostly likely correct

entry.

Most, but not ALL fonts can be modified at run time in Rainmeter with StringStyle, StringEffect, etc. If you have problems with a font using these

settings, try removing them to see if that is the issue.

There are a couple of ways Rainmeter will react if it hates your font for some reason.

It may give no error, but display the default Arial instead of your font. This will be what happens if you use a .otf font, or if you use the wrong "Family

Name" for the font.

It gives an error, like "Can't create font" and the meter fails entirely. This generally means you have used an attribute like StringStyle=Bold on a font

that doesn't support it, or there is just a problem with the font itself that causes Rainmeter to fail in loading / using it.

Meters-ToolTips

This creates a ToolTip which appears when you hover the mouse over the meter. You must be careful not to overlap two meters with ToolTips as both will

be displayed if the mouse is over both at the same time.

Options

ToolTipText (required)

The text you wish displayed. This can include dynamic variables and measures as long as DynamicVariables=1 is set. If you wish to spread the text

across multiple lines, add the built-in variable #CRLF# at the point you want a line break. This setting must be defined to use a ToolTip.

Values of MeasureName can also be used in the %1, %2 etc. as appropriate for various meter types:

o Line, String: %1, %2, %3, ...

o Histogram: %1, %2

o Others: %1

ToolTipTitle (optional)

This sets a bold title for the tooltip. This can only be one line, so #CRLF# will not work here.

ToolTipIcon (optional)

This specifies an Icon to be placed in the tooltip. This can be the full path to a .ico file or one of these preset icons:

o INFO

o WARNING

o ERROR

o QUESTION

o SHIELD (Windows Vista and newer)

To use an icon in your tooltip you must also define ToolTipTitle. Otherwise the icon will not be displayed.

ToolTipType (optional)

This defines the style of the tooltip, by default, this is 0, a regular tooltip. If set to 1 the tooltip will appear as a balloon.

ToolTipWidth (optional)

This allows you to specify the maximum width of a tooltip. When the width is reached, the text will automatically wrap. The default is 1000 pixels. -

Formulas allowed in this setting.

Note: As a ToolTipTitle cannot be wrapped, do not set this width less than the length of the title, or there could be unexpected results.

ToolTipHidden (optional)

If set to 1, the ToolTip is not displayed. ToolTipHidden can also be used in the [Rainmeter] section to hide all tooltips in the skin.

26

Meters-TransformationMaxtrix

This defines a 3x2 matrix which can be used to transform the meter. There must be exactly 6 values separated by semicolons

(e.g. 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 (i.e. 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 this 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.

27

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.

Changes to the bitmap are applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

Options

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 for the bar. This can be used instead of BarColor.

BarBorder

If an image is used, this determines the number of pixels on either side of the image that are always drawn (i.e. top and bottom margins for vertical

bars, left and right margins for horizontal bars).

ImageCrop

Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following:

o 1 - Top left

o 2 - Top right

o 3 - Bottom right

o 4 - Bottom left

o 5 - Center (both W and H)

Greyscale

If set to 1, the image will be greyscaled.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

ImageRotate

Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. - Formulas allowed in this setting.

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). More information on

ColorMatrix is available at ColorMatrix Unleashed.

ImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting.

BarOrientation

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

Flip

Set to 1 to flip the direction of the bar. Example Skin

28

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.

Changes to the bitmap are applied in the following order: GreyScale -> ImageTint -> ImageFlip.

Options

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.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

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). More information on

ColorMatrix is available at ColorMatrix Unleashed.

ImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting. Example Skin

29

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, clicked

and hover state of an image and perform an action automatically.

Changes to the button image are applied in the following order: GreyScale -> ImageTint -> ImageFlip.

Options

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. More information on creating the bitmap images for buttons here. Note that button

images cannot be re-sized by Rainmeter with W or H.

ButtonCommand

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

Greyscale

If set to 1, the image will be greyscaled.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

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). More information on

ColorMatrix is available at ColorMatrix Unleashed.

ImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting. Example Skin

30

Meter-Histogram

Histograms display values using vertical bars - once per update - on a graph. They require that the measure being used ranges from 0.0 to 1.0 or has both

MaxValue and MinValue set.

Changes to the images are applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

Options

SecondaryMeasureName or MeasureName2

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.

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

PrimaryImageCrop, SecondaryImageCrop, BothImageCrop

Crops the image. The parameters are PrimaryImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following:

o 1 - Top left

o 2 - Top right

o 3 - Bottom right

o 4 - Bottom left

o 5 - Center (both W and H)

PrimaryGreyscale, SecondaryGreyscale, BothGreyscale

If set to 1, the image will be greyscaled.

PrimaryImageTint, SecondaryImageTint, BothImageTint

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

PrimaryImageFlip, SecondaryImageFlip, BothImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

PrimaryImageRotate, SecondaryImageRotate, BothImageRotate

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

PrimaryColorMatrixN, SecondaryColorMatrixN, BothColorMatrixN

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:

PrimaryColorMatrix1=1; 0; 0; 0; 0

PrimaryColorMatrix2=0; 1; 0; 0; 0

PrimaryColorMatrix3=0; 0; 1; 0; 0

PrimaryColorMatrix4=0; 0; 0; 1; 0

PrimaryColorMatrix5=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

(PrimaryColorMatrix5) determining offset values that are added directly to the color. (ex: PrimaryColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red

value). More information on ColorMatrix is available at ColorMatrix Unleashed.

PrimaryImageAlpha, SecondaryImageAlpha, BothImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting.

Autoscale

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

GraphStart

Determines the starting point of the graph. The values are LEFT or RIGHT (default)

GraphOrientation

Determines the direction of the graph elements. The values are HORIZONTAL or VERTICAL (default)

Flip

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

31

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.

Changes to the image are done by applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

Options

ImageName

Name of the image to be displayed. ImageName can also be the result of values returned by one or more measures:

Meter=IMAGE

MeasureName=SomeMeasure

MeasureName2=SomeMeasure2

ImageName=%1-%2.png

If ImageName is not specified, the value of MeasureName appended with the .png extension is used as the image.

Path

Location of the the image 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. Set to 0 by default.

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

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

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

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

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

ImageCrop

Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following:

o 1 - Top left

o 2 - Top right

o 3 - Bottom right

o 4 - Bottom left

o 5 - Center (both W and H)

ScaleMargins

Allows a definition of margins on an image, where the image will not be scaled by the meter's W and H settings.

ScaleMargins=left, top, right, bottom (Example: ScaleMargins=10, 50, 10, 50 )

Note: ScaleMargins is only allowed if Tile and PreserveAspectRatio are not used.

Greyscale

If set to 1, the image will be greyscaled.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

ImageRotate

Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. - Formulas allowed in this setting.

Tile

Tiles (repeats) an image within the bounds set by W and H on the image meter.

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:

32

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). More information on

ColorMatrix is available at ColorMatrix Unleashed.

ImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting. Example Skin

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.

Options

LineCount

Number of lines in the meter. There can be any number of lines in the same meter. Note that the number for the first line is never given (i.e.

MeasureName, LineColor and Scale are all used for the first line, with numbers added for subsequent lines).

MeasureName, MeasureName2, ...

The name of the measure for the line N.

LineColor, LineColor2, ...

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

Scale, Scale2, ...

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. - Formulas allowed in this setting.

GraphStart

Determines the starting point of the graph. The values are LEFT or RIGHT (default)

GraphOrientation

Determines the direction of the graph elements. The values are HORIZONTAL or VERTICAL (default)

Flip

If set to 1 the meter is flipped upside down. Example Skin

33

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.

The center of rotation will be located at the center of the height and width specified for the meter. If height and width are not specified, the center of

rotation will be located at the X and Y coordinates provided for the meter. It is also important to remember that if the height and width are not specified,

any portion of the meter that lies outside of the skin window will be cut off.

An example of how the center of rotation works is at Rotate an Image Around its Center.

Changes to the image are applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

Options

ImageName

Name of the image to be rotated.

ImageCrop

Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following:

o 1 - Top left

o 2 - Top right

o 3 - Bottom right

o 4 - Bottom left

o 5 - Center (both W and H)

Greyscale

If set to 1, the image will be greyscaled.

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) which in effect means "no change".

Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to

the image, creating a "tint".

ImageFlip

Values are NONE, HORIZONTAL, VERTICAL or BOTH.

ImageRotate

Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. - Formulas allowed in this setting.

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). More information on

ColorMatrix is available at ColorMatrix Unleashed.

ImageAlpha

Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will

override the Alpha parameter in the ImageTint setting.

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. - Formulas allowed in this

setting.

RotationAngle

The size of the rotation angle for the line. Use negative value for counter-clockwise rotation. - Formulas allowed in this setting.

ValueRemainder

Use remainder instead of the actual measured value. This can be used to create an analog clock. Example Skin

34

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. Roundline meters require that the measure being used

is from 0.0 to 1.0 or has both MaxValue and MinValue set.

If the width and height are not defined, the center point is the at the X and Y position of the meter and any part of the meter that intersects with the

edges of the skin window will be cut off. If width and height are specified, the center point will be in the middle of the bounding box and the skin

windows will include the meter.

Options

LineWidth

The width of the line in pixels. - Formulas allowed in this setting.

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). - Formulas

allowed in this setting.

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. - Formulas allowed in this setting.

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. - Formulas allowed in

this setting.

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. - Formulas allowed in this setting.

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. Example Skin

Meter-String

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

string of text by using Text=. You can mix the results of measures and static text by using Text= combined with %1, %2 etc. to indicate the value of the

measures used by the meter. If you are only displaying the result of a single measure, no Text= statement is needed.

Options

MeasureName, MeasureName2, ...

The name of a measure to bind with the meter.

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. Details on using fonts with Rainmeter can be found at A Note on

Fonts.

FontSize

Size of the font. - Formulas allowed in this setting.

35

StringAlign

The horizontal and vertical alignment of the string. The valid values are:

o StringAlign=Left or StringAlign=LeftTop (default)

o StringAlign=Right or StringAlign=RightTop

o StringAlign=Center or StringAlign=CenterTop

o StringAlign=LeftBottom

o StringAlign=RightBottom

o StringAlign=CenterBottom

o StringAlign=LeftCenter

o StringAlign=RightCenter

o StringAlign=CenterCenter

The string will be aligned using the values of the X and / or Y settings as the anchor point. So to CenterCenter align a string within a meter with a

width and height of 100, you would set X=50, Y=50 and StringAlign=CenterCenter.

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 and 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 (e.g. 1000.0) the resulting measured value is displayed as floating point value with one decimal.

AutoScale

Allows automatic scaling of values and appends the value with the appropriate T, G, M or k unit character. This setting overrides Scale. Valid values

are:

o 0 - Disabled (default)

o 1 - Scale by 1024

o 1k - Scale by 1024 (with kilo as lowest unit)

o 2 - Scale by 1000

o 2k - Scale by 1000 (with kilo as lowest unit)

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, %2, etc. for different measures.

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. - Formulas allowed in this setting. Example Skin

36

Plugins

A plugin in Rainmeter is a dynamic link library (.dll) program specifically written to provide additional functionality not built into Rainmeter. A plugin is

used in Rainmeter with the specific measure type Measure=Plugin. Each plugin in turn has its own settings that must be placed in this section. Click on any

of the plugins listed on the right to learn more about the plugins included with Rainmeter and what settings are required for each.

You may also use a 3rd-party plugin developed for Rainmeter but not included with the installation. Simply place the new plugin .dll file into the Plugins

folder under the location of your Rainmeter.exe and the new plugin can be used like any of the default ones. Note: Be sure that the 3rd-party plugin you

add was compiled for the same architecture version of Rainmeter (32bit or 64bit) as the version you are using. You may not use a 32bit plugin with 64bit

Rainmeter or a 64bit plugin with 32bit Rainmeter.

If you are interested in creating a 3rd party plugin for Rainmeter, there are source code templates available for both C++ and C# coders. Further

information can be found at Developers.

Plugin-AdvancedCPU

Plugin=AdvancedCPU

This is similar to using PerfMon to measure the CPU usage except that you can filter out processes or only include some of them.

Options

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 x the number

of your CPU cores) to get the percentage but you should note that if the values cannot be measured exactly once per second (like it usually cannot

because the timer in Windows is not accurate) you might get values larger than 100%.

On the METER displaying the results:

Scale=100000 : Single Core

Scale=200000 : Dual Core

Scale=400000 : Quad Core

Example Skin

Plugin-CoreTemp

Plugin=CoreTemp

This plugin can retrieve the values measured by CoreTemp. CoreTemp must be running in the background in order for the plugin to work. A list of

supported CPU's is available here.

Options

CoreTempType

Defines the return value. Valid values are:

o Temperature - Returns the current temperature value.

o MaxTemperature - Returns the maximum temperature value between all cores.

o BusSpeed - Returns the bus frequency.

o BusMultiplier - Returns the bus multiplier.

o CpuName - Returns the CPU model name.

o CpuSpeed - Returns the core frequency.

o TjMax - Maximum allowed temperature rated by the manufacturer.

o Load - Returns the core load as percentage.

o Vid - Returns the voltage value.

CoreTempIndex

This defines the index (or core) for the returned value. The indexing starts from 0 so if you want to return the second temperature value

use CoreTempIndex=1 . Must be used when returning Temperature, TjMax, and Load.

Example Skin

37

Plugin-FolderInfo

Plugin=FolderInfo

FolderInfo.dll can be used to count files in a folder, their size, and more.

Options

Folder

Path to the folder to watch.

InfoType

Defines the return value:

o FileCount - Number of found files

o FolderCount - Number of found folders

o FolderSize - Size of found folders in bytes

RegExpFilter

The regular expression used for including/excluding counted files. The plugin uses Perl Compatible Regular Expressions, so check the Perl docs for

syntax and more info.

IncludeSubFolders

If set to 1, sub-folders are included in the count. Disabled by default.

IncludeHiddenFiles

If set to 1, hidden files are included in the count. Disabled by default.

IncludeSystemFiles

If set to 1, system files are included in the count. Disabled by default. Example Skin

Plugin-InputText

Plugin=InputText

InputText inserts user-supplied text into one or more bangs. The plugin works by defining a series of commands, which can be triggered by any "action"

string (this includes mouse actions, conditional actions in a Calc measure, and other commands in an InputText measure, including the same measure).

When triggered, a free-floating text input box is created to gather user input at the specified points in the command series. When all input has been

submitted, the commands are carried out.

Options

Command1, Command2, ...

The !Bang-command(s) to be performed when the plugin is triggered. The string $UserInput$ will be replaced by whatever the user types into it. This

string can be repeated, in which case, multiple input boxes will be created in sequence. In addition, a command can override the values of other keys

in this measure when an input box is called on that command. Valid keys include: DefaultValue, Password, X, Y, W, H, SolidColor, FontColor, FontFace,

FontSize, StringStyle and StringAlign. The value must be placed in quotation marks if it contains spaces.

Usage: CommandN=[Command Before Input]$UserInput$[CommandAfterInput] [MeasureKey]="[Value]"

DefaultValue

Text that will appear in the input box when it is created.

Password

If Password=1, all input will be displayed as asterisks.

X

The horizontal position of the input box, relative to the left edge of the skin. Note: X cannot be relative to the previous meter (as in "#r" and "#R").

Y

The vertical position of the input box, relative to the top edge of the skin. Note: X cannot be relative to the previous meter (as in "#r" and "#R").

W

The width of the input box, in pixels.

H

The height of the input box, in pixels.

SolidColor

The background color of the input box in either normal (R,G,B,A) or hexadecimal (RRGGBBAA) format. As with all colors in Rainmeter, the alpha value

is optional, and will default to opaque if omitted.

FontColor

The color of text written in the input box in either normal (R,G,B,A) or hexadecimal (RRGGBBAA) format. As with all colors in Rainmeter, the alpha

value is optional, and will default to opaque if omitted.

FontFace

The font of text written in the input box.

Note: LocalFont cannot be used to format an InputText box.

FontSize

The size of text written in the input box.

StringStyle

Additional text effect applied to text. Valid values are NORMAL, BOLD, ITALIC, BOLDITALIC.

38

StringAlign

Input text can be aligned LEFT, CENTER or RIGHT. Left is the default value. If aligned right, the cursor will move from left to right as text is typed. This

is advised for skins using languages which are read in the opposite direction, such as Arabic.

FocusDismiss (0/1)

If set to "0", (default) the mouse is disabled on any other window element until ENTER or ESC is pressed. If set to "1", clicking anywhere other than on

the input field will "dismiss" the input without taking action.

Bangs

LeftMouseUpAction=!CommandMeasure "MeasureInputTextPlugin" "ExecuteBatch ALL X=100"

IfAboveAction=!CommandMeasure "MeasureInputTextPlugin" "ExecuteBatch 3"

Command4=!CommandMeasure "MeasureInputTextPlugin" "ExecuteBatch 2-4 Password=1"

Notes:

Press Enter to submit user input. Press Escape to dismiss the input box without executing the script.

Due to a limitation in Rainmeter, user-input text may not include quotation marks. If it does, the quotes will be stripped from the command. Try to

avoid using this plugin for setting variables or other data that require quotation marks.

Although the bang !Refresh would normally only refresh the current skin, InputText bangs are passed through Rainmeter itself, which means that the

bang will perform a global refresh instead. To only refresh the skin, use !Refresh #CURRENTCONFIG#. Example Skin

Plugin-iTunes

Plugin=iTunesPlugin

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

Note: New skins should use the NowPlaying plugin as it supports multiple media players (including iTunes).

Options

DefaultArtwork

Sets the default path (relative path to the skin's folder) for artwork returned by Command=GetCurrentTrackArtwork .

Command

Can be any of the following:

Control Bangs: (no return value)

o Backtrack - reposition to the beginning of the current track or go to the previous track if already at start of current track

o FastForward - skip forward in a playing track

o NextTrack - advance to the next track in the current playlist

o Pause - pause playback

o Play - play the currently targeted track

o PlayPause - toggle the playing/paused state of the current track

o PreviousTrack - return to the previous track in the current playlist

o Resume - disable fast forward/rewind and resume playback if playing

o Rewind - skip backwards in a playing track

o Stop - stop playback

o GotoMusicStoreHomePage - go to the iTunes Store home page

o Power - open/close iTunes instance

o Quit - exit the iTunes application

o SoundVolumeUp - turn the volume up 5%

o SoundVolumeDown - turn the volume down 5%

o ToggleiTunes - show/hide iTunes window

o ToggleVisuals - show/hide iTunes visuals

o UpdateIPod - update the contents of the iPod

o UpdatePodcastFeeds - update all podcast feeds (equivalent to the user pressing the Update button when Podcasts is selected in the Source list)

Integer Values:

o GetSoundVolume - return sound volume between 0 ~ 100

o GetPlayerPosition - return player position in seconds

o GetPlayerPositionPercent - return player position between 0 ~ 100

String Values:

o GetCurrentTrackAlbum - album

o GetCurrentTrackArtist - artist

o GetCurrentTrackBitrate - bitrate

o GetCurrentTrackBPM - beats per minute

o GetCurrentTrackComment - comment

o GetCurrentTrackComposer - composer

o GetCurrentTrackEQ - EQ preset name

39

o GetCurrentTrackGenre - genre(category)

o GetCurrentTrackKindAsString - file description

o GetCurrentTrackName - name

o GetCurrentTrackRating - rating (0 ~ 100)

o GetCurrentTrackSampleRate - sample rate

o GetCurrentTrackSize - file size

o GetCurrentTrackTime - the length of the track

o GetCurrentTrackTrackCount - track count of the album

o GetCurrentTrackTrackNumber - track index

o GetCurrentTrackYear - year

o GetCurrentTrackArtwork - return artwork file path, use in comibnation with DefaultArtwork.

Bangs

iTunes can be controlled through !CommandMeasure statements. You can either one of the following methods.

Create a separate measure for each command that will be required. To control, execute !CommandMeasure "MeasureName" ""

Note that an empty string "" is required when there are no parameters on !CommandMeasure.

Send the bang to any iTunes measure with the command as an argument. For example, !CommandMeasure "AnyiTunesMeasure" "NextTrack"

The example skin below demonstrates both methods.

Example Skin

Plugin-NowPlaying

Plugin=NowPlaying

The NowPlaying plugin is used to control various media players and retrieve track metadata (including album art) from them.

IMPORTANT: This plugin uses the the concept of 'main' and 'secondary' measures. To understand the difference, refer to the example skin at the end of

this page.

Options

PlayerName

The name of the media player (for main measure) or the name of the main measure in square brackets (for secondary measures). For example:

Main measure: PlayerName=Winamp

Secondary measure(s): PlayerName=[MainMeasureName]

PlayerType

Defines the return value. Valid values are:

o ARTIST - Artist name.

o ALBUM - Album name.

o TITLE - Track title.

o NUMBER - Track number.

o YEAR - Track year.

o COVER - Path to cover art.

o FILE - Path to playing media file.

o DURATION - Total length of track in seconds*.

o POSITION - Current position in track in seconds*.

o PROGRESS - Percentage of track completed.

o RATING - From 0 to 5.

o REPEAT - 0 if repeat/loop track is off, 1 if on.

o SHUFFLE - 0 if shuffle/random tracks is off, 1 if on.

o STATE - 0 for stopped, 1 for playing, and 2 for paused.

o STATUS - 0 for inactive (player closed) and 1 for active (player open).

o VOLUME - From 0 to 100.

*: When measures of type DURATION or POSITION are used in STRING meters, the displayed value will be in the formMM:SS. All other meters and

measures receive the actual value in seconds.

PlayerPath

The full path to the player executable (used by the OpenPlayer bang). This should be left blank unless you want to override the default path or if you

have a portable installation of the media player.

TrackChangeAction

A command or a bang that will be executed when the track changes.

DisableLeadingZero

When set to 1 (default 0), the format of DURATION and POSITION is M:SS instead of MM:SS. This option must be set on the main measure.

40

Bangs

The media player can be controlled with !CommandMeasure statements. See the sample example skin below for usage.

!CommandMeasure "MainMeasure" "action"

Where action is one of the following:

o Pause - Pause current track.

o Play - Play current track.

o PlayPause - Play (if stopped/paused) or pause (if playing) current track.

o Stop - Stop current track.

o Next - Change to next track.

o Previous - Change to previous track.

o OpenPlayer - Opens the player. If already open, the player will be brought to the top.

o ClosePlayer - Closes the player.

o TogglePlayer - Opens/closes the player depending on current state.

!CommandMeasure "MainMeasure" "SetPosition n"

Where n is either an absolute value ( SetPosition 50 to jump to 50% of the track) or a relative value ( SetPosition +5 to jump 5% forward

or SetPosition -10 to jump 10% backward).

!CommandMeasure "MainMeasure" "SetRating n"

Where n is a value between 0 (no rating) and 5 (maximum rating).

!CommandMeasure "MainMeasure" "SetShuffle n"

Where n is 1 (shuffle on), 0 (shuffle off), or -1 (toggle shuffle).

!CommandMeasure "MainMeasure" "SetRepeat n"

Where n is 1 (repeat on), 0 (repeat off), or -1 (toggle repeat).

!CommandMeasure "MainMeasure" "SetVolume n"

Where n is either an absolute value ( SetVolume 50 to set volume to 50%) or a relative value ( SetVolume +20 to increase volume by 20%

or SetVolume -40 to decrease volume by 40%).

Supported Players

This list contains all supported media players in the latest beta version of Rainmeter. Note that using an unsupported type or bang is perfectly safe (it

will simply result in in a empty value or no action, respectively).

AIMP: PlayerName=AIMP

Fully supported. Tested with AIMP 2.61.

foobar2000: PlayerName=CAD

Fully supported. The foo_cad plugin (download) for foobar2000 must be installed.

iTunes: PlayerName=iTunes

Fully supported. Tested with iTunes 10.2.

J. River Media Center: PlayerName=CAD

Fully supported through the CAD interface. The intcad plugin for Media Center must be installed.

J. River Media Jukebox: PlayerName=CAD

Fully supported through the CAD interface. The intcad plugin for Media Jukebox must be installed.

Last.fm Client: PlayerName=WLM

Partially supported through the WLM interface.

MediaMonkey: PlayerName=MediaMonkey

Fully supported. Tested with MediaMonkey 3.2.5.

Media Player Classic: PlayerName=WLM

Partially supported through the WLM interface. Note that the 'Send Now Playing information to MSN Messenger' option must be enabled in the player's

settings (View -> Options -> Tweaks).

MusicBee: PlayerName=CAD

Fully supported through the CAD interface. Note that MusicBee 1.2 (or higher) is required.

OpenPandora: PlayerName=WLM

Partially supported through the WLM interface.

Spotify: PlayerName=Spotify

Partially supported. Only the types ARTIST/TRACK and the bangs Play, PlayPause, Stop, Next, and Previous are available.

TTPlayer: PlayerName=WLM

Partially supported through the WLM interface.

Winamp: PlayerName=Winamp

Fully supported. Tested with Winamp 5.61.

VLC: PlayerName=CAD

Fully supported through the CAD interface. The libcad plugin for VLC must be installed.

WMP: PlayerName=WMP

Fully supported, except for the REPEAT/SHUFFLE types.

Zune: PlayerName=WLM

Partially supported through the WLM interface.

41

Other Players

In addition to the players listed above, the NowPlaying plugin may support other players through supported interfaces. You may want to give the following

interfaces a try.

CAD: PlayerName=CAD

Some players support the CD Art Display interface. Note that the CAD interface requires that Rainmeter (and the skin using the NowPlaying plugin) is

started before the media player itself. This is required for the first time only (subsequent loads should work regardless of order).

Winamp: PlayerName=Winamp

Several players emulate the Winamp interface.

WLM: PlayerName=WLM

Several players use the MSN/Windows Live Messenger interface to convey limited track information. This interface is very limited (at best, only the

types TITLE, ARTIST, ALBUM and the bangs Play, Pause, PlayPause, Next, Previous, Stop are supported).

If none of these work, leave a suggestion in this thread. If you're nice enough, support for your player will be added shortly after your message :-)

Donate

This plugin was was developed as a personal project by our user poiru at some cost of time, but is being freely distributed. If you find the plugin valuable,

please express your gratitude by donating any amount by clicking on the following PayPal link. Example Skin

Plugin-PerfMon

Plugin=PerfMon

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.

Note: The names of the objects, counters and instances need to be in English even in localized versions of Windows.

Options

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. Set to 0 to return current value. Example Skin

Plugin-PingPlugin

Plugin=PingPlugin

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

Options

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 in milliseconds that the plugin waits for a reply. The default value is 30000 (i.e. 30 seconds).

TimeoutValue

Defines the value that is returned when timeout happens. The default is 30000. Example Skin

42

Plugin-PluginMediaKey

Plugin=MediaKey

The MediaKey plugin allows you to send various keystrokes found on multimedia keyboards. It has been tested to work with Spotify, Zune, foobar, and

Windows Media Player.

Usage:

[MeasureMediaKey]

Measure=Plugin

Plugin=MediaKey

The plugin is controlled via !CommandMeasure statements sent to its measure. E.g.:

!CommandMeasure "MeasureMediaKey" "NextTrack"

Valid arguments are:

NextTrack

PrevTrack

Stop

PlayPause

VolumeMute

VolumeDown

VolumeUp

Plugin-PowerPlugin

Plugin=PowerPlugin

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

This defines what is measured. The valid values are:

o ACLINE - Measures if the power is hooked to ac-line (returns 0 for battery and 1 for ac-line).

o STATUS - Measures the status of the battery (returns 0 for no battery, 1 for charging, 2 for critical, 3 for low, and 4 for high).

o STATUS2 - Same as STATUS except that the BatteryFlag in SYSTEM_POWER_STATUS is returned as is.

o LIFETIME - Measures the lifetime of the battery.

o PERCENT - Measures the percentual lifetime.

o HZ - Measures the current CPU in Hz.

o MHZ - Measures the current CPU in MHz.

Format

This is the same as in a TIME measure. It is used only when PowerState=LIFETIME .

Plugin-Process

Plugin=Process

Detects if a defined Windows process or application is currently running.

Options

ProcessName

The name of the process / application, including the .exe extension.

e.g. ProcessName=Firefox.exe

Returns values of -1 (not running) or 1 (running).

Notes: This can not be used to detect if a Windows "service" executable is running, as those processes are run inside of the "svchost.exe" process. Also,

the plugin may not be able to identify a process that is started with "Run as administrator" if Rainmeter is run with normal user privileges and UAC is

enabled in Windows. Example Skin

43

Plugin-Quote

Plugin=QuotePlugin

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

Options

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 encoded in the ANSI or Unicode formats.

Separator

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

Subfolders

If set to 1, subfolders are also taken into account.

FileFilter

This can used to filter the files by their name. It's possible to define several file filters by separating them with a semicolon

(e.g. FileFilter=*.jpg;*.gif ).

Example Skin

Plugin-RecycleManager

Plugin=RecycleManager

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

Options

RecycleType

This defines what is measured. The valid values are:

o COUNT - The number of items in the recycle bin.

o SIZE - The total size of the items in the recycle bin.

Bangs

The following bangs can also be sent to any RecyleManager measure:

!CommandMeasure "MeasureMyBin" "OpenBin"

Opens the recycle bin.

!CommandMeasure "MeasureMyBin" "EmptyBin"

Empties the contents of the recycle bin.

!CommandMeasure "MeasureMyBin" "EmptyBinSilent"

Empties the contents of the recycle bin without a confirmation messagebox. Example Skin

44

Plugin-ResMon

Plugin=ResMon

Requires Windows XP with Service Pack 1 or newer. The plugin was originally made by Daedalus.

Options

ResCountType

Valid values are:

o GDI - Measures the number of GDI objects.

o USER - Measures the number of user objects.

o HANDLE - Measures the number of open handles.

o 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=WINDOW .

Plugin-Speedfan

Plugin=SpeedFanPlugin

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.

Options

SpeedFanType

Defines the return value. Valid values are:

o TEMPERATURE - Returns the temperature value.

o FAN - Returns the fan speed.

o 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 when SpeedFanType is set to TEMPERATURE.

o C - Returns the temperature in Centigrade.

o F - Returns the temperature in Fahrenheit.

o K - Returns the temperature in Kelvin.

Note: This requires SpeedFan to be set to return Centigrade. Otherwise the returned value will be incorrect.

45

Plugin-SysInfo

Plugin=SysInfo

This plugin returns various information about your system.

Options

SysInfoType

Type of the system information.

String values (can be used only with STRING meters):

o COMPUTER_NAME

o USER_NAME

o SCREEN_SIZE - The resolution of the primary display monitor in a string of the form "width x height"

o WORK_AREA - The size of the client area of the primary display monitor in a string of the form "width x height"

o OS_VERSION

o OS_BITS

o ADAPTER_DESCRIPTION (SysInfoData specifies the adapter)

o NET_MASK (SysInfoData specifies which net mask, if there are several)

o IP_ADDRESS (SysInfoData specifies which ip address, if there are several. 0-999 for installed, 1000-1999 for active)

o GATEWAY_ADDRESS (SysInfoData specifies the adapter)

o HOST_NAME

o DOMAIN_NAME

o DNS_SERVER

Numeric values:

o SCREEN_WIDTH (SysInfoData specifies which monitor, if there are several)

o SCREEN_HEIGHT (SysInfoData specifies which monitor, if there are several)

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

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

o VIRTUAL_SCREEN_WIDTH - Width of the virtual screen which encompases all display monitors.

o VIRTUAL_SCREEN_HEIGHT - Height of the virtual screen which encompases all display monitors.

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

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

o WORK_AREA_WIDTH - Width of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are several.

o WORK_AREA_HEIGHT - Height of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are

several.

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

46

Plugin-VirtualDesktops

Plugin=VirtualDesktops

A virtual desktop manager (VDM) allows you to distribute programs across multiple desktops. The VirtualDesktops plugin gives access to information from

different VDMs for Windows and can be used to trigger desktop switches.

General Options

VDManager

Must be set to the name of a supported VDM. The plugin currently supports "Dexpot" and "VirtuaWin".

VDMeasureType

Specifies what information to measure. The following measure types are supported by every VDM and can be used to make basic skins that work with

every VDM supported by this plugin.

o VDMActive - Returns 1 if the VDM is currently running, and 0 otherwise.

o CurrentDesktop - Returns the number of the currently active desktop.

o SwitchDesktop - Triggers a switch to another desktop when sent that desktop's number as a bang.

o DesktopCount - Returns the total number of virtual desktops.

VDDesktopCount

Used with VDMeasureType=DesktopCount . Can be set to either X or Y to return the number of columns or rows, respectively, in a desktop grid layout.

Example:

[CurrentDesktop]

Measure=Plugin

Plugin=VirtualDesktops

VDManager=VirtuaWin

VDMeasureType=CurrentDesktop

[DesktopCountX]

Measure=Plugin

Plugin=VirtualDesktops

VDManager=VirtuaWin

VDMeasureType=DesktopCount>

VDDesktopCount=X

[SwitchDesktop]

Measure=Plugin

Plugin=VirtualDesktops

VDManager=Dexpot

VDMeasureType=SwitchDesktop

Bangs:

!CommandMeasure "SwitchDesktop" "2"

47

Options for VDManager=Dexpot VDOnActivate

A command or bang that is executed when Dexpot starts. Used with VDMeasureType=VDMActive .

VDOnDeactivate

A command or bang that is executed when Dexpot quits. Used with VDMeasureType=VDMActive .

VDOnChange

A command or bang that is executed when the current desktop (used with VDMeasureType=CurrentDesktop ) or number of desktops (used

with VDMeasureType=DesktopCount ) changes.

Note that bangs do not default to the current skin (use !Refresh "#CURRENTCONFIG#" instead of just !Refresh , for example).

Additional types for VDMeasureType :

DesktopName - Returns the name of the currently active desktop. Set VDDesktop to a desktop number to always return that particular desktop's name.

DesktopWallpaper - Returns the path to the wallpaper of the currently active desktop. Set VDDesktop to a desktop number to always return the

wallpaper defined for that particular desktop.

Command - Can be used to send commands to Dexpot through bangs. At this time, valid commands are exactly the Dexpot command line switches. A

complete list can be found at Dexpot Command Line Switches.

Screenshot - Writes a screenshot (in BMP format) of the current desktop to the file specified by VDOutputFile after every desktop switch.

Other options specific to VDMeasureType=Screenshot :

VDDesktop

Set to a desktop number to always save a screenshot of that particular desktop.

VDWidth and VDHeight

Used to define the size of the screenshot in pixels. When both are given, the screenshot is created with those exact dimensions. When only one is

given, the missing value is scaled proportionally based on the other value. When neither VDWidth nor VDHeight are present, the full desktop resolution

is used.

VDRefreshOnUpdate

If set to 1 and VDDesktop denotes the currently active desktop, creates a new screenshot every time the measure is updated. Make sure to use an

appropriate UpdateDivider.

Example:

[Screenshot]

Measure=Plugin

Plugin=VirtualDesktops

VDManager=Dexpot

VDMeasureType=Screenshot

VDDesktop=1

VDOutputFile=#CURRENTPATH#Desktop1.bmp

VDWidth=320

[DexpotCommand]

Measure=Plugin

Plugin=VirtualDesktops

VDManager=Dexpot

VDMeasureType=Command

Bangs:

!CommandMeasure "DexpotCommand" "-next"

!CommandMeasure "DexpotCommand" "-prev"

!CommandMeasure "DexpotCommand" "-V"

!CommandMeasure "DexpotCommand" "-d"

48

Plugin-WebParser

Plugin=WebParser

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 :-).

More information and examples for WebParser can be found at WebParser Primer and RSS Skin Tutorial.

Options

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=[MeasureExample]

WebParser cannot use cookies or other session-based authentication, so it cannot be used to retrieve information from web sites where you must be

logged on. It can be used on sites which support HTTP authentication, where you format the URL as http://myname:[email protected] .

WebParser can read and parse local files on your computer by using Url=file://C:\path\file.ext .

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

A bang or command that is executed when the page has been downloaded and the parsing is done. This setting is only valid on WebParser measures

that connect to a URL, and actions will not be fired on "child" WebParser measures that use another measure as the URL (i.e. URL=[SomeMeasure]).

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 AND any UpdateDivideron the measure. So the

formula would be Update X UpdateDivider X UpdateRate = "how often the measure connects to the site". The default for UpdateDivider is 1, and the

default for UpdateRate is 600. So if you set an Update of 1000, the default for WebParser is to connect every 10 minutes.(1000 X 1 X 600 milliseconds)

It is advisable to limit the rate so that you're not flooding the server with constant requests. Web server admins will not like it and you may well get

banned from a server altogether if you try to poll the server too often. This is why a default of 600 is set for UpdateRate. You can override this and

make it shorter, but it is advisable (and polite) to only hit websites as often as really needed.

You can use a combination of UpdateDivider and UpdateRate to both limit both how often you hit the website and how often Rainmeter updates the

values returned by the measure and used by meters. However, In general practice it is often best to just set an UpdateRate and leave UpdateDivider

off, so there is no lag between the measure obtaining information from the website and its display in your skin.

DecodeCharacterReference

Automatically decodes HTML Character References. This will eliminate the need to use a Substitute= statement to translate character references

like &quot;, &amp;, &lt;, &gt; to the actual character.

o 0 - Does nothing (default)

o 1 - Decodes both numeric character references and character entity references

o 2 - Decodes only numeric character references

o 3 - Decodes only character entity references

Debug

Set this to 1 and the log file will contain some useful debug information (note that Rainmeter must also be in Debug mode for the Log window to

display DEBUG messages). 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.

49

Usage:

[WebParserMeasure]

Debug2File="C:\filename.txt"

Debug=2

[WebParserMeasure2]

; Saves to current skin folder

Debug2File="Debug2File.txt"

Debug=2

Notes:

o Must include at least a filename. Path alone will not work.

o Must be a directory which already exists. Does not create the target directory.

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:

o This file is not a temporary file so it is not deleted even if it close a skin.

o As for specification of file path, it is not possible to specify by the absolute path and also specification to the outside ofDownloadFile 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.

ProxyServer

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.

ProxyServer=serverIP:port

ProxyServer=servername:port

CodePage

Defines the codepage of the downloaded web page. For example CodePage=28605 interprets the page as Latin 9 (ISO-8859-15). If the CodePage is set

to 0 no conversion is done. CodePage=65001 means UTF-8. You can check other Windows code pages from here.

Examples:

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

[MeasureRSSTitle]

Measure=Plugin

Plugin=WebParser

UpdateRate=3600

Url=http://slashdot.org/slashdot.rdf

RegExp="(?siU)<title>(.+)</title>(.+)<item(.+)<title>(.+)</title>"

StringIndex=1

FinishAction=!Redraw

[MeasureRSS]

Measure=Plugin

Plugin=WebParser

Url=[MeasureRSSTitle]

StringIndex=4

Substitute="&amp;":"&"

50

Download the current weather map from Finnish Meteorological Institute.

[MeasureDL]

Measure=Plugin

Plugin=WebParser

UpdateRate=1800

Url=http://www.fmi.fi/saa/sadejapi_5.html?selected=7

RegExp="(?siU)ennuste" SRC=\"(.*)\"></TD>"

FinishAction=!Redraw

StringIndex=1

Download=1

[MeterImage]

Meter=IMAGE

MeasureName=MeasureDL

X=0

Y=0

W=400

H=300

51

Plugin-WiFiStatus

Plugin=WiFiStatus

The WiFiStatus plugin can be used to display various attributes of visible wireless networks in your area. Windows XP SP2 users need to install

the KB918977 hotfix.

Options

WiFiInfoType (required)

This defines what is measured. The valid values are:

o SSID - The broadcast name for your current connection. When trying to conenct, you may see a 'connecting...' or 'authorizing...' next to the name,

but only if your update speed is around 2 seconds

o QUALITY - A percentage value of the maximum dBm signal strength for your current connection

o ENCRYPTION - The cipher algorithm being used for your current connection. Possible values are: NONE, WEP40, TKIP, AES, WEP104, WPA_GROUP,

WEP, ??? (for unknown)

o 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, ???

o PHY - 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 supported in Windows Vista and higher only.

o LIST - Returns a list of all visible networks. The list is automatically separated by line-breaks '\n', so each network appears on a separate line. It will

also display the band, cipher, and authentication algorithms next the the network name.

WiFiIntfID (optional)

Should be kept at 0 ( WiFiIntfID=0 ) unless you have more than 1 wireless interface adapter (this may or 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:

o 0 - SSID

o 1 - SSID @band

o 2 - SSID (Encryption:Authentication)

o 3 - SSID @band (Encryption:Authentication)

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=WiFiStatus

WiFiInfoType=SSID

WiFiIntfID=0

[MeasureNetworks]

Measure=Plugin

Plugin=WiFiStatus

WiFiInfoType=LIST

WiFiIntfID=0

WiFiListStyle=3

A more detailed sample and support is available at the WiFiStatus support thread.

52

Plugin-Win7AudioPlugin

Plugin=Win7AudioPlugin

Controls sound device and volume for Windows Vista and newer. Previous versions of Windows are not supported. This plugin has been written by

Reiswaffel.

Usage

[MeasureWin7Audio]

Measure=Plugin

Plugin=Win7AudioPlugin

Returns the name of the current sound device (when used in a STRING meter) and the percentage (0-100) of current volume level (when used in a measure

which requires a number).

Bangs

The current device and volume is controlled with !CommandMeasure statements sent to the plugin. See the sample .ini below for examples.

!CommandMeasure "MeasureWin7Audio" "ToggleNext"

Jump to the first if last device is active.

!CommandMeasure "MeasureWin7Audio" "TogglePrevious"

Jumps to the last if first device is active.

!CommandMeasure "MeasureWin7Audio" "SetOutputIndex i"

Set a specific device with index i. This depends on your system setup and number of output devices.

!CommandMeasure "MeasureWin7Audio" "ToggleMute"

Toggle the mute state.

!CommandMeasure "MeasureWin7Audio" "SetVolume x"

Set volume to x (between 0 and 100). This disables mute.

!CommandMeasure "MeasureWin7Audio" "ChangeVolume x"

Change the volume by x percent. Use negative numbers to lower volume. This disables mute. Example Skin

53

Plugin-WindowMessage

Plugin=WindowMessagePlugin

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.

Options

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 API function. If the WindowMessage

is not given the measure returns the window's current title.

Bangs

Messages can also be sent on demand with the !CommandMeasure bang. The arguments are similar that of the WindowMessage option.

!CommandMeasure "MeasureName" "SendMessage Msg wParam lParam"

Examples:

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

[MeasureWinamp]

Measure=Plugin

Plugin=WindowMessagePlugin

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=WindowMessagePlugin

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=WindowMessagePlugin

WindowClass=Winamp v1.x

WindowMessage=1024 1 105

[MeasureWinampCurr]

Measure=Plugin

Plugin=WindowMessagePlugin

WindowClass=Winamp v1.x

WindowMessage=1024 0 105

[MeasureWinampDuration]

Measure=Calc

Formula=(MeasureWinampCurr<=0)?0:(MeasureWinampCurr/(MeasureWinampFull*1000+1))

54

MouseActions

Mouse actions allow the execution of bangs on specific mouse events.

Note: When using a mouse action on a string meter or image meter with transparency, the action will not be executed when clicking on fully transparent

areas. This can be solved by adding SolidColor=0,0,0,1 to the meter, which will create an near-invisible but solid background behind the meter.

Note: Actions defined for the meter will override actions defined in the [Rainmeter] section.

LeftMouseDownAction

Action to execute when the left mouse button is pressed. Note that this disables dragging. See LeftMouseUpAction below.

RightMouseDownAction

Action to execute when the right mouse button is pressed. Note that this disables the context menu.

MiddleMouseDownAction

Action to execute when the middle mouse button is pressed.

LeftMouseUpAction

Action to execute when the left mouse button is released. Generally, this will be the action used when you want to have something happen when an

object is clicked on. LeftMouseDownAction should be avoided unless you have a specific need to trap the downward press, as it will disable the ability

to drag the skin using that object.

RightMouseUpAction

Action to execute when the right mouse button is released. Note that this disables the context menu.

MiddleMouseUpAction

Action to execute when the middle mouse button is released.

LeftMouseDoubleClickAction

Action to execute when the left mouse button is double clicked. If this action is missing, LeftMouseDownAction will be executed.

RightMouseDoubleClickAction

Action to execute when the right mouse button is double clicked. Note that this disables the context menu.

MiddleMouseDoubleClickAction

Action to execute when the middle mouse button is double clicked.

MouseOverAction

Action to execute when the cursor is over the meter or skin.

MouseLeaveAction

Action to execute when the mouse leaves the meter or skin.

MouseActionCursor

When set to 1 (which is the default), a pointer cursor will be shown when hovering over a meter (or skin) with a mouse action.

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 on top of it, you will need to set MouseActionCursor=0 on the

foreground meter (even if it does not have a mouse action).

55

Bangs

Bangs are commands that are used to control various aspects of the skin and Rainmeter. Bangs are specified in options such as LeftMouseUpAction .

General Rules

A single bang may be called using:

LeftMouseUpAction=!Refresh

Multiple bangs must be in square brackets:

LeftMouseUpAction=[!HideMeter "MyMeter"][!Refresh]

Executing an external application is done by using the command and any parameters:

LeftMouseUpAction=["C:\Windows\Notepad.exe" "FileToOpen.txt"]

When using special characters (such as a double quote or unmatched square brackets) in a parameter of a bang, use """ (instead of ") to indicate the

beginning and end of the parameter. For example, the following will set SomeVariable to A "B" C:

LeftMouseUpAction=!SetVariable "SomeVariable" """A "B" C"""

The following, on the other hand, will result in a error:

LeftMouseUpAction=!SetVariable "SomeVariable" "A "B" C"

When using "#VarName#" or "[MeasureName]" in a bang, the current value of the variable or measure will be used. To have the literal string

"#VarName#" or "[MeasureName]" passed in the bang, in a !SetOption value for instance, use the "*" char as in "#*VarName*#" or "[*MeasureName*]" to

tell Rainmeter you do not want the value resolved, but rather used as a literal string.

Bangs

In the list of bangs below, parameters enclosed by [square brackets] indicate required parameters. Parameters enclosed in (normal brackets) indicate

optional parameters.

Several bangs take Config as an optional parameter. When left out, the bang will affect the current skin only. If the Config is specified, the bang will

affect the specified config. Use * as the config to apply the bang to all open configs.

Operating system

!SetClip [String]

Copies the specified string to the Windows clipboard.

!SetWallpaper [File] (Position)

Sets the Windows desktop background to the specified image file (.bmp, .jpg, .png, .gif, and .tiff are supported). The optional Position parameter can

be set to:

o CENTER

o TILE

o STRETCH

o FIT (on Windows 7 and above only)

o FILL (on Windows 7 and above only)

56

Application

!About (TabName)

Opens the About dialog. The optional parameter TabName can be set to:

o Log (default)

o Measures

o Plugins

o Version

!Manage (TabName)

Opens the Manage dialog. The optional parameter TabName can be set to:

o Skins (default)

o Themes

o Settings

!Log [message] (ErrorType)

Writes a message to the error log. The optional parameter ErrorType can be set to:

o NOTICE (default)

o ERROR

o WARNING

o DEBUG

!LsBoxHook [Config]

Special bang for LiteStep lsBox. Note that you MUST give the name of the config as argument.

!ResetStats

Resets the statistics.

!RefreshApp

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. The main difference from !Refresh * is that the skins folder is rescanned.

!Quit

Quits Rainmeter.

PLAY [soundfile]

Plays the given .wav soundfile once.

PLAYLOOP [soundfile]

Plays the given soundfile in a loop.

PLAYSTOP

Stops the currently playing sound.

Options and variables

!SetOption [Meter/Measure] [Option] [Value] (Config)

Sets an option (e.g. FontSize, Text, Formula, etc.) of a meter or measure.

A more complete guide to using !SetOption is at !SetOption Guide.

!SetOptionGroup [Group] [Option] [Value] (Config)

Sets an option (e.g. FontSize, Text, Formula, etc.) of meters and measures in the specified group.

!WriteKeyValue [Section] [Key] [Value] (File)

Allows for permanently writing / changing any Key=Value in any Rainmeter .ini or other ini formatted file such as a .inc @Include file. "Section" is the

section name such as Rainmeter or Variables, "Key" and "Value" are the Key=Value pairs such as FontSize=15. "File" is optional. If excluded, the current

skin .ini file will be used. If included, it will make the change to the specified file as long as the file exists and is in the \Skins or %APPDATA%\Rainmeter

paths. Thus, you can write to any skin .ini / .inc or Rainmeter.ini. For a change to a file to take effect, a refresh of the skin (or Rainmeter) is required.

!SetVariable [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: !SetVariable VarName

"(#SCREENAREAWIDTH# - 10)"

Note: !SetVariable can create a new variable in memory, even if it is not pre-defined in [Variables].

!SetVariableGroup [Variable] [Value] [Group]

Change the value of a variable in the configs of the specified group.

57

Skins

!Show (Config)

Displays the Rainmeter-window.

!Hide (Config)

Hides the Rainmeter-window.

!Toggle (Config)

Toggles the Rainmeter-window between show and hide.

!ToggleGroup [Group]

Toggle the configs in the specified group between show and hide.

!HideGroup [Group]

Hide the configs in the specified group.

!ShowGroup [Group]

Show the configs in the specified group.

!Move [X] [Y] (Config)

Moves the Rainmeter-window to new location.

!ActivateConfig [Config] [Ini-file]

Activates a new configuration ini-file. The ini-file is just the name of the file; do not include the path.

!DeactivateConfig (Config)

Deactivates the configuration ini-file.

!DeactivateConfigGroup [Group]

Deactivate the configs in the specified group.

!ToggleConfig [Config] [Ini-file]

Toggles the configuration ini-file between activated and deactivated.

!Refresh (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.

!RefreshGroup [Group]

Refresh the configs in the specified group.

!Update (Config)

Causes Rainmeter to immediately update the skin, overriding what is in Update= in the [Rainmeter] Section. Note that this does not override

UpdateDivider/UpdateRate on individual measures.

!Redraw (Config)

Forces the redraw of the window. This also updates all the meters.

!RedrawGroup [Group]

Redraw the configs in the specified group.

!SetTransparency [AlphaAmount] (Config)

Sets the transparency of a skin from 0 (invisible) to 255 (opaque).

!SetTransparencyGroup [AlphaAmount] [Group]

Change the transparency of the configs in the specified group.

!ShowFade (Config), !HideFade (Config), !ToggleFade (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.

!ShowFadeGroup (Config), !HideFadeGroup (Config), !ToggleFadeGroup (Config)

Shows or hides the current or specified (Config) group using a "fade" effect. The speed of the fade is determined by the FadeDuration= setting for the

skin in Rainmeter.ini.

!HideBlur (Config)

Hides the blur behind skin.

!ShowBlur (Config)

Shows the blur behind skin if it was hidden.

!ToggleBlur (Config)

Toggles the visibility of the blur behind the skin.

!AddBlur [Region] (Config)

Adds blur region to existing blur area.

!RemoveBlur [Region] (Config)

Removes blur region from existing blur area.

!Draggable [NewSetting] (Config)

Sets Draggable setting for current / named / all configs. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

!DraggableGroup [NewSetting] [Group]

Sets Draggable setting for specified group. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

!ZPos [POS] (Config)

Changes the z-position of the window. -2 = OnDesktop, -1 = OnBottom, 0 = Normal, 1 = OnTop, 2 = Topmost.

!ZPosGroup [POS] [Group]

Change the z-position of the configs in the specified group.

!KeepOnScreen [NewSetting] (Config)

Sets KeepOnScreen setting for current / named / all configs. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

!KeepOnScreenGroup [NewSetting] [Group]

Sets KeepOnScreen setting for specified group. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

58

!ClickThrough [NewSetting] (Config)

Sets ClickThrough setting for current / named / all configs. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

!ClickThroughGroup [NewSetting] [Group]

Sets ClickThrough setting for specified group. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

!SnapEdges [NewSetting] (Config)

Sets SnapEdges setting for current / named / all configs. NewSetting = -1 (toggle) | 0 (off) | 1 (on)

!SnapEdgesGroup [NewSetting] [Group]

Sets SnapEdges setting for specified group. NewSetting can be 0 (off), 1 (on), or -1 (toggle).

Meters

!HideMeter [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.

!ShowMeter [Meter] (Config)

Shows the given meter if it was hidden.

!ToggleMeter [Meter] (Config)

Toggles the visibility of the given meter.

!UpdateMeter [Meter] (Config)

Immediately updates the given meter regardless of UpdateDivider.

!MoveMeter [X] [Y] [Meter] (Config)

Moves the given meter (not the window) to the specified position.

!ShowMeterGroup [Group] (Config)

Shows all of the meters in the specified group.

!HideMeterGroup [Group] (Config)

Hides all of the meters in the specified group.

!ToggleMeterGroup [Group] (Config)

Toggles the visibility of all of the meters in the specified group.

!UpdateMeterGroup [Group] (Config)

Immediately updates all of the meters in the specified group regardless of UpdateDivider.

Measures

!DisableMeasure [Measure] (Config)

Disables the given measure.

!DisableMeasureGroup [Group] (Config)

Disables all of the measures in the specified group.

!EnableMeasure [Measure] (Config)

Enables the given measure.

!EnableMeasureGroup [Group] (Config)

Enables all of the measures in the specified group.

!ToggleMeasure [Measure] (Config)

Toggles the status of the given measure (i.e. disabled/enabled).

!ToggleMeasureGroup [Group] (Config)

Toggles the status of all of the measures in the specified group (i.e. enabled/disabled).

!UpdateMeasure [Measure] (Config)

Immediately updates the given measure regardless of UpdateDivider.

!UpdateMeasureGroup [Group] (Config)

Immediately updates all of the measures in the specified group regardless of UpdateDivider.

!CommandMeasure [Measure] [Arguments] (Config)

Sends a command to the given measure. The arguments depend on the measure in question.

Deprecated bangs

The !Execute bang, used both to indicate multiple bangs in one statement and to execute external applications has been made optional. Do not use it

in new skins.

Bangs names can optionally be preceded by the "Rainmeter" keyword. For example, !RainmeterShowMeter and !ShowMeter are both equal. New skins

should not use the Rainmeter prefix.

!PluginBang "[MeasureName] (Arguments)" (Config)

This bang has been deprecated in favor of !CommandMeasure and should not be used in any new skins.

59

LuaScripting

Rainmeter provides scripting support through Lua. The scripting interface provides access to the Lua 5.1 standard library, which can be used to read and

write files, format strings, perform arithmetic, and a lot more. In addition, the interface provides Rainmeter specific features such as retrieving values of

measures and variables, executing bangs, and writing to the log.

Note: This page merely describes Rainmeter specific features. To learn about the Lua language itself, consider the Lua manual, Lua tutorial, or

the Programming in Lua book.

Note: The Lua debug library is not available. In addition, access to external libraries such as LuaCURL and the use of functions such

as require or dofile is not currently supported.

Script measure

Lua scripts (.lua files) are used through the Script measure:

[MeasureLuaScript]

Measure=Script

ScriptFile=MyScript.lua

Script files

A Lua script can define the following functions.

function Initialize()

Initialize is called once when the skin is refreshed or activated. Use it to initialize global variables or perform actions that are executed only once.

Example:

function Initialize()

SKIN:Bang("!About")

end

function Update()

Update is called on every update of the Script measure (use the UpdateDivider option to control the frequency of updates). The function should

return a string, number, or nothing. For the purpose of this example, lets assume that your Script measure is called MeasureScript.

o return 99 - MeasureScript will have a numerical value of 99 (e.g. when used in Calc measures) and a textual value of "99" (e.g. when used as the

MeasureName in STRING meters)

o return '99' - MeasureScript will have a numerical value of 99 and a string value of "99"

o return 'Ninety Nine' - MeasureScript will have a string value of "Ninety Nine"

Example:

function Update()

return 'Hello, world!'

end

60

Example

Skin:

[MeasureScript]

Measure=Script

ScriptFile=LuaSample.lua

ExampleNumber=20

; [MeasureScript] will have a numerical value of 70 and a string value of "70"

Script:

function Initialize()

exampleNumber = SELF:GetNumberOption('ExampleNumber')

end

function Update()

local newNumber = exampleNumber + 50

return newNumber

end

Log

Errors in Lua scripts are reported through the Log tab of the About dialog. The Lua print function can also be used to output to the log.

print('The value of variable myVar is: '..myVar)

SKIN object

The predefined SKIN object exposes functions related to the current skin. For example:

meter = SKIN:GetMeter('ExampleMeter')

SKIN:Bang('!Refresh')

Bang(string bang, string arg1, string arg2, string argN)

Executes a specific bang with zero or more arguments. For example:

SKIN:Bang('!SetOption', 'ExampleMeter', 'FontSize', '15')

Bang(string bang)

Parses and executes the given bang sting. The bang string must be properly quoted and escaped. For example:

SKIN:Bang('!About')

SKIN:Bang('[!HideMeter ExampleMeter][!DisableMeasure ExampleMeasure]')

GetMeter(string meter)

Returns a handle to the given meter (see "Meter objects" below). If the meter is not found, returns nil.

GetMeasure(string measure)

Returns a handle to the given measure (see "Measure objects" below). If the measure is not found, returns nil.

MakePathAbsolute(string path)

Converts relative path into an absolute path (relative to the skin folder).

GetVariable(string name)

Returns the value of the given variable. If the variable is not found, returns nil.

ReplaceVariables(string text)

Replaces #variables# in given string and returns the result.

ParseFormula(string formula)

Evaluates the string as a formula. If the formula is valid, returns the numeric result. Otherwise returns nil.

SELF object

The predefined SELF object exposes functions related to the current Script measure. In addition to the functions listed below, other functions listed under

"Measure objects" can also be used with SELF without needing to obtain a handle to the measure with SKIN:GetMeasure() . For example:

SELF:GetOption('SomeOption')

SELF:GetNumberOption('SomeOption')

61

Meter objects

The meter object exposes functions related to an existing meter. To create a meter object, use the SKIN:GetMeter() function. For example:

exampleMeter = SKIN:GetMeter('ExampleMeter')

exampleMeter:SetX(25)

SetX(number x)

Set the meter X position.

SetY(number y)

Set the meter Y position.

SetW(number w)

Set the meter width.

SetH(number h)

Set the meter height.

GetX([bool abs])

Returns the meter X position. If the optional parameter abs is true, returns the absolute X position.

GetY([bool abs])

Returns the meter Y position. If the optional parameter abs is true, returns the absolute Y position.

GetH()

Returns the meter height.

GetW()

Returns the meter width.

Hide()

Hide the meter.

Show()

Show the meter.

GetOption(string option)

Returns the value of the meter option (e.g. SolidColor).

GetName()

Returns the meter name.

Measure objects

The measure object exposes functions related to an existing measure. To create a measure object, use the SKIN:GetMeasure() function. For example:

exampleMeasure = SKIN:GetMeasure('ExampleMeasure')

exampleMeasure:Disable()

GetValue()

Returns the numerical value of the measure.

GetStringValue()

Returns the string value of the measure.

Disable()

Disable the measure.

Enable()

Enables the measure.

GetOption(string option [, string defaultValue])

Returns the given option on the measure as a string. If the option is not found, returns defaultValue if specified or an empty string otherwise.

GetNumberOption(string option [, number defaultValue])

Returns the given option on the measure as a number. If the option is not a valid number or formula, returns defaultValueif specified or 0 otherwise.

GetName()

Returns the measure name.

GetRelativeValue()

Returns the measure value scaled from 0.0 to 1.0.

GetValueRange()

Returns the value range.

GetMinValue()

Returns the minimum value of the measure.

GetMaxValue()

Returns the maximum value of the measure.

62

Handling actions

The !CommandMeasure bang can be used to execute Lua code in the context of a Script measure. This is especially useful when reacting to mouse or other

action events. For example:

LeftMouseUpAction=!CommandMeasure "ScriptMeasure" "someVar = 5"

LeftMouseUpAction=!CommandMeasure "ScriptMeasure" "func(); var = 2;"

Formulas can be passed to the script with !CommandMeasure in the skin and evaluated using SKIN:ParseFormula() . For example:

LeftMouseUpAction=!CommandMeasure "ScriptMeasure" "func('(5 + 5)')"

function func(arg)

local result = SKIN:ParseFormula(arg) -- result will be 10

end

Formulas should be enclosed in single quotes and parentheses.

Deprecated features

These are features that should not be used. They are still supported, but may be removed in the future.

PROPERTIES {} - This special table was used to pass options on the Script measure to the script itself.

Use SELF:GetOption('SomeOption') or SELF:GetNumberOption('SomeOption') instead.

meter:SetText() - Prefer SKIN:Bang('!SetOption', 'MeterName', 'Text', 'Value') instead.

function GetStringValue() - Return number or string in Update() instead.

RMSkinCreate

The Rainmeter skin package (.rmskin) is an increasingly popular method of distributing various Rainmeter components. It allows one-click installation of

skins, themes, fonts, and more.

To create a .rmskin package, get the .rmskin template from here, then extract and open the newly created Template folder. It should contain five folders

along with a file called Rainstaller.cfg.

Adding your skins / themes / addons / plugins and fonts.

To add components to the package, simply copy it into the correct folder.

Folders in Template\Skins will be copied into the skin folder (usually Documents\Rainmeter\Skins).

Folders in Template\Themes will be copied into the theme folder (usually %APPDATA%\Rainmeter\Themes).

Folders in Template\Addons will be copied into addon folder (usually Program Files\Rainmeter\Addons).

Folders in Template\Plugins will be copied into plugins folder (usually Program Files\Rainmeter\Plugins). See below for additional details.

Folders in Template\Fonts will be copied into fonts folder (usually Program Files\Rainmeter\Fonts). See below for additional details.

For example, to include the "MySkins" suite of skins, simply copy the entire Documents\Rainmeter\Skins\MySkins folder from your Rainmeter installation

into Template\Skins in the template folders.

More on including plugins

You are able to include both 64bit and 32bit in one single .rmskin. If you decide to take advantage of this, you must specify at

least MinRainmeterVer=2.0.0.740 into Rainstaller.cfg. Then, create the Template\Plugins\32bit andTemplate\Plugins\64bit folders and copy the

plugin(s) into the appropriate folder.

Template\

- Plugins\

-- 32bit\

--- MyPlugin\

---- myplugin.dll

-- 64bit\

--- MyPlugin\

---- myplugin.dll

63

More on including Fonts

There are three ways to include font(s) in your distribution:

Recommended - Include a font in your skin folders, allowing use with LocalFont without any additional installation to the end user's Rainmeter or

Windows configuration.

Simply copy the .TTF file(s) into some folder under the skin/suite you will be distributing. For example, You might create a folder

called Skins\MySkins\Fonts and put all the fonts you wish to include in there, then you can use LocalFont=#ROOTCONFIGPATH#Fonts\FontFile.ttf in

your skins to use the fonts you have distributed.

Include a font that will be permanently installed into the end user's Windows configuration.

Simply copy the .TTF file(s) into Template\Fonts. Set RainmeterFonts=0 in Rainstaller.cfg (see below for more on this file) and the font(s) will be

installed to the user's Windows\Fonts folder automatically and will be available for use in Rainmeter skins.

Include a font that will be installed into the Rainmeter "Fonts" folder, for use with LocalFont in Rainmeter skins.

Simply copy the .TTF file(s) into Template\Fonts. Set RainmeterFonts=1 in Rainstaller.cfg (see below for more on this file) and the font(s) will be

installed in the Rainmeter Fonts folder, normally Program Files\Rainmeter\Fonts, and can be used

with LocalFont=#PROGRAMPATH#Fonts\FontFile.ttf in Rainmeter skins.

Changing settings

After you have copied all the necessary files into the correct folders, open any text editor (e.g. notepad) and drag & drop

theTemplate\Rainstaller.cfg file into the text editor. Fill in the obvious (Name, Author, and Version) and save the file. A detailed explanation of the other

values is available at the end of this page, be sure to glance through that list.

Rainstaller.cfg Basic Options

AdminRights

Set AdminRights=1 if the package contains addons, fonts, or plugins.

MinRainmeterVer

Sets the minimum version of Rainmeter required to install. For example, to require that Rainmeter 1.2 r393 or higher is installed,

specify MinRainmeterVer=1.2.0.393

The revision numbers are available from from Google Code.

LaunchType and LaunchCommand

These two values are used to either load config(s) or a specific theme after installation.

o To open an installed theme, set the following (replacing NameOfTheme with the the theme name):

LaunchType=Theme

LaunchCommand=NameOfTheme

o To open load specific config(s) after install, set something like:

LaunchType=Load

LaunchCommand=MySuite\Clock\Clock.ini

The path is relative to the Rainmeter\Skins folder. To open multiple configs, separate each config with a vertical bar

(i.e. LaunchCommand=file1.ini|file2.ini|file3.ini ).

64

Rainstaller.cfg Advanced Options

These are advanced options and you will most likely not need these. Do not use the following, unless you know what they are for.

CompatibilityWithBit

Use CompatibilityWithBit in combination with at least MinRainmeterVer=1.3.0.499 to ensure that the user has a sufficient version of Rainstaller

installed.

Specifies if the package is compatible with only 32bit Rainmeter or 64bit Rainmeter. Can be set to either 32bit or 64bit . Leave blank for both.

Merge

Use Merge in combination with at least MinRainmeterVer=1.3.0.417 to ensure that the user has a sufficient version of Rainstaller installed.

Set Merge=1 to merge skins in the package with the users skins. Note that the target system must already have the skin in question installed for Merge

to work (set to Merge=2 to ignore this).

KeepVar

Use KeepVar in combination with at least MinRainmeterVer=1.3.0.427 to ensure that the user has a sufficient version of Rainstaller installed.

KeepVar below Rainmeter 1.3 r560 does not support Unicode files or multiple files. For Unicode and multiple file support, use at

least MinRainmeterVer=1.3.0.559

KeepVar can be used to keep variables in a common settings file (e.g. UserVariables.inc in Engima or Variables.inc in Gnometer) during a skin upgrade.

The path is relative to the Rainmeter\Skins folder.

For example, to keep variables intact in Rainmeter\Skins\MySkin\CommonVariables.txt on upgrade, specify:

KeepVar=MySkin\CommonVariables.txt

If MySkin\CommonVariables.txt exists already exitsts in target system, Rainstaller will read all values from "new" CommonVariables.txt and replace

them with corrosponding values from "old" CommonVariables.txt. To keep variables for multiple files, separate each file with a vertical bar

(i.e. KeepVar=file1.ini|file2.ini|file3.ini ).

RainmeterFonts

Set RainmeterFonts=1 to copy fonts into the Rainmeter font folder (usually Program Files\Rainmeter\Fonts) for use with Rainmeter's LocalFont

feature. Leave blank to install normally to WINDOWS\Fonts.

Custom Header

To use a custom header in Rainstaller, simply create a bitmap named Rainstaller.bmp into the same folder as Rainstaller.cfg. Then create the .rmskin

file. When the .rmskin file is opened, Rainstaller will display the custom header instead of the default. The dimensions of the bitmap should be exactly

400x60 pixels.

Creating the .rmskin file

The .rmskin file is simply a renamed .zip file. So, in order to create a .rmskin file, you'll need to create a .zip file first. To do this, right-click on

the Template folder and select Send to -> Compressed (zipped) folder. You will be asked to name the newly created .zip file. Give it the name of your

choice and press Enter.

To convert the created .zip file into a .rmskin file, simply change the file extension from .zip to .rmskin. If you don't know how to do this manually, grab

and run ExttensionChanger from from here. It will allow you change extensions from .zip to .rmskin and vice versa.

Testing and sharing

Before sharing the newly created .rmskin with others, you will need to make sure it works properly. Remember to delete the components from your own

computer before installing to make sure the files were installed properly. For example, if you know that the .rmskin is going to install a skin called

"BestSkinEver", delete "BestSkinEver" from Rainmeter\Skins.

After you have ensured that everything works as intended, you are free to upload and share your .rmskin with others.