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.
/S - Must be specified.
/D= - Install directory (use quotes if the path contains spaces). This parameter is required for portable installs, but it's optional for standard installations. If not given, the install directory will be the previous (if found from registry) or default (%PROGRAMFILES%\Rainmeter or %PROGRAMFILES64%\Rainmeter) location.
/VERSION= - Set to 64 for a 64bit install (optional).
/PORTABLE= - Set to 1 for a portable install (optional).
/DESKTOPSHORTCUT= - Set to 1 to create desktop shortcut (optional).
/STARTUP= - Set to 1 to launch automatically with Windows (optional).
/ALLUSERS= - Set to 1 to create shortcuts for all users (optional).
For example:
"Rainmeter-2.1-r781-beta.exe" /S /DESKTOPSHORTCUT=1 /ALLUSERS=1
The return value (error-code) will be:
0 - Success!
1 - Unknown error.
2 - Unknown error.
3 - Version of Windows version not supported.
4 - Administrative rights not required.
5 - Failed to write to install directory.
6 - VC++ Redistributable 2010 is not installed.
7 - Unable to close Rainmeter/RainBrowser.
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.
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.
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.
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.
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.
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
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.
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.
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.
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:
- 0 - Image as defined by Background
- 1 - Transparent (default if no Background image defined)
- 2 - Solid color
- 3 - Scaled background image
- 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:
- 1 - Top left
- 2 - Top right
- 3 - Bottom right
- 4 - Bottom left
- 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:
- NONE
- HORIZONTAL
- VERTICAL
- 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.
- 0 - No bevel
- 1 - Raised
- 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:
- 1,x1,y1,x2,y2 - Rectangular region
- 2,x1,y1,x2,y2,r - Rectangular region with rounded corners of radius r
- 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.
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.
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.
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:
- 0 - Region is disabled
- 1 - Rectangular region
- 2 - Rectangular region with rounded corners. An additional parameter for the radius of the corners has to be specified
- 3 - Elliptical region
The following parameters define the size and shape of the region to be blurred. They are, in order:
- TOPx - Top left horizontal point in the skin
- TOPy - Top left vertical point in the skin
- BOTTOMx - Bottom right horizontal point in the skin
- BOTTOMy - Bottom right vertical point in the skin
- 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
[Rainmeter]
Update=1000
Blur=1
BlurRegion=1,10,10,190,50
; BlurRegion creates a rectangle starting at 10 pixels from the left, 10 pixels down from the top, and ending at 190 pixels to the right, 50 pixels from the top.
BlurRegion2=3,10,70,80,110
BlurRegion3=2,10,130,190,170,15
[Background]
Meter=IMAGE
W=200
H=180
SolidColor=0,0,0,50
LeftMouseUpAction=!Execute [!AddBlur "1,0,0,200,80"]

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
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.
Skins-MeterMeasureGroups
Measures and meters can be categorized into groups to allow easier control over a set of meters and measures with the Group bangs (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:
- CPU - Measures total load from CPU or individual cores.
- Memory - Measures overall memory utilization.
- PhysicalMemory - Measures allocated physical memory.
- SwapMemory - Measures virtual memory allocation.
- Uptime - Measures how long computer has been on. This works only in a STRING meter.
- NetIn - Measures incoming network traffic.
- NetOut - Measures outgoing network traffic.
- NetTotal - Measures total network traffic.
- FreeDiskSpace - Measures free diskspace.
- Plugin - Measure is defined by an external plugin.
- Registry - Measures registry values.
- Time - Measures time and date.
- Calc - Calculates formulas.
- InvertMeasure
If set to 1, the measured value is inverted. For example, you can measure the
allocated disk space instead of free space.
- 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.
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
[Rainmeter]
Update=1000
[MeasureCPU]
Measure=CPU
Processor=0
IfAboveValue=49
IfAboveAction=[!HideMeter MeterBelowCPU][!ShowMeter MeterAboveCPU]
IfBelowValue=50
IfBelowAction=[!HideMeter MeterAboveCPU][!ShowMeter MeterBelowCPU]
[MeasureDelayColor]
Measure=Calc
Formula=MeasureCPU
[MeterAboveCPU]
Meter=String
MeasureName=MeasureDelayColor
X=0
Y=0
FontSize=15
FontColor=255,0,0,255
AntiAlias=1
AutoScale=1
Text=CPU: %1
Hidden=1
[MeterBelowCPU]
Meter=String
MeasureName=MeasureDelayColor
X=0
Y=0
FontSize=15
FontColor=0,255,0,255
AntiAlias=1
AutoScale=1
Text=CPU: %1
Hidden=0
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".
- 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".
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
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".
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"
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...
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...)
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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureRandom]
Measure=Calc
Formula=RANDOM
LowBound=5
HighBound=100
UpdateRandom=1
[MeasureCalc]
Measure=Calc
Formula=(MeasureRandom / 2) * 100
[MeterString]
Meter=String
MeasureName=MeasureCalc
X=0
Y=0
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
NumOfDecimals=1
Text="Value: %1"
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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureCPUAll]
Measure=CPU
Processor=0
[MeasureCPUCore1]
Measure=CPU
Processor=1
[MeasureCPUCore2]
Measure=CPU
Processor=2
[MeterCPUAll]
Meter=String
MeasureName=MeasureCPUAll
X=0
Y=0
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
NumOfDecimals=1
Text="Average Usage: %1%"
[MeterCPUCore1]
Meter=String
MeasureName=MeasureCPUCore1
X=0
Y=16
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
NumOfDecimals=1
Text="CPU1 Usage: %1%"
[MeterCPUCore2]
Meter=String
MeasureName=MeasureCPUCore2
X=0
Y=32
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
NumOfDecimals=1
Text="CPU2 Usage: %1%"
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:
- Error >> 0
- Removed >> 1
- Removable >> 3
- Fixed >> 4
- Network >> 5
- CDRom >> 6
- 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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureDiskLabel]
Measure=FreeDiskSpace
Drive=C:
Label=1
UpdateDivider=5
[MeasureTotalDiskSpace]
Measure=FreeDiskSpace
Drive=C:
Total=1
UpdateDivider=5
[MeasureFreeDiskSpace]
Measure=FreeDiskSpace
Drive=C:
UpdateDivider=5
[MeasureUsedDiskSpace]
Measure=FreeDiskSpace
Drive=C:
InvertMeasure=1
UpdateDivider=5
[MeterDriveInfo]
Meter=String
MeasureName=MeasureDiskLabel
MeasureName2=MeasureTotalDiskSpace
MeasureName3=MeasureFreeDiskSpace
MeasureName4=MeasureUsedDiskSpace
X=0
Y=0
W=500
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="C:\ (%1): [Total: %2B] [Free: %3B] [Used: %4B]"
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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureMemTotal]
Measure=Memory
Total=1
UpdateDivider=2
[MeasureMemUsed]
Measure=Memory
UpdateDivider=2
[MeasureMemFree]
Measure=Memory
InvertMeasure=1
UpdateDivider=2
[MeterMemoryInfo]
Meter=String
MeasureName=MeasureMemTotal
MeasureName2=MeasureMemUsed
MeasureName3=MeasureMemFree
X=0
Y=0
W=400
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Memory: [Total: %1B] [Used: %2B] [Free: %3B]"
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.
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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureNetIn]
Measure=NetIn
[MeasureNetOut]
Measure=NetOut
[MeterNetworkIn]
Meter=String
MeasureName=MeasureNetIn
X=0
Y=0
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Network In: %1b"
[MeterNetworkOut]
Meter=String
MeasureName=MeasureNetOut
X=0
Y=16
W=200
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Network Out: %1b"
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
[Rainmeter]
Update=1000
[MeasurePhysMemTotal]
Measure=PhysicalMemory
Total=1
UpdateDivider=2
[MeasurePhysMemUsed]
Measure=PhysicalMemory
UpdateDivider=2
[MeasurePhysMemFree]
Measure=PhysicalMemory
InvertMeasure=1
UpdateDivider=2
[MeterMemoryInfo]
Meter=String
MeasureName=MeasurePhysMemTotal
MeasureName2=MeasurePhysMemUsed
MeasureName3=MeasurePhysMemFree
X=0r
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Physical Memory: [Total: %1] [Used: %2] [Free: %3]"
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
[Rainmeter]
Update=1000
[MeasureUserName]
Measure=Plugin
Plugin=Plugins\SysInfo.dll
SysInfoType=USER_NAME
[MeterUserName]
Meter=String
MeasureName=MeasureUserName
X=0
Y=0
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=User Name: %1
Measures-Registry
Provides a way to read data from the Windows Registry.
Options
- RegHKey
The name of the HKEY. Possible values are:
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_CLASSES_ROOT
- HKEY_PERFORMANCE_DATA
- HKEY_DYN_DATA
- RegKey
The name of the registry key.
- RegValue
The name of the registry key's value. Only string and long values are supported.
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
[Rainmeter]
Update=1000
[MeasureWindowsVersion]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=SOFTWARE\Microsoft\Windows NT\CurrentVersion
RegValue=ProductName
UpdateDivider=3000
[MeterWindowsVersion]
Meter=String
MeasureName=MeasureWindowsVersion
X=0
Y=0
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=Windows Version: %1
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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
[MeasureSwapMemTotal]
Measure=SwapMemory
Total=1
UpdateDivider=2
[MeasureSwapMemUsed]
Measure=SwapMemory
UpdateDivider=2
[MeasureSwapMemFree]
Measure=SwapMemory
InvertMeasure=1
UpdateDivider=2
[MeterMemoryInfo]
Meter=String
MeasureName=MeasureSwapMemTotal
MeasureName2=MeasureSwapMemUsed
MeasureName3=MeasureSwapMemFree
X=0
Y=0
W=400
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Swap Memory: [Total: %1B] [Used: %2B] [Free: %3B]"
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.
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
[Rainmeter]
Update=1000
[MeasureDate]
Measure=Time
Format=%A, %B %#d, %Y
[Measure12HrTime]
Measure=Time
Format=%#I:%M %p
[Measure24HrTime]
Measure=Time
Format=%H:%M
[MeterDateInfo]
Meter=String
MeasureName=MeasureDate
X=0
Y=0
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=Today is: %1
[Meter12hrTime]
Meter=String
MeasureName=Measure12HrTime
X=0
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=The time is: %1
[Meter24hrTime]
Meter=String
MeasureName=Measure24HrTime
X=0
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=The time is: %1
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!".
- %4 - Days
- %3 - Hours
- %2 - Minutes
- %1 - Seconds
- !i! - Putting this after the format code shows the numbers with no leading zeros
- !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
[Rainmeter]
Update=1000
[MeasureUpTime]
Measure=UpTime
Format="%4!i! Days, %3!i! Hours, %2!i! Minutes %1!i! Seconds"
[MeterUpTime]
Meter=String
MeasureName=MeasureUpTime
X=0
Y=0
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=System UpTime: %1
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 containng 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, irregardless 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
[Rainmeter]
DynamicWindowSize=1
Update=1000
[MeasureCPU]
Measure=CPU
Processor=0
MinValue=0
MaxValue=100
[MeterCPUBackgroundImage]
Meter=Image
SolidColor=171,54,3,150
X=0
Y=0
W=130
H=100
[MeterCPUString]
Meter=String
MeasureName=MeasureCPU
W=130
H=25
X=65
Y=5
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
StringAlign=Center
StringStyle=Bold
StringEffect=Shadow
AntiAlias=1
AutoScale=1
Text=CPU: %1
[MeterCPUHistogram]
Meter=Histogram
MeasureName=MeasureCPU
X=5
Y=5R
W=120
H=50
PrimaryColor=255,255,255,255
SolidColor=0,0,0,100
AntiAlias=1

Meters-GeneralSettings
The following are setting which apply to all meter types.
Options
- Meter
Indicates the type of the meter. The valid values are:
- BAR
- BITMAP
- BUTTON
- HISTOGRAM
- IMAGE
- LINE
- ROTATOR
- ROUNDLINE
- 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.
- 0 - No bevel (Default)
- 1 - Raised
- 2 - Sunken
- AntiAlias
If set to 1, the meter is drawn as antialiased.
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
[Rainmeter]
Update=1000
[Variables]
Color=255,0,0,255
[StringStyle]
FontColor=#Color#
FontFace=Trebuchet MS
FontSize=11
StringEffect=SHADOW
StringStyle=BOLD
StringAlign=LEFT
AntiAlias=1
[MeterOne]
Meter=STRING
MeasureName=MeasureOne
MeterStyle=StringStyle
X=5R
Y=5R
[MeterTwo]
Meter=STRING
MeasureName=MeasureTwo
MeterStyle=MyStringStyle
X=5R
Y=5R
The settings for [MeterOne] and [MeterTwo] are "inherited" from [StringStyle]. In the example, the strings would be red and have Trebuchet MS as the font. The text would be size 11, shadowed, bold, antialiased and aligned to the left. Note that any settings that
exist in the meter itself take precedence and will override the ones found in the style.
Meters-ANoteOnFonts
Fonts are used in String meters through the FontFace option. Fonts can either be installed directly into Windows (allowing the font to be available to all installed programs) or you can use the LocalFont option (under the [Rainmeter] section) to restrict the font to Rainmeter only (and not require a separate install).
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 is FontForge, 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.
Installing fonts
Install the font by right clicking it and selecting "Install Font". This will install the font in Windows\Fonts and it will be available in Rainmter and all other Windows applications.
Note: Rainmeter must be restarted after installing fonts in order for Rainmeter to detect the change.
Use the font with the Family Name in a Meter=STRING meter.
[MeterName]
Meter=String
FontFace=MyInstalledFont
Using LocalFont
Place the actual .ttf font file in a folder. Use the LocalFont="Path\FileName.ttf" option in the [Rainmeter] section of your skin. Then use the Family Name in FontFace=xxx as normal.
Note: You may use more than one LocalFont in [Rainmeter] by simply adding a number: LocalFont2, LocalFont3, ...
[Rainmeter]
LocalFont="#CURRENTPATH#SomeFont.ttf
[MeterName]
Meter=String
FontFace=MyLocalFont
Example Skin
[Rainmeter]
Update=1000
DynamicWindowSize=1
LocalFont="#CURRENTPATH#alba_ttf_70191.ttf"
[Variables]
WinFontFace=Trebuchet MS
LocalFontFace=Alba
FontColor=255,255,255,255
FontSize=20
AntiAlias=1
[MeterBackground]
Meter=Image
SolidColor=171,54,3,255
W=305
H=80
[MeterOne]
Meter=String
X=5
Y=5
FontFace=#WinFontFace#
FontColor=#FontColor#
FontSize=#FontSize#
AntiAlias=#AntiAlias#
Text=This is an installed font
[MeterTwo]
Meter=String
X=5
Y=R
FontFace=#LocalFontFace#
FontColor=#FontColor#
FontSize=#FontSize#
AntiAlias=#AntiAlias#
Text=This is a LocalFont

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:
- Line, String: %1, %2, %3, ...
- Histogram: %1, %2
- 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:
- INFO
- WARNING
- ERROR
- QUESTION
- 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.
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.
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
Example Skin
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureMemory]
Measure=PhysicalMemory
[BarBackground]
Meter=Image
X=0
Y=20
W=110
H=30
SolidColor=171,54,3,150
[MeterMemoryText]
Meter=String
MeasureName=MeasureMemory
AutoScale=1
X=0
Y=0
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Text=Free RAM: %1
[MeterMemoryBar]
MeasureName=MeasureMemory
Meter=BAR
X=5
Y=25
W=100
H=20
BarColor=255,255,255,255
SolidColor=105,37,6,150
BarOrientation=HORIZONTAL

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
Example Skin
[Rainmeter]
Update=1000
[MeasureCPU]
Measure=CPU
[Label]
Meter=Image
ImageName=CPULabel.png
X=0
Y=0
[MeterCPU]
Meter=Bitmap
MeasureName=MeasureCPU
X=R
Y=0
BitmapImage=nums.png
BitmapFrames=10
BitmapExtend=10
BitmapDigits=2
[PercentSign]
Meter=Image
ImageName=percent.png
X=128r
Y=0

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
Example Skin
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
Example Skin
[Rainmeter]
DynamicWindowSize=1
Update=500
[MeasureCPU]
Measure=CPU
Processor=0
MinValue=0
MaxValue=100
[MeterCPUBackgroundImage]
Meter=Image
SolidColor=171,54,3,150
X=0
Y=0
W=130
H=60
[MeterCPUHistogram]
Meter=Histogram
MeasureName=MeasureCPU
X=5
Y=5
W=120
H=50
PrimaryColor=255,255,255,255
SolidColor=0,0,0,100
AntiAlias=1

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.
- You can specify both W and H with
PreserveAspectRatio=0, and it will scale the image to the exact specified size. Aspect ratio is not preserved.
- You can specify W or H alone with
PreserveAspectRatio=1, and the image will be scaled to the given value, with the other undefined "aspect" being automatically scaled to preserve the aspect ratio.
- You can specify both W and H with
PreserveAspectRatio=1, and the image will be scaled by using the larger of the width or height dimensions in the original image, setting that to the user defined value, and setting the other "aspect" to what is needed to preserve the aspect ratio. That way the image will be made to "fit" in the container defined by H and W even if the user doesn't know if the image is originally "portrait" or "landscape" (tall or wide) from the source.
- In all cases the image is "centered" in the meter defined by W and H. "Dead space" created by preserving the aspect ratio (much like the black bars on your TV when you watch a widescreen movie on a standard 4:3 screen) is transparent.
- Image meters can use [MeasureName] as the value of either W or H or both, and the image scaling is done on each update of the measure used. This means that a refresh is not required to resize an image and dynamic "zooming" of the image can be achieved by using measures to change the size values.
- 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:
- 1 - Top left
- 2 - Top right
- 3 - Bottom right
- 4 - Bottom left
- 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:
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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeterBackground]
Meter=Image
ImageName=#CURRENTPATH#Background.jpg
W=200
H=200
GreyScale=1
ImageTint=171,54,3,150
[MeasureMyPictures]
Measure=Plugin
Plugin=Plugins\QuotePlugin.dll
PathName=C:\Pictures
Subfolders=1
FileFilter=*.jpg;*.gif;*.bmp;*.png
UpdateDivider=10
[MeterShowPicture]
Meter=Image
MeasureName=MeasureMyPictures
X=25
Y=25
W=150
H=150
PreserveAspectRatio=1
LeftMouseUpAction=!Refresh

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.
- Flip
If set to 1 the meter is flipped upside down.
Example Skin
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeterBackground]
Meter=Image
W=110
H=60
SolidColor=150,150,150,255
[MeasureNetIn]
Measure=NetIn
[MeasureNetOut]
Measure=NetOut
[MeterNetworkLine]
Meter=Line
MeasureName=MeasureNetOut
MeasureName2=MeasureNetIn
X=5
Y=5
W=100
H=50
LineCount=2
LineColor=140,252,124,255
LineColor2=254,211,122,255
SolidColor=0,0,0,255
AutoScale=1
AntiAlias=1

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
Example Skin
[Rainmeter]
Update=1000
[MeasureTime]
Measure=Time
[MeterBackground]
Meter=Image
ImageName=ClockFace.png
W=110
H=116
[MeterHoursHand]
Meter=ROTATOR
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
ImageName=Hours.png
OffsetX=3
OffsetY=3
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=43200
[MeterMinutesHand]
Meter=ROTATOR
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
ImageName=Minutes.png
OffsetX=3
OffsetY=3
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=3600
[MeterSecondsHand]
Meter=ROUNDLINE
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
LineLength=52
LineColor=247,220,129,255
LineWidth=2
AntiAlias=1
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=60

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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureDisk]
Measure=FreeDiskSpace
Drive=C:
InvertMeasure=1
[MeasureBackground]
Measure=Calc
Formula=1
[MeterBackground]
Meter=ROUNDLINE
MeasureName=MeasureBackGround
X=0
Y=0
W=50
H=50
StartAngle=4.712
RotationAngle=6.283
LineLength=25
LineColor=226,153,3,255
Solid=1
AntiAlias=1
[MeterDisk]
Meter=ROUNDLINE
MeasureName=MeasureDisk
X=0
Y=0
W=50
H=50
StartAngle=4.712
RotationAngle=6.283
LineLength=25
LineColor=255,255,255,255
Solid=1
AntiAlias=1

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.
- StringAlign
The alignment of the string. The valid values are: LEFT, CENTER and RIGHT.
- StringStyle
Style of the string. The valid values are: NORMAL, BOLD, ITALIC and BOLDITALIC.
- StringEffect
Effect of the string. The valid values are: NONE, SHADOW and BORDER.
- FontEffectColor
The color of the StringEffect. The colors are given in the same manner as with SolidColor: RGB(A).
- StringCase
Sets the "case" of the string. The Valid values are NONE, UPPER, LOWER, PROPER.
- Scale
Scaling factor for the measured value. The measured value is divided
with the scale value, so in order to get 1000 times smaller values just set the
scale to 1000. If the scale value has a decimal point (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:
- 0 - Disabled (default)
- 1 - Scale by 1024
- 1k - Scale by 1024 (with kilo as lowest unit)
- 2 - Scale by 1000
- 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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureDate]
Measure=Time
Format=%A, %B %#d, %Y
[MeterBackground]
Meter=Image
W=300
H=155
SolidColor=226,153,3,255
[MeterDate]
Meter=STRING
MeasureName=MeasureDate
X=0
Y=0
FontColor=255,255,255,255
FontFace=Trebuchet MS
FontSize=14
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Text=Today is %1
[MeterText1]
Meter=STRING
X=0
Y=0R
FontColor=0,0,0,255
FontFace=Trebuchet MS
FontSize=12
Text=Relative to bottom of previous meter
[MeterText2]
Meter=STRING
X=300
Y=10R
W=300
H=20
StringAlign=Right
FontColor=255,255,255,255
FontFace=Trebuchet MS
StringStyle=Italic
FontSize=14
Text=Right justified italic text
[MeterText3]
Meter=STRING
X=150
Y=0R
W=300
H=20
StringAlign=Center
FontColor=255,255,255,255
FontFace=Trebuchet MS
StringStyle=Bold
FontSize=14
Text=Centered bold text
[MeterText4]
Meter=STRING
X=0
Y=10R
W=200
H=44
ClipString=1
FontColor=255,255,255,255
FontFace=Trebuchet MS
StringStyle=Bold
FontSize=14
Text=This text will wrap due to ClipString=1

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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,220
[MeasureTopProcessUsage]
Measure=Plugin
Plugin=AdvancedCPU
TopProcess=1
CPUExclude=Idle
[MeasureTopProcessName]
Measure=Plugin
Plugin=AdvancedCPU
TopProcess=2
CPUExclude=Idle
[MeterTopProcess]
Meter=STRING
MeasureName=MeasureTopProcessUsage
MeasureName2=MeasureTopProcessName
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text="%1% (%2)"
NumOfDecimals=1
Scale=100000
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:
- Temperature - Returns the current temperature value.
- MaxTemperature - Returns the maximum temperature value between all cores.
- BusSpeed - Returns the bus frequency.
- BusMultiplier - Returns the bus multiplier.
- CpuName - Returns the CPU model name.
- CpuSpeed - Returns the core frequency.
- TjMax - Maximum allowed temperature rated by the manufacturer.
- Load - Returns the core load as percentage.
- 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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,220
[MeasureMaxTemp]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=MaxTemperature
[MeasureCore1Temp]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=Temperature
CoreTempIndex=0
[MeasureCpuSpeed]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=CpuSpeed
[MeterMaxTemp]
Meter=STRING
MeasureName=MeasureMaxTemp
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text="Max Temp: %1°C"
[MeterCore1Temp]
Meter=STRING
MeasureName=MeasureCore1Temp
X=5
Y=25
W=200
H=20
FontColor=255,255,255,255
Text="Core 1 Temp: %1°C"
[MeterCpuSpeed]
Meter=STRING
MeasureName=MeasureCpuSpeed
X=5
Y=45
W=200
H=20
FontColor=255,255,255,255
Text="Frequency: %1 MHz"
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:
- FileCount - Number of found files
- FolderCount - Number of found folders
- 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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,220
[MeasureSkinsFolder]
Measure=Plugin
Plugin=FolderInfo
Folder=#SKINSPATH#
InfoType=FolderSizeStr
IncludeHiddenFiles=1
IncludeSubFolders=1
IncludeSystemFiles=1
RegExpFilter=.*
UpdateDivider=10
[MeterSize]
Meter=STRING
MeasureName=MeasureSkinsFolder
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text="Total Size: %1B"
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.
- 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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[Variables]
FirstVar=!WriteKeyValue
SecondVar=!SetVariable
FontSize=14
[MeterBackground]
Meter=Image
SolidColor=1E3A69FF
W=250
H=105
[MeasureInput]
Measure=Plugin
Plugin=InputText
SolidColor=76A0E8FF
FontColor=FFFFFF
FontFace=Seqoe UI
StringStyle=Italic
FontSize=#FontSize#
X=5
Y=5
H=25
W=240
DefaultValue="Change Me!"
Command1=!WriteKeyValue Variables FirstVar "$UserInput$" "#CURRENTPATH#InputText.inc"
Command2=!Refresh #CURRENTCONFIG#
Command3=!SetVariable SecondVar "$UserInput$" Y=40 DefaultValue="Change Me Too!"
Command4=["$UserInput$"] Y=75 DefaultValue="Text file path and name"
[MeterWriteKeyValue]
Meter=String
X=5
Y=5
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=#FirstVar#
LeftMouseUpAction=!CommandMeasure "MeasureInput" "ExecuteBatch 1-2"
[MeterSetVariable]
Meter=String
X=5
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
DynamicVariables=1
Text=#SecondVar#
LeftMouseUpAction=!CommandMeasure "MeasureInput" "ExecuteBatch 3"
[MeterOpenEditor]
Meter=String
X=5
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
DynamicVariables=1
Text=Open Text File
LeftMouseUpAction=!CommandMeasure "MeasureInput" "ExecuteBatch 4"
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)
- Backtrack - reposition to the beginning of the current track or go to the previous track if already at start of current track
- FastForward - skip forward in a playing track
- NextTrack - advance to the next track in the current playlist
- Pause - pause playback
- Play - play the currently targeted track
- PlayPause - toggle the playing/paused state of the current track
- PreviousTrack - return to the previous track in the current playlist
- Resume - disable fast forward/rewind and resume playback if playing
- Rewind - skip backwards in a playing track
- Stop - stop playback
- GotoMusicStoreHomePage - go to the iTunes Store home page
- Power - open/close iTunes instance
- Quit - exit the iTunes application
- SoundVolumeUp - turn the volume up 5%
- SoundVolumeDown - turn the volume down 5%
- ToggleiTunes - show/hide iTunes window
- ToggleVisuals - show/hide iTunes visuals
- UpdateIPod - update the contents of the iPod
- UpdatePodcastFeeds - update all podcast feeds (equivalent to the user pressing the Update button when Podcasts is selected in the Source list)
Integer Values:
- GetSoundVolume - return sound volume between 0 ~ 100
- GetPlayerPosition - return player position in seconds
- GetPlayerPositionPercent - return player position between 0 ~ 100
String Values:
- GetCurrentTrackAlbum - album
- GetCurrentTrackArtist - artist
- GetCurrentTrackBitrate - bitrate
- GetCurrentTrackBPM - beats per minute
- GetCurrentTrackComment - comment
- GetCurrentTrackComposer - composer
- GetCurrentTrackEQ - EQ preset name
- GetCurrentTrackGenre - genre(category)
- GetCurrentTrackKindAsString - file description
- GetCurrentTrackName - name
- GetCurrentTrackRating - rating (0 ~ 100)
- GetCurrentTrackSampleRate - sample rate
- GetCurrentTrackSize - file size
- GetCurrentTrackTime - the length of the track
- GetCurrentTrackTrackCount - track count of the album
- GetCurrentTrackTrackNumber - track index
- GetCurrentTrackYear - year
- GetCurrentTrackArtwork - return artwork file path, use 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
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,220
[MeasureTrack]
Measure=Plugin
Plugin=iTunesPlugin
Command=GetCurrentTrackName
[MeasurePlayPause]
Measure=Plugin
Plugin=iTunesPlugin
Command=PlayPause
[MeasurePreviousTrack]
Measure=Plugin
Plugin=iTunesPlugin
Command=PreviousTrack
[MeterTrack]
Meter=STRING
MeasureName=MeasureTrack
X=5
Y=5
W=200
H=18
FontColor=255,255,255,255
Text="Track: %1"
ClipString=1
[MeterPlayPause]
Meter=STRING
MeasureName=MeasureTrack
X=5
Y=25
W=50
H=18
FontColor=255,255,255,150
Text="PLAY"
LeftMouseUpAction=[!CommandMeasure "MeasurePlayPause" ""]
[MeterPreviousTrack]
Meter=STRING
MeasureName=MeasureTrack
X=55
Y=25
W=50
H=20
FontColor=255,255,255,150
Text="PREV"
LeftMouseUpAction=[!CommandMeasure "MeasurePreviousTrack" ""]
[MeterNextTrack]
Meter=STRING
MeasureName=MeasureTrack
X=105
Y=25
W=50
H=20
FontColor=255,255,255,150
Text="NEXT"
LeftMouseUpAction=[!CommandMeasure "MeasureTrack" "NextTrack"]
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:
- ARTIST - Artist name.
- ALBUM - Album name.
- TITLE - Track title.
- NUMBER - Track number.
- YEAR - Track year.
- COVER - Path to cover art.
- FILE - Path to playing media file.
- DURATION - Total length of track in seconds*.
- POSITION - Current position in track in seconds*.
- PROGRESS - Percentage of track completed.
- RATING - From 0 to 5.
- REPEAT - 0 if repeat/loop track is off, 1 if on.
- SHUFFLE - 0 if shuffle/random tracks is off, 1 if on.
- STATE - 0 for stopped, 1 for playing, and 2 for paused.
- STATUS - 0 for inactive (player closed) and 1 for active (player open).
- VOLUME - From 0 to 100.
*: When measures of type DURATION or POSITION are used in STRING meters, the displayed value will be in the form MM: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.
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:
- Pause - Pause current track.
- Play - Play current track.
- PlayPause - Play (if stopped/paused) or pause (if playing) current track.
- Stop - Stop current track.
- Next - Change to next track.
- Previous - Change to previous track.
- OpenPlayer - Opens the player. If already open, the player will be brought to the top.
- ClosePlayer - Closes the player.
- 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% orSetVolume -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.
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
The example below is pretty bare. For a proper, functioning skin based on NowPlaying, check Soita for Rainmeter.
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,200
; MeasurePlayer is the MAIN MEASURE.
; MeasureArtist and MeasureAlbum are SECONDARY MEASURES.
[MeasurePlayer]
Measure=Plugin
Plugin=NowPlaying
PlayerName=iTunes
; The MAIN MEASURE specifies the media player name here.
PlayerType=TITLE
PlayerPath=
DisableLeadingZero=0
[MeasureArtist]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
; SECONDARY MEASURES specify the name of the main measure here.
; The main measure name must be enclosed in square brackets.
PlayerType=ARTIST
[MeasureAlbum]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=ALBUM
[MeterTitle]
Meter=String
MeasureName=MeasurePlayer
X=0
Y=0
W=400
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Title: %1"
[MeterArtist]
Meter=String
MeasureName=MeasureArtist
X=0
Y=16
W=400
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Artist: %1"
[MeterAlbum]
Meter=String
MeasureName=MeasureAlbum
X=0
Y=32
W=400
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="Album: %1"
[MeterPrev]
Meter=String
X=0
Y=60
W=60
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="PREV"
LeftMouseUpAction=[!CommandMeasure "MeasurePlayer" "Previous"]
[MeterNext]
Meter=String
X=60
Y=60
W=60
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="NEXT"
LeftMouseUpAction=[!CommandMeasure "MeasurePlayer" "Next"]
[MeterVolumeUp]
Meter=String
X=120
Y=60
W=60
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="VOL+"
LeftMouseUpAction=[!CommandMeasure "MeasurePlayer" "SetVolume +25"]
[MeterVolumeDown]
Meter=String
X=180
Y=60
W=60
H=16
FontSize=10
FontColor=255,255,255,255
AntiAlias=1
AutoScale=1
Text="VOL-"
LeftMouseUpAction=[!CommandMeasure "MeasurePlayer" "SetVolume -25"]
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
[Rainmeter]
Update=1000
; Display how much CPU Rainmeter is using:
; (use Scale=100000.0 in STRING meters if you want perceptual value)
[MeasureRainmeterCPU]
Measure=Plugin
Plugin=Perfmon
PerfMonObject="Process"
PerfMonCounter="% Processor Time"
PerfMonInstance=Rainmeter
; Display the number of running processes:
[MeasureProcesses]
Measure=Plugin
Plugin=Perfmon
PerfMonObject="System"
PerfMonCounter="Processes"
PerfMonInstance=""
PerfMonDifference=0
; Display the disk access in drive C:
[MeasureDiskAccess]
Measure=Plugin
Plugin=PerfMon
PerfMonObject=LogicalDisk
PerfMonCounter="Disk Bytes/sec"
PerfMonInstance="C:"
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
[Rainmeter]
DynamicWindowSize=1
Update=1000
[MeasurePing]
Measure=Plugin
Plugin=PingPlugin
DestAddress=www.google.com
[MeterPing]
Meter=STRING
X=0
Y=0
MeasureName=MeasurePing
Text="google.com: %1"
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:
- ACLINE - Measures if the power is hooked to ac-line (returns 0 for battery and 1 for ac-line).
- 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).
- STATUS2 - Same as STATUS except that the BatteryFlag in SYSTEM_POWER_STATUS is returned as is.
- LIFETIME - Measures the lifetime of the battery.
- PERCENT - Measures the percentual lifetime.
- HZ - Measures the current CPU in Hz.
- 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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureProcess]
Measure=Plugin
Plugin=Process
ProcessName=Notepad.exe
IfAboveValue=0
IfAboveAction=!SetOption MeterProcess Text "Running"
IfBelowValue=0
IfBelowAction=!SetOption MeterProcess Text "Not Running"
[MeterProcess]
Meter=String
FontSize=11
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Text=Checking...
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
Shows random image from your My Pictures folder as 200x200 thumbnail.
[Rainmeter]
Update=1000
[MeasureQuote]
Measure=Plugin
Plugin=QuotePlugin
PathName=%HOMEDRIVE%%HOMEPATH%\My Documents\My Pictures\
Subfolders=1
FileFilter=*.jpg;*.gif
[MeterQuote]
Meter=IMAGE
X=0
Y=0
W=200
H=200
MeasureName=MeasureQuote
Plugin-RecycleManager
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:
- COUNT - The number of items in the recycle bin.
- 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
[Rainmeter]
Update=1000
[MeasureMyBin]
Measure=Plugin
Plugin=RecycleManager
RecycleType=SIZE
UpdateDivider=5
[MeterBin]
Meter=STRING
MeasureName=MeasureMyBin
X=0
Y=0
W=100
H=25
AutoScale=1
Text="TrashSize: %1"
LeftMouseUpAction=!CommandMeasure "MeasureMyBin" "OpenBin"
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:
- GDI - Measures the number of GDI objects.
- USER - Measures the number of user objects.
- HANDLE - Measures the number of open handles.
- WINDOW - Measures the number of windows in the system.
- ProcessName
The name of the process that is measured. E.g. ProcessName=Rainmeter.exe would measure only Rainmeter's resources. Leave this empty if you want to measure all resources in the system. This has no effect if the ResCountType=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:
- TEMPERATURE - Returns the temperature value.
- FAN - Returns the fan speed.
- VOLTAGE - Returns the voltage value.
- SpeedFanNumber
This defines the index for the returned value. The indexing starts from 0 so if you want to
return e.g. the second temperature value use SpeedFanNumber=1.
- SpeedFanScale
This defines the temperature unit of measure when SpeedFanType is set to TEMPERATURE.
- C - Returns the temperature in Centigrade.
- F - Returns the temperature in Fahrenheit.
- K - Returns the temperature in Kelvin.
Note: This requires SpeedFan to be set to return Centigrade. Otherwise the returned value will be incorrect.
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):
- COMPUTER_NAME
- USER_NAME
- SCREEN_SIZE - The resolution of the primary display monitor in a string of the form "width x height"
- WORK_AREA - The size of the client area of the primary display monitor in a string of the form "width x height"
- OS_VERSION
- OS_BITS
- ADAPTER_DESCRIPTION (SysInfoData specifies the adapter)
- NET_MASK (SysInfoData specifies which net mask, if there are several)
- IP_ADDRESS (SysInfoData specifies which ip address, if there are several. 0-999 for installed, 1000-1999 for active)
- GATEWAY_ADDRESS (SysInfoData specifies the adapter)
- HOST_NAME
- DOMAIN_NAME
- DNS_SERVER
Numeric values:
- SCREEN_WIDTH (SysInfoData specifies which monitor, if there are several)
- SCREEN_HEIGHT (SysInfoData specifies which monitor, if there are several)
- VIRTUAL_SCREEN_TOP - Y-Coordinate of the upper left corner of the virtual screen. Use SysInfoData
to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
- VIRTUAL_SCREEN_LEFT - X-Coordinate of the upper left corner of the virtual screen. Use SysInfoData
to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
- VIRTUAL_SCREEN_WIDTH - Width of the virtual screen which encompases all display monitors.
- VIRTUAL_SCREEN_HEIGHT - Height of the virtual screen which encompases all display monitors.
- WORK_AREA_TOP - Y-Coordinate of the upper left corner of the client area. Use SysInfoData
to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
- WORK_AREA_LEFT - X-Coordinate of the upper left corner of the client area. Use SysInfoData
to specify the monitor. These coordinates are relative to the primary monitor and can be negative.
- WORK_AREA_WIDTH - Width of the client area of the primary display monitor. Use SysInfoData
to specify a different monitor, if there are several.
- WORK_AREA_HEIGHT - Height of the client area of the primary display monitor. Use SysInfoData
to specify a different monitor, if there are several.
- NUM_MONITORS - The number of display monitors currently active.
- SysInfoData
Additional data that some of the SysInfoType items require. This is always a number.
For SysInfoTypes which use SysInfoData to specify a monitor, the appropriate value to pass can be found
by opening the Windows Display Properties dialog. It is important to note that "1" is not always the primary
display monitor.
Plugin-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
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"
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
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="&":"&"
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
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:
- 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
- QUALITY - A percentage value of the maximum dBm signal strength for your current connection
- ENCRYPTION - The cipher algorithm being used for your current connection. Possible values are: NONE, WEP40, TKIP, AES, WEP104, WPA_GROUP, WEP, ??? (for unknown)
- AUTH - The authentication algorithm being used for your current connection. Possible values are: Open, Shared, WPA_NONE, WPA_Enterprise, WPA_Personal, WPA2_Enterprise, WPA2_Personal, ???
- PHY - 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.
- 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:
- 0 - SSID
- 1 - SSID @band
- 2 - SSID (Encryption:Authentication)
- 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.
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
[Rainmeter]
BackgroundMode=2
SolidColor=0,0,0,150
Update=1000
; Returns the name of the current sound device and percent volume level
[MeasureWin7Audio]
Measure=Plugin
Plugin=Win7AudioPlugin
; Display the current sound device name
[MeterDeviceName]
Meter=String
MeasureName=MeasureWin7Audio
X=5
Y=0
W=200
H=20
FontFace=Trebuchet MS
FontSize=11
FontColor=255,255,255,255
StringAlign=LEFT
AntiAlias=1
ClipString=1
; Toggle to the next installed sound device (wraps back to first)
[MeterChangeDevice]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=220
Y=-3
Text="+"
LeftMouseUpAction=!CommandMeasure "MeasureWin7Audio" "ToggleNext"
; Change the volume down by 10%
[MeterVolumeDown]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=0
Y=20
Text="<<"
LeftMouseUpAction=!CommandMeasure "MeasureWin7Audio" "ChangeVolume -10"
[MeasureVolBarBackground]
Measure=Calc
Formula=1
[MeterVolBarBackground]
Meter=Bar
MeasureName=MeasureVolBarBackground
BarOrientation=Horizontal
BarColor=150,150,150,255
W=60
H=6
X=25
Y=29
; Displays the current volume percentage on a Bar meter
[MeterCurrentVolumeBar]
Meter=Bar
MeasureName=MeasureWin7Audio
BarOrientation=Horizontal
W=60
H=6
X=25
Y=29
; Change the volume up by 10%
[MeterVolumeUp]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=83
Y=20
Text=">>"
LeftMouseUpAction=!CommandMeasure "MeasureWin7Audio" "ChangeVolume 10"
[MeasureVolPercent]
Measure=Calc
Formula=MeasureWin7Audio
; Displays the percentage volume level as text
[MeterVolPercent]
Meter=String
MeasureName=MeasureVolPercent
X=55
Y=40
W=110
H=15
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Center
AntiAlias=1
Text=%1%
; Toggles "mute" for the current device
[MeterVolToggleMute]
Meter=String
X=5
Y=60
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Left
AntiAlias=1
Text=MUTE
LeftMouseUpAction=!CommandMeasure "MeasureWin7Audio" "ToggleMute"
; Set volume for current device to 50%
[MeterVolSet50%]
Meter=String
X=78
Y=60
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Left
AntiAlias=1
Text=50%
LeftMouseUpAction=!CommandMeasure "MeasureWin7Audio" "SetVolume 50"
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))
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).
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:
- CENTER
- TILE
- STRETCH
- FIT (on Windows 7 and above only)
- FILL (on Windows 7 and above only)
Application
- !About (TabName)
Opens the About dialog. The optional parameter TabName can be set to:
- Log (default)
- Measures
- Plugins
- Version
- !Manage (TabName)
Opens the Manage dialog. The optional parameter TabName can be set to:
- Skins (default)
- Themes
- Settings
- !Log [message] (ErrorType)
Writes a message to the error log. The optional parameter ErrorType can be set to:
- NOTICE (default)
- ERROR
- WARNING
- 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.
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).
- !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 bang functionality
- 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.
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.
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)
return '99' - MeasureScript will have a numerical value of 99 and a string value of "99"
return 'Ninety Nine' - MeasureScript will have a string value of "Ninety Nine"
Example:
function Update()
return 'Hello, world!'
end
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)
Executes the bang in Rainmeter, using zero or more comma separated parameters to the bang.
SKIN:Bang('!SetOption', 'Meter1', 'FontSize', '15')
- 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')
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 defaultValue if 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.
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.
- Previously, a bang was sent to Rainmeter using
SKIN:Bang('full bang string with parameters'). This has been replaced with a simpler comma separated command format SKIN:Bang('!BangName', 'arg1', 'arg2') which should be used in all new skins.
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 and Template\Plugins\64bit folders and copy the plugin(s) into the appropriate folder.
Template\
- Plugins\
-- 32bit\
--- MyPlugin\
---- myplugin.dll
-- 64bit\
--- MyPlugin\
---- myplugin.dll
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 the Template\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.
- To open an installed theme, set the following (replacing NameOfTheme with the the theme name):
LaunchType=Theme
LaunchCommand=NameOfTheme
- 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).
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.