RManual

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 79

Manual

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

Installation
Download the latest release or beta version from http://rainmeter.net. The installer (.exe) allows you to install both 'standard' and 'portable' installations. Both 32bit and 64bit installations are done with the same installer. If you are running on a 64bit version of Windows, you will be asked if you wish to install 64bit or 32bit Rainmeter. If the installer detects a previous version of Rainmeter on your system, the same architecture version will automatically be installed. If you wish to change from 32bit to 64bit, you should uninstall Rainmeter first. Rainmeter will detect if you require either the C++ runtime libraries or the .NET libraries. The C++ runtimes are required to use Rainmeter. Chances are you already have them, but if not, Rainmeter will download and install them. The .NET libraries are required to use any of the C# plugins which come with Rainmeter. If you are running on Windows XP you will need at least Windows XP Service Pack 2 to install the .NET libraries. If you elect not to install the .NET files, you will not be able to use any plugins written in C#. Rainmeter is fully compatible with Windows XP, Vista, and Windows 7. The file which Rainmeter uses to keep track of the skins you have loaded and how they are configured (Rainmeter.ini) is stored in your "Application Data" folder, and all Rainmeter "skins" are stored in your "My Documents" folder.

Normal Installation
Run the installer. By default Rainmeter will install in "C:\Program Files\Rainmeter", but you may install it in any folder you wish. The installer presents you with a set of options allowing you to create Start Menu and desktop shortcuts, have Rainmeter automatically start with Windows, and install Rainmeter for all users. When Rainmeter starts the first time, it will install the default skins and themes in the proper folder locations and load the illustro suite of skins.

Portable Installation
If you wish to run Rainmeter from one folder, so it can be easily taken with you or even run directly from a removable drive, all you need to do is download the latest installer and select 'Portable Install' during the install process. You will be prompted to browse for a location (for which you have full read and write access) to install Portable Rainmeter. After the install, you may use the program normally, but can easily take the application "on the road" by copying the entire \Rainmeter folder and subfolders. Note that if you do a portable install, you are responsible for ensuring you have the appropriate C++ and .NET runtime libraries installed on your system.

Silent Installation (advanced)


Rainmeter can be installed silently (i.e. without user interaction) starting from version 2.1 beta. This is useful, for example, when deploying Rainmeter during the initial Windows setup. View switches and return values.

Default File Locations


Program files: Windows XP: C:\Program Files\Rainmeter Windows Vista and later: C:\Program Files\Rainmeter Skins: Windows XP: C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins Windows Vista and later: C:\Users\YourName\My Documents\Rainmeter\Skins Rainmeter.ini and themes: Windows XP: C:\Documents and Settings\YourName\Application Data\Rainmeter Windows Vista and later: C:\Users\YourName\Appdata\Roaming\Rainmeter

Uninstalling
If you installed Rainmeter with the installer you can uninstall it from "Add or Remove Programs". If you installed Portable Rainmeter, just delete the folder you browsed for during the install process. Ensure that Rainmeter is not running when uninstalling.

Settings
There is no fancy settings editor, so you need to change the settings with your favorite text editor. The general configuration settings are in a file named Rainmeter.ini. The skin settings are in the skin's respective .ini files. Rainmeter.ini is in the following location: Windows XP: C:\Documents and Settings\YourName\Application Data\Rainmeter Windows Vista and later: C:\Users\YourName\Appdata\Roaming\Rainmeter The file can be edited by using "Edit Settings" from the Rainmeter context menu or Manager. 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 ). 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. TrayIcon Set to 0 to get rid of the tray icon. TrayExecuteL, TrayExecuteM, TrayExecuteR, TrayExecuteDL, TrayExecuteDM, TrayExecuteDR Executes a command or !bang when the tray icon is (double)clicked with the mouse. L, R and M denote left, right and middle buttons respectively. Note that TrayExecuteR will override the normal context menu in the tray (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 on top 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 (i.e. their value cannot be manually changed). These variables may be used anywhere, including within Rainmeter.ini. Note: Built-in Rainmeter variables that stand for a path already contain a trailing slash. #CRLF# - Line break #PROGRAMDRIVE# - Drive Rainmeter is installed to (e.g. C: or \\server\Users\ ) #PROGRAMPATH# - Rainmeter program folder (e.g. C:\Program Files\Rainmeter\ ) #SETTINGSPATH# - Folder of Rainmeter.ini (e.g. %APPDATA%\Rainmeter\ ) #SKINSPATH# - Skins folder (e.g. C:\Users\YourName\My Documents\Rainmeter\Skins\ ) #PLUGINSPATH# - Plugins folder (e.g. C:\Program Files\Rainmeter\Plugins\ ) #ADDONSPATH# - Addons folder (e.g. C:\Program Files\Rainmeter\Addons\ ) #CURRENTPATH# - Path of current skin (e.g. C:\PathToSkinsFolder\illustro\Clock\ ) #CURRENTFILE# - Name of current skin (e.g. Clock.ini ) #CURRENTCONFIG# - Config name of current skin (e.g. illustro\Clock\ ) #ROOTCONFIGPATH# - Highest-level folder under \Skins of current skin (e.g. illustro\ ) #CURRENTSECTION# - Current [Section] name. Note that if used in [Variables], it will return "Variables" wherever used. #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 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 (note that they cannot be used elsewhere like under the [Rainmeter] section): #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 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. This allows you, for example, to supply localized skins or different variations of some skin. The skin's 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: While you can put sections in any order you wish, it is important to understand that 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: o 0 - Image as defined by Background o 1 - Transparent (default if no Background image defined) o 2 - Solid color o 3 - Scaled background image o 4 - Tiled background image ImageCrop Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following: o 1 - Top left o 2 - Top right o 3 - Bottom right o 4 - Bottom left o 5 - Center (both W and H) Greyscale If set to 1, the image will be greyscaled. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Flips the image. Valid values are: o NONE o HORIZONTAL o VERTICAL o BOTH - flips both horizontally and vertically ImageRotate Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. BackgroundMargins Defines the margins for the background image that are not scaled when the BackgroundMode is set to 3. E.g. BackgroundMargins=10,10,10,10 SolidColor If the background mode is set to 2, this defines the color of the background. SolidColor2 If the background mode is set to 2, this defines a second color for the background to create a gradient.

GradientAngle If the background mode is set to 2, this defines the angle for the color gradient. The angle is defined in degrees. BevelType If the background mode is set to 2, this draws a beveled edge around the solid background. o 0 - No bevel o 1 - Raised o 2 - Sunken Blur If set to 1, enables Aero blur on supported systems. BlurRegion, BlurRegion2, ... If BlurRegion is not specified, the blur is applied to the entire background of the skin. BlurRegion is defined as follows: o 1,x1,y1,x2,y2 - Rectangular region o 2,x1,y1,x2,y2,r - Rectangular region with rounded corners of radius r o 3,x1,y1,x2,y2 - Elliptic region within the boundaries of the rectangle (x1,y1) are the coordinates for the top-left corner while (x2, y2) are the coordinates for the bottom-right corner. If the first parameter is set to 0, that specific BlurRegionN is ignored. A more detailed description with examples is available at Aero Blur.

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. 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 Executes a command or !bang that is executed when the config is refreshed. This includes when the config is opened the first time. Author The name and email of the author of the skin. 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 information about the skin itself. Alone, metadata is useful as a consistent and reliable place to learn about a skin, and how it is meant to be used and configured. Metadata is also displayed in the Manage dialog. It is important for all metadata to be written in the [Metadata] section using a specific set of keys. As a skin developer, you should provide appropriate values for all of these keys.

Options
Name The name of the skin, including parent suite and variant subname, if applicable. 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
The variables are keywords that are replaced in other settings. These can be used, e.g., to gather user defined values to the top of the config-file so that they can be easily changed. To define a variable, you must set a value for it in the [Variables] section of a skin or @Include file. To use a variable in a meter or measure, just surround the keyword with # characters. Variables are defined as follows under the [Variables] section:
VariableName=Value

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


#VariableName#

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

[SomeMeter] FontSize=#Size#

[SomeMeter2] FontSize=#Size#

You can also tell Rainmeter to use the literal text of the keyword by adding asterisks inside the tag, as follows:
#*VariableName*#

This can be used e.g. in a bang to set the text of a String meter. Instead of only using the value of the variable at the time of the bang, this will send the keyword itself, and the receiving meter will update accordingly. Note: There are several pre-defined variables you can use anywhere in Rainmeter.

Skins-AeroBlur
Allows users on Windows Vista or Windows 7 to enable "Aero" blur effects on skins. The Windows desktop background behind a skin with some level of transparency set will be "blurred". This effect uses the built-in Windows Aero effects, including changing colors to match your personalization settings for the Windows theme color. Users on Windows XP or those with Aero or transparency in Aero turned off will see no effect from this functionality. These options must be in the [Rainmeter] section of the skin.

Options
Blur Set to 1 to enable blur (default 0). If no BlurRegions are specified, the entire config background region is blurred. BlurRegion, BlurRegion2, ... Defines the area and shape of the region of the skin to be blurred. The setting is in the format BlurRegion=TYPE, TOPx, TOPy, BOTTOMx, BOTTOMy (,RADIUS) The first parameter, the type of the blur region, can be set to: o o o o 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: o TOPx - Top left horizontal point in the skin o TOPy - Top left vertical point in the skin o BOTTOMx - Bottom right horizontal point in the skin o BOTTOMy - Bottom right vertical point in the skin o RADIUS - Radius of the corners of rounded rectangles (for use with type 2 only) Formulas and variables can be used, although dynamic variables and measures aren't supported in the [Rainmeter] section. For example:
BlurRegion=1,#MyVar1#,#MyVar2#,(10 + 10),(#SCREENAREAHEIGHT# - 30)

Bangs
!ShowBlur / !HideBlur / !ToggleBlur These effect ALL BlurRegions at once. It is used to turn on and off the blur effect in general. !AddBlur "region" / !RemoveBlur "region" These are used to add or remove blur regions. The "region" argument is identical to BlurRegion settings. Example Skin

Skins-DynamicVariables
By setting DynamicVariables=1 in a measure or meter, the measure or meter will respond to variable changes by the !SetVariable bang. Additionally, if dynamic variables is enabled, a measure's name can be used as a variable by enclosing it in square brackets (e.g. [MyMeasure] ). Dynamic variables can be used in any meter or measure, but not in the [Rainmeter] section. Note: There is also currently no support for dynamic variables in plugins, such as WebParser or QuotePlugin. 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
Loads an external file in the .ini format so an author can have skin, config, suite or Rainmeter-wide variables, or even shared measures. The loaded file is treated as if the contents were included in the actual skin .ini file. The path used is relative to the current .ini file. The @include statement must be used under some section (i.e. it cannot be the first thing in the file). Most often it is used in the [Variables] section of a skin, to allow sharing of common variables between skins. If there are multiple included files within the same section of the .ini file, each @include statement should be numbered as follows:
@include1=... @include2=... @include3=...

Remember that since the included file is being treated as part of the .ini file, it must also have the proper .ini formatting (i.e. [section] parameter=value ). If the included file is not itself a fully working skin, then it should not use the .ini extension. Doing so may cause issues with Rainmeter's context menu, as well as some third-party applications. A common alternative is the .inc extension The included file is read at the position where the @include is defined so the values from the included file with the same name as those from the .ini file will overwrite the values from previous sections and vice versa. Note: 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#

Skins-MeterMeasureGroups
Measures and meters can be categorized into groups to allow easier control over a set of meters and measures with the Groupbangs!HideMeterGroup). To add a measure or meter to a group, simply add the Group= option. Any number of groups may be added to a section, all of which must be separated by a vertical bar (i.e. | ).. Example: In this example, both of the meters belong to the "CPU" group. In addition, MeterCPUText belongs to the "Strings" group and MeterCPUBar in turn belongs to the "Bars" group.
[MeterCPUText] Meter=String MeasureName=MeasureCPU Group=CPU | Strings

[MeterCPUBar] Meter=Bar MeasureName=MeasureCPU Group=CPU | Bars

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

Measures
Measures are sections that determine what information Rainmeter should retrieve. Within a .ini file, names for measures must be unique and they must not have spaces. The meters use these section names to bind to the measures and display the results.

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

Measures-GeneralSettings
These general settings apply to all measure types.

Options
Measure This defines what is measured. The valid values are: o CPU - Measures total load from CPU or individual cores. o Memory - Measures overall memory utilization. o PhysicalMemory - Measures allocated physical memory. o SwapMemory - Measures virtual memory allocation. o Uptime - Measures how long computer has been on. This works only in a STRING meter. o NetIn - Measures incoming network traffic. o NetOut - Measures outgoing network traffic. o NetTotal - Measures total network traffic. o FreeDiskSpace - Measures free diskspace. o Plugin - Measure is defined by an external plugin. o Registry - Measures registry values. o Time - Measures time and date. o Calc - Calculates formulas. InvertMeasure If set to 1, the measured value is inverted. For example, you can measure the allocated disk space instead of free space. Disabled If set to 1, the measure is never updated. A disabled measure always returns zero as its value in numerical contexts (e.g. when used in a Calc formula or with IfActions), but may still return a textual value (e.g. when used in String meters). UpdateDivider This value modifies the update rate of the measure. The global Update value (set in the [Rainmeter] section) is multiplied by this number to determine the update rate for the measure. For example, if the Update=1000 and UpdateDivider=30 , the measure is updated every 30 seconds. The default value is 1. A setting of -1 will disable ongoing updates for the measure, so it will only be executed once on load or refresh. MaxValue The maximum value the measure can have. The default is 1.0. 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. 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.

Substitute A list of comma separated value pairs that can be used to change certain values to another. You must use quotes around the values! E.g. Substitute="cat":"dog" would change all "cat" to "dogs" in the measured value. 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. This 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", resulting in "This Works":
"\d\d":"It Works","^..":"This"

Mask a IP address:
"^(\d{1,3}).(\d{1,3}).(\d{1,3}).\d{1,3}$":"\1.\2.\3.***"

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


"^(.{10,}).+$":"\1..."

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. 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. IfBelowAction A bang or command that is executed when the measure goes below the value defined in IfBelowValue. The action is executed only at the moment when the measure falls below the value, so it needs to go above the defined value before the action is executed again. IfBelowValue The value used by IfBelowAction. IfEqualAction A bang or command that is executed when the measure is equal with the value defined in IfEqualValue. The action is executed only once when the measure is equal to the value, so it needs to go above or below the defined value before the action is executed again. The value is rounded to full integer. IfEqualValue The value used by IfEqualAction. Example Skin

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.

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

Logical Operators
<> (not equal) = (equal to)

> (greater than) < (less than) && (logical and) || (logical or)

Functions
ATAN(x), ASIN(x), ACOS(x), COS(x), SIN(x), TAN(x) - Standard trigonometric functions ABS(x) - Absolute value of x. EXP(x) - Returns ex. LOG(x) - Base 10 logarithm of x. LN(x) - Natural logarithm of x. SQRT(x) - Square root of x. SGN(x) - Return 1 if x is positive, -1 if x is negative. FRAC(x) - Fractional, or decimal, part (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.

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

Conditional Operator
<condition> ? <expr. if true.> : <expr. if false.>

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

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

Other Bases

The Calc measure allows numbers to be represented numbering systems other than decimal. To use another base, prefix the number with a zero then the letter representing the system you wish to use. The following are accepted prefixes, which are case (lower) sensitive: 0b - Binary number (base 2) (ex: 0b110110 - returns 54 in decimal) 0o - Octal number (base 8) (ex: 0o123 - returns 83 in decimal) 0x - Hexadecimal number (base 16) (ex: 0xF1 - returns 241 in decimal) Example skin

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

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

Measures-FreeDiskSpace
FreeDiskSpace returns usage statistics for the selected drive.

Options
Drive This is the drive for which the disk space is measured. (eg: "C:") Total If set to 1 this returns the total size of the drive. Label If set to 1 this returns the label of the drive. Type If set to 1 this returns the type of the drive. String >> numeric return: o Error >> 0 o Removed >> 1 o Removable >> 3 o Fixed >> 4 o Network >> 5 o CDRom >> 6 o Ram >> 7 IgnoreRemovable If set to 1 (default), removable drives are ignored. If set to 0, removable drives are measured. Be sure to set IgnoreRemovable=0 if you want to measure a USB drive. Note: FreeDiskSpace does not support CD or DVD drives other than Type and Label.

Example Skin

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

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

Measures-NetInOut
Measures various types of network traffic.

NetIn
Measures incoming network traffic. NetInSpeed The maximum speed of your network connection input. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input. Watch out for peaks. TrafficAction Action to be executed when a certain amount of data has been downloaded. TrafficValue The value used by TrafficAction. Interface The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the first NIC, 2 the second, etc. Cumulative If set to 1, the measure gathers cumulative value (i.e. adds the measured values together). This can be used to measure the total amount of transferred data during certain period of time.

NetOut
Measures outgoing network traffic. NetOutSpeed The maximum speed of your network connection output. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input. TrafficAction Action to be executed when a certain amount of data has been uploaded. TrafficValue The value for the TrafficAction.

Interface The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the first NIC, 2 the second, etc. Cumulative If set to 1, the measure gathers cumulative value (i.e. adds the measured values together). This can be used to measure the total amount of transferred data during certain timeperiod.

NetTotal
Measures total network traffic. NetTotalSpeed The maximum speed of your total network connection. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input. TrafficAction Action to be executed when a certain amount of data has been uploaded and downloaded. TrafficValue The value for the TrafficAction. Interface The index of the measured NIC. If this is set to 0 (default) all interfaces are added together. Value 1 means the first NIC, 2 the second, etc. Cumulative If set to 1, the measure gathers cumulative value (ie: adds the measured values together). This can be used to measure the total amount of transferred data during a certain time period. Example Skin

Measures-PhysicalMemory
Measures the amount of physical RAM memory free in bytes.

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

Measures-Plugin
A plugin in Rainmeter is a dynamic link library (.dll) program specifically written to provide additional functionality not built into Rainmeter. A plugin is used in Rainmeter with the specific measure type Measure=Plugin. Each plugin in turn has its own settings that must be placed in this section. See Plugins to learn more on the plugins included with Rainmeter and what settings are required for each. You may also use a 3rd-party plugin developed for Rainmeter but not included with the installation. Simply place the new plugin .dll file into the Plugins folder under the location of your Rainmeter.exe and the new plugin can be used like any of the default ones. Note: Be sure that the 3rd-party plugin you add was compiled for the same architecture version of Rainmeter (32bit or 64bit) as the version

you are using. You may not use a 32bit plugin with 64bit Rainmeter or a 64bit plugin with 32bit Rainmeter.

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

Measures-Registry
Provides a way to read data from the Windows Registry.

Options
RegHKey The name of the HKEY. Possible values are: o HKEY_CURRENT_CONFIG o HKEY_CURRENT_USER o HKEY_LOCAL_MACHINE o HKEY_CLASSES_ROOT o HKEY_PERFORMANCE_DATA o HKEY_DYN_DATA RegKey The name of the registry key. RegValue The name of the registry key's value. Only string and long values are supported.

Registry data types


If you open Regedit.exe to the location you are trying to read, you will notice the second column in the right pane is called "Type". There are several different types, but the two most common - and the two supported by Rainmeter - are REG_SZ and REG_DWORD. If the value is of type REG_SZ it means it is a string. If it is REG_DWORD it is a number. Many of Rainmeter's meter types require a number as input rather than a string. This means that if the value you are trying to read is of type REG_SZ, meters like Line, Histogram, Bar, etc. will not recognize the value. Even if the value is entirely numeric, it will still be read as a string. Numeric string values from the registry can be used as a number if you convert them with a Measure=Calc.
[MeasureRegistry] Measure=Registry ...

[MeasureStringToNum] Measure=Calc

Formula=[MeasureRegistry] MinValue=0 MaxValue=100 DynamicVariables=1

Example Skin

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.

Bangs
The Script measure can be controlled with the !CommandMeasure bang. The argument must be valid Lua code and will be executed in the context of ScriptFile. A full explanation of how to use this measure type with the Lua scripting language can be found at Lua Scripting. This guide should be carefully read before creating a skin using the Script measure.

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

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

Measures-Time
Measures the current time/date.

Options
Format The format how the time is written (e.g. Format="%H:%M:%S" ). You can also use "locale-time" and "locale-date" to use the format that is used currently in Windows. TimeZone The timezone value (e.g. TimeZone=+2.0 ). You can use also fractional values. If this is not given the local time is used. DaylightSavingTime If set to 1, the daylight saving time is applied to the time (it depends on your local time). This is only used if the TimeZone has been set.

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

Measures-UpTime
Returns the amount of time since the last restart of the computer.

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

o %4 - Days o %3 - Hours o %2 - Minutes o %1 - Seconds o !i! - Putting this after the format code shows the numbers with no leading zeros o !02i! - Putting this after the format code shows the numbers with leading zeros AddDaysToHours If %4 (days) is not included in the Format statement, %3 (hours) will be incremented by days * 24. To disable this, set AddDaysToHours to 0 (default 1). Example Skin

Meters
Meters are the sections that tell Rainmeter how to display information. Each meter needs to have a unique name, which should be put inside [Square Brackets]. It does not matter what the name is as long as there are no spaces and it is not used elsewhere within the same.ini file. Meters by default are evaluated and displayed in the order they are in the skin .ini file. Settings like W= and H= and X= and Y= can be used to size and position meters in the context of the skin 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

Meters-GeneralSettings
The following are setting which apply to all meter types.

Options
Meter Indicates the type of the meter. The valid values are: o BAR o BITMAP o BUTTON o HISTOGRAM o IMAGE o LINE o ROTATOR o ROUNDLINE o STRING MeterStyle The name of a [Section] containing settings for meter attributes you wishto share with multiple meters. See MeterStyles for details.

MeasureName The name of the measure that this meter displays the returned value for. This setting is not required if the meter is not going to use values from a measure, such as a String or Image meter not needing information returned by a measure. X The X-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g. X=5r). You can also use capital R which makes the position relative to the right edge of the previous meter. Y The Y-position of the meter inside the window. The coordinates can be made relative to the previous meter by adding 'r' to the end of the number (e.g. Y=-10r). You can also use capital R which makes the position relative to the bottom edge of the previous meter. W The width of the meter. It is not necessary to define this if the width can be calculated from an image or if you are using a STRING meter. If you use the desktop as background for the Rainmeter you should always define the correct height and width for the meters or the window's dimensions might be calculated incorrectly. H The height of the meter. This can also be left undefined under the same conditions as W. Note: You can use math formulas with X, Y, W and H. In that case the value must be surrounded with parenthesis (e.g. Y=(300/3) ). Hidden If set to 1, the meter is hidden. UpdateDivider This value modifies the update rate of the meter. The global Update value (set in the [Rainmeter] section) is multiplied by this number to determine the update rate for the meter. For example, if the Update is set to 1000 and the UpdateDivider is 30, the meter is updated every 30 seconds. The default value is 1. SolidColor The color of the meter's background. The value is given in RGB(A) format: Red, Green, Blue and an optional Alpha value. It can be written either as 3 or 4 comma-separated values from 0 to 255 (e.g. SolidColor=255,0,0,128 ), or in hexadecimal format (e.g. SolidColor=FF000080 ). If it is not set, the background is completely transparent. SolidColor2 An optional second color for the meter's background to create a gradient. This follows the same format as SolidColor. GradientAngle The angle of the meter's background color gradient. The angle is defined in degrees. BevelType This draws a beveled edge around the solid background. o 0 - No bevel (Default) o 1 - Raised o 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 he 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

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 isFontForge, but this must be run in a unix environment and while it can be done with the CygWin unix-in-windows utility, this is NOT for the faint of heart or new Windows user. You must use the "Family Name" of the font. This can be found by double clicking the font .ttf file and at the very top in the Windows font viewer see the "Font Name:" at the top left. Now, this also has a "gotcha". Many fonts have subfamily names that are appended on the "Family Name" in Windows font viewer. The Font Name: may be MyFont-Bold or MyFont Bold or MyFont BoldItalic" You should not use these subfamily postfixes when identifying the font in Rainmeter with FontFace=xxx. This can involve a bit of trial and error, but in this example FontFace=MyFont is the mostly likely correct entry. Most, but not ALL fonts can be modified at run time in Rainmeter with StringStyle, StringEffect, etc. If you have problems with a font using these settings, try removing them to see if that is the issue. There are a couple of ways Rainmeter will react if it hates your font for some reason. It may give no error, but display the default Arial instead of your font. This will be what happens if you use a .otf font, or if you use the wrong "Family Name" for the font. It gives an error, like "Can't create font" and the meter fails entirely. This generally means you have used an attribute like StringStyle=Bold on a font that doesn't support it, or there is just a problem with the font itself that causes Rainmeter to fail in loading / using it.

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

Meters-ToolTips
This creates a ToolTip which appears when you hover the mouse over the meter. You must be careful not to overlap two meters with ToolTips as both will be displayed if the mouse is over both at the same time.

Options
ToolTipText (required) The text you wish displayed. This can include dynamic variables and measures as long as DynamicVariables=1 is set. If you wish to spread the text across multiple lines, add the built-in variable #CRLF# at the point you want a line break. This setting must be defined to use a ToolTip. Values of MeasureName can also be used in the %1, %2 etc. as appropriate for various meter types: o Line, String: %1, %2, %3, ... o Histogram: %1, %2 o Others: %1 ToolTipTitle (optional) This sets a bold title for the tooltip. This can only be one line, so #CRLF# will not work here. ToolTipIcon (optional) This specifies an Icon to be placed in the tooltip. This can be the full path to a .ico file or one of these preset icons: o INFO o WARNING o ERROR

o QUESTION o SHIELD (Windows Vista and newer) To use an icon in your tooltip you must also define ToolTipTitle. Otherwise the icon will not be displayed. ToolTipType (optional) This defines the style of the tooltip, by default, this is 0, a regular tooltip. If set to 1 the tooltipwill 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. 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 1 0 |0.5 0 25| 1 0 |

| = |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
BarColor The color of the bar. The colors are given in the same manner as with SolidColor: RGB(A). BarImage The image that is used behind the bar. This can be used instead of the BarColor. BarBorder If an image is used, this determines the number of pixels on either side of the image that are always drawn (i.e. top and bottom margins for vertical bars, left and right margins for horizontal bars). ImageCrop Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following: o 1 - Top left o 2 - Top right o 3 - Bottom right o 4 - Bottom left o 5 - Center (both W and H) Greyscale If set to 1, the image will be greyscaled. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully

opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. ImageRotate Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. ColorMatrixN The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

ColorMatrix1=1; 0; 0; 0; 0 ColorMatrix2=0; 1; 0; 0; 0 ColorMatrix3=0; 0; 1; 0; 0 ColorMatrix4=0; 0; 0; 1; 0 ColorMatrix5=0; 0; 0; 0; 1

The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (ColorMatrix5) determining offset values that are added directly to the color. (ex: ColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). More information on ColorMatrix is available at ColorMatrix Unleashed. ImageAlpha Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will override the Alpha parameter in the ImageTint setting. BarOrientation The orientation of the bar. Valid values are HORIZONTAL or VERTICAL. Flip Set to 1 to flip the direction of the bar. Example Skin

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

Options

BitmapImage This is the name of the image that holds the image frames. The images can be laid horizontally or vertically in the bitmap. The orientation is determined automatically form the height or the width of the bitmap (whichever is larger). Also, the size of one frame is calculated automatically so you need to crop the image so that there is no extra space around the frames. The image can be any supported format: bmp, gif, jpg or png. If BitmapExtend is not 1, then bitmap meters require that the measure being used is from 0.0 to 1.0 or has both MaxValue and MinValue set. BitmapFrames The number of frames in the image. BitmapTransitionFrames The number of transition frames per value. The transition frames are frames which are displayed when the meter's value changes. The same number of transition frames must be used after each regular frame. The TransitionUpdate setting in the [Rainmeter] section determines the rate at which the frames are displayed during the transition. The total duration of the transition animation is therefore TransitionUpdate * BitmapTransitionFrames. Note that BitmapFrames will always define the total number of frames in the bitmap, including the transition frames. So, for example, if the bitmap has 10 values and each transition consists of 4 additional frames, then BitmapFrames should be set to 50 and BitmapTransitionFrames to 4. BitmapZeroFrame If set to 1, the first frame is used only when the measured value is zero. Otherwise the frames are linearly determined by the measured value. BitmapExtend If set to 1 the bitmap is extended so display the whole value. For example if you define a bitmap that defines frames from 0 to 9 you can use this to display the measured value as the bitmap numbers. BitmapDigits Number of digits that are drawn. The first frame is used if the value doesn't have as many digits as this defines. Works only when BitmapExtend is set to 1. BitmapAlign Defines the alignment of the bitmap value. Valid values are LEFT, CENTER and RIGHT. Works only when BitmapExtend is set to 1. BitmapSeparation Separation between digits when BitmapDigits is higher than one. This can also be a negative number. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. ColorMatrixN The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

ColorMatrix1=1; 0; 0; 0; 0 ColorMatrix2=0; 1; 0; 0; 0 ColorMatrix3=0; 0; 1; 0; 0

ColorMatrix4=0; 0; 0; 1; 0 ColorMatrix5=0; 0; 0; 0; 1

The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (ColorMatrix5) determining offset values that are added directly to the color. (ex: ColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). More information on ColorMatrix is available at ColorMatrix Unleashed. ImageAlpha Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will override the Alpha parameter in the ImageTint setting. Example Skin

Meter-Button
The button meter cannot be bound to any measure. Its entire purpose is to make the creation of buttons easier. A button can display a normal, clicked and hover state of an image and perform an action automatically. Changes to the button image are applied in the following order: GreyScale -> ImageTint -> ImageFlip.

Options
ButtonImage The name of the button image. The image must have 3 frames which can be set either horizontally or vertically (the orientation is determined by the width and height of the image). The first frame corresponds to he button's normal image. The second frame is shown when the button is clicked. The third frame is shown while the mouse is hovering over the button. More information on creating the bitmap images for buttons here. ButtonCommand The command or !bang that is executed when the button is pressed. Greyscale If set to 1, the image will be greyscaled. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. ColorMatrixN The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

ColorMatrix1=1; 0; 0; 0; 0 ColorMatrix2=0; 1; 0; 0; 0 ColorMatrix3=0; 0; 1; 0; 0 ColorMatrix4=0; 0; 0; 1; 0 ColorMatrix5=0; 0; 0; 0; 1

The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (ColorMatrix5) determining offset values that are added directly to the color. (ex: ColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). More information on ColorMatrix is available at ColorMatrix Unleashed. ImageAlpha Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will override the Alpha parameter in the ImageTint setting. Example Skin

Meter-Histogram
Histograms display values using vertical bars - once per update - on a graph. They require that the measure being used ranges from 0.0 to 1.0 or has both MaxValue and MinValue set. Changes to the images are applied in the following order: ImageCrop -> GreyScale -> ImageTint -> ImageFlip -> ImageRotate.

Options
SecondaryMeasureName or MeasureName2 The name of the secondary measure. This defines the measure for the secondary histogram that is drawn on the same meter. It is not necessary to define this if the other meter is not needed. PrimaryColor Color for the primary histogram. The colors are given in the same manner as with SolidColor. SecondaryColor Color for the secondary histogram. BothColor Color that is used when the primary and secondary histograms are on top of each other. PrimaryImage Name of the image that is used behind the secondary histogram. You can use either colors or images but not both at the same time. So, if you define PrimaryImage you must also define SecondaryImage and BothImage if you have a secondary measure in the same histogram, Not SecondaryColor or BothColor. SecondaryImage Name of the image that is used behind the secondary histogram. BothImage Name of the image that is used when the primary and secondary histograms are on top of eachother.

PrimaryImageCrop, SecondaryImageCrop, BothImageCrop Crops the image. The parameters are PrimaryImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following: o 1 - Top left o 2 - Top right o 3 - Bottom right o 4 - Bottom left o 5 - Center (both W and H) PrimaryGreyscale, SecondaryGreyscale, BothGreyscale If set to 1, the image will be greyscaled. PrimaryImageTint, SecondaryImageTint, BothImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". PrimaryImageFlip, SecondaryImageFlip, BothImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. PrimaryImageRotate, SecondaryImageRotate, BothImageRotate Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. PrimaryColorMatrixN, SecondaryColorMatrixN, BothColorMatrixN The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

PrimaryColorMatrix1=1; 0; 0; 0; 0 PrimaryColorMatrix2=0; 1; 0; 0; 0 PrimaryColorMatrix3=0; 0; 1; 0; 0 PrimaryColorMatrix4=0; 0; 0; 1; 0 PrimaryColorMatrix5=0; 0; 0; 0; 1

The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (PrimaryColorMatrix5) determining offset values that are added directly to the color. (ex: PrimaryColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). More information on ColorMatrix is available at ColorMatrix Unleashed. PrimaryImageAlpha, SecondaryImageAlpha, BothImageAlpha Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will override the Alpha parameter in the ImageTint setting. Autoscale If set to 1, the histogram is automatically scaled to show all the values. Flip If set to 1 the meter is flipped upside-down. Example Skin

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. o You can specify W or H alone with PreserveAspectRatio=1 , and the image will be scaled to the given value, with the other undefined "aspect" being automatically scaled to preserve the aspect ratio. o You can specify both W and H with PreserveAspectRatio=1 , and the image will be scaled by using the larger of the width or height dimensions in the original image, setting that to the user defined value, and setting the other "aspect" to what is needed to preserve the aspect ratio. That way the image will be made to "fit" in the container defined by H and W even if the user doesn't know if the image is originally "portrait" or "landscape" (tall or wide) from the source. o In all cases the image is "centered" in the meter defined by W and H. "Dead space" created by preserving the aspect ratio (much like the black bars on your TV when you watch a widescreen movie on a standard 4:3 screen) is transparent. o Image meters can use [MeasureName] as the value of either W or H or both, and the image scaling is done on each update of the measure used. This means that a refresh is not required to resize an image and dynamic "zooming" of the image can be achieved by using measures to change the size values. ImageCrop Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following: o 1 - Top left o

o 2 - Top right o 3 - Bottom right o 4 - Bottom left o 5 - Center (both W and H) ScaleMargins Allows a definition of margins on an image, where the image will not be scaled by the meter's W and H settings. ScaleMargins=left, top, right, bottom (Example: ScaleMargins=10, 50, 10, 50 )

Note: ScaleMargins is only allowed if Tile and PreserveAspectRatio are not used. Greyscale If set to 1, the image will be greyscaled. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. ImageRotate Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. 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

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. Flip If set to 1 the meter is flipped upside down. Example Skin

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. 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 rotated. ImageCrop Crops the image. The parameters are ImageCrop=X, Y, W, H, Origin . Origin is optional and can be set to one of the following: o 1 - Top left o 2 - Top right

o 3 - Bottom right o 4 - Bottom left o 5 - Center (both W and H) Greyscale If set to 1, the image will be greyscaled. ImageTint The color to tint an image. The colors are given in the same manner as SolidColor: RGB(A). If the alpha value is specified, the image can be made semi-transparent (0 means invisible, 255 mean fully opaque). Default value is white (255, 255, 255, 255) which in effect means "no change". Note: If you combine Greyscale and ImageTint you "recolor" the image to the defined color, if you use ImageTint alone, you "add" the defined color to the image, creating a "tint". ImageFlip Values are NONE, HORIZONTAL, VERTICAL or BOTH. ImageRotate Rotates an image by the defined number of degrees. Negative numbers rotate counter-clockwise. ColorMatrixN The ColorMatrix parameter represents a 5x5 matrix used to manipulate the color values of the image. It is divided into five separate parameters, one for each row, each numbered. The default matrix is as follows:

ColorMatrix1=1; 0; 0; 0; 0 ColorMatrix2=0; 1; 0; 0; 0 ColorMatrix3=0; 0; 1; 0; 0 ColorMatrix4=0; 0; 0; 1; 0 ColorMatrix5=0; 0; 0; 0; 1

The values on the main diagonal are, from top-left to bottom-right: Red, Green, Blue, Alpha and a placeholder. The values represent the percentage of of the particular value present in the image, where 0.0 is none and 1.0 is normal. The remaining entries in the matrix allow a color to have its value modified in terms of another color (ex: the value of Red might have half of the Blue value added), with the entries in the final row (ColorMatrix5) determining offset values that are added directly to the color. (ex: ColorMatrix5=0.5; 0; 0; 0; 1 will add 50% to the red value). More information on ColorMatrix is available at ColorMatrix Unleashed. ImageAlpha Change the opacity of the image. Values range from 0 to 255, where 0 is completely invisible and 255 is completely opaque. If set, this value will override the Alpha parameter in the ImageTint setting. OffsetX X-offset of the center of rotation. OffsetY Y-offset of the center of rotation. StartAngle The start angle for the line. This is in radians and the zero angle at the right. The defualt rotation direction is clockwise. RotationAngle The size of the rotation angle for the line. Use negative value for counter-clockwise rotation. ValueRemainder Use remainder instead of the actual measured value. This can be used to draw analog clock. Example Skin

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

Options
LineWidth The width of the line in pixels LineLength This defines the length of the line. The length is always measured from the center of rotation (no matter what the LineStart value is). ControlLength, LengthShift If ControlLength is set to 1, the measure value controls the LineLength from LineLength to LineLength + LengthShift. LineStart This defines the distance from the center at which the line starts. ControlStart, StartShift If ControlStart is set to 1, the measure controls the LineStart from LineStart to LineStart + StartShift. StartAngle The starting angle for the line. This is in radians and the zero angle is at the right. The default rotation direction is clockwise. ControlAngle, RotationAngle Unless ControlAngle is set to 0, the measure controls the RotationAngle from 0 to RotationAngle. The size of the rotation angle for the line. Use a negative value for counter-clockwise rotation. ValueRemainder Use remainder instead of the actual measured value. This can be used to draw an analog clock. LineColor The color of the line. The colors are given in the same manner as with SolidColor: RGB(A). Solid Set to 1 and the meter will draw a pie-chart instead. Example Skin

Meter-String
String meters display the value of measures as text. A string meter does not necessarily need to have a measure attached to it and can just be a static string of text by using Text=. You can mix the results of measures and static text by using Text= combined with %1, %2 etc. to indicate the value of the measures used by the meter. If you are only displaying the result of a single measure, no Text= statement is needed.

Options
MeasureName, MeasureName2, ... The name of a measure to bind with the meter.

FontColor The color of the text. The colors are given in the same manner as with SolidColor: RGB(A). Prefix String that is displayed before the value. Postfix String that is displayed after the value. FontFace Name of the font. Note that this is not the name of the font's file, but the font itself. Details on using fonts with Rainmeter can be found at A Note on Fonts. FontSize Size of the font. 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: o 0 - Disabled (default) o 1 - Scale by 1024 o 1k - Scale by 1024 (with kilo as lowest unit) o 2 - Scale by 1000 o 2k - Scale by 1000 (with kilo as lowest unit) Percentual If set to 1, the value is displayed as a percentage. NumOfDecimals The number of decimals used in the displayed value. Text The text that is displayed. Use %1, %2, etc. for different measures. ClipString If set to 1 the width of the meter clips the string. An ellipsis (...) is added to the end of the string. Width and height must be specified. If the height is large enough to allow for another row of text, it will wrap the text into two or more lines, instead of using the ellipsis. Angle This defines the angle of the text. The value is given in radians. Note that the size and position of the text is still calculated as if the text were horizontal. Example Skin

Plugins

A plugin in Rainmeter is a dynamic link library (.dll) program specifically written to provide additional functionality not built into Rainmeter. A plugin is used in Rainmeter with the specific measure type Measure=Plugin. Each plugin in turn has its own settings that must be placed in this section. Click on any of the plugins listed on the right to learn more about the plugins included with Rainmeter and what settings are required for each. You may also use a 3rd-party plugin developed for Rainmeter but not included with the installation. Simply place the new plugin .dll file into the Plugins folder under the location of your Rainmeter.exe and the new plugin can be used like any of the default ones. Note: Be sure that the 3rd-party plugin you add was compiled for the same architecture version of Rainmeter (32bit or 64bit) as the version you are using. You may not use a 32bit plugin with 64bit Rainmeter or a 64bit plugin with 32bit Rainmeter. If you are interested in creating a 3rd party plugin for Rainmeter, there are source code templates available for both C++ and C# coders. Further information can be found at Developers.

Plugin-AdvancedCPU
Plugin=AdvancedCPU

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

Options
CPUInclude List of process names that are included in the cpu measuring. The names are separated with semicolon (";"-char). The include list overrides the excludes. CPUExclude List of process names that are excluded from the cpu measuring. The names are separated with semicolon (";"-char). The include list must be empty to exclude something. TopProcess Value 2 returns the name of the process that took the most CPU time since the last update. Value 1 returns the CPU time for that process. Note that this returns CPU time and not the percentage. If you measure the value once per second you can scale the value with (100000 x the number of your CPU cores) to get the percentage but you should note that if the values cannot be measured exactly once per second (like it usually cannot because the timer in Windows is not accurate) you might get values larger than 100%. On the METER displaying the results: Scale=100000 : Single Core Scale=200000 : Dual Core Scale=400000 : Quad Core Example Skin

Plugin-CoreTemp
Plugin=CoreTemp

This plugin can retrieve the values measured by CoreTemp. CoreTemp must be running in the background in order for the plugin to work. A list of supported CPU's is available here.

Options
CoreTempType Defines the return value. Valid values are: o Temperature - Returns the current temperature value. o MaxTemperature - Returns the maximum temperature value between all cores. o BusSpeed - Returns the bus frequency. o BusMultiplier - Returns the bus multiplier. o CpuName - Returns the CPU model name. o CpuSpeed - Returns the core frequency. o TjMax - Maximum allowed temperature rated by the manufacturer. o Load - Returns the core load as percentage. o Vid - Returns the voltage value. CoreTempIndex This defines the index (or core) for the returned value. The indexing starts from 0 so if you want to return the second temperature value use CoreTempIndex=1 . Must be used when returning Temperature, TjMax, and Load. Example Skin

Plugin-FolderInfo
Plugin=FolderInfo

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

Options
Folder Path to the folder to watch. InfoType Defines the return value: o FileCount - Number of found files o FolderCount - Number of found folders o FolderSize - Size of found folders in bytes RegExpFilter The regular expression used for including/excluding counted files. The plugin uses Perl Compatible Regular Expressions, so check the Perl docs for syntax and more info. IncludeSubFolders If set to 1, sub-folders are included in the count. Disabled by default. IncludeHiddenFiles If set to 1, hidden files are included in the count. Disabled by default. IncludeSystemFiles If set to 1, system files are included in the count. Disabled by default. Example Skin

Plugin-InputText
Plugin=InputText

InputText inserts user-supplied text into a 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. While an InputText box is open, no Rainmeter skin will respond to mouse actions.

Although the bang !Refresh would normally only refresh the current skin, InputText bangs are passed through Rainmeter itself, which means that the bang will perform a global refresh instead. To only refresh the skin, use !Refresh #CURRENTCONFIG#. Example Skin

Plugin-iTunes
Plugin=iTunesPlugin

This plugin can be used to remote control iTunes and get information from it. Note: New skins should use the NowPlaying plugin as it supports multiple media players (including iTunes).

Options
DefaultArtwork Sets the default path (relative path to the skin's folder) for artwork returned by Command=GetCurrentTrackArtwork . Command Can be any of the following: Control Bangs: (no return value) o Backtrack - reposition to the beginning of the current track or go to the previous track if already at start of current track o FastForward - skip forward in a playing track o NextTrack - advance to the next track in the current playlist o Pause - pause playback o Play - play the currently targeted track o PlayPause - toggle the playing/paused state of the current track o PreviousTrack - return to the previous track in the current playlist o Resume - disable fast forward/rewind and resume playback if playing

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: o GetSoundVolume - return sound volume between 0 ~ 100 o GetPlayerPosition - return player position in seconds o GetPlayerPositionPercent - return player position between 0 ~ 100 String Values: o GetCurrentTrackAlbum - album o GetCurrentTrackArtist - artist o GetCurrentTrackBitrate - bitrate o GetCurrentTrackBPM - beats per minute o GetCurrentTrackComment - comment o GetCurrentTrackComposer - composer o GetCurrentTrackEQ - EQ preset name o GetCurrentTrackGenre - genre(category) o GetCurrentTrackKindAsString - file description o GetCurrentTrackName - name o GetCurrentTrackRating - rating (0 ~ 100) o GetCurrentTrackSampleRate - sample rate o GetCurrentTrackSize - file size o GetCurrentTrackTime - the length of the track o GetCurrentTrackTrackCount - track count of the album o GetCurrentTrackTrackNumber - track index o GetCurrentTrackYear - year o GetCurrentTrackArtwork - return artwork file path, use in comibnation with DefaultArtwork. o o o o o o o o o o o

Bangs
iTunes can be controlled through !CommandMeasure statements. You can either one of the following methods. Create a separate measure for each command that will be required. To control, execute !CommandMeasure "MeasureName" "" Note that an empty string "" is required when there are no parameters on !CommandMeasure. Send the bang to any iTunes measure with the command as an argument. For example, !CommandMeasure "AnyiTunesMeasure" "NextTrack" The example skin below demonstrates both methods. Example Skin

Plugin-NowPlaying

Plugin=NowPlaying

The NowPlaying plugin is used to control various media players and retrieve track metadata (including album art) from them. IMPORTANT: This plugin uses the the concept of 'main' and 'secondary' measures. To understand the difference, refer to the example skin at the end of this page.

Options
PlayerName The name of the media player (for main measure) or the name of the main measure in square brackets (for secondary measures). For example: Main measure: PlayerName=Winamp Secondary measure(s): PlayerName=[MainMeasureName] PlayerType Defines the return value. Valid values are: o ARTIST - Artist name. o ALBUM - Album name. o TITLE - Track title. o COVER - Path to cover art. o FILE - Path to playing media file. o DURATION - Total length of track in seconds*. o POSITION - Current position in track in seconds*. o PROGRESS - Percentage of track completed. o RATING - From 0 to 5. o REPEAT - 0 if repeat/loop track is off, 1 if on. o SHUFFLE - 0 if shuffle/random tracks is off, 1 if on. o STATE - 0 for stopped, 1 for playing, and 2 for paused. o STATUS - 0 for inactive (player closed) and 1 for active (player open). o VOLUME - From 0 to 100. *: When measures of type DURATION or POSITION are used in STRING meters, the displayed value will be in the formMM:SS. All other meters and measures receive the actual value in seconds. PlayerPath The full path to the player executable (used by the OpenPlayer bang). This should be left blank unless you want to override the default path or if you have a portable installation of the media player. TrackChangeAction A command or a bang that will be executed when the track changes. DisableLeadingZero When set to 1 (default 0), the format of DURATION and POSITION is M:SS instead of MM:SS. This option must be set on the main measure.

Bangs
The media player can be controlled with !CommandMeasure statements. See the sample example skin below for usage. !CommandMeasure "MainMeasure" "action" Where action is one of the following: o o Pause - Pause current track. Play - Play current track.

o PlayPause - Play (if stopped/paused) or pause (if playing) current track. o Stop - Stop current track. o Next - Change to next track. o Previous - Change to previous track. o OpenPlayer - Opens the player. If already open, the player will be brought to the top. o ClosePlayer - Closes the player. o TogglePlayer - Opens/closes the player depending on current state. !CommandMeasure "MainMeasure" "SetPosition n" Where n is either an absolute value ( SetPosition 50 to jump to 50% of the track) or a relative value ( SetPosition +5 to jump 5% forward or SetPosition -10 to jump 10% backward). !CommandMeasure "MainMeasure" "SetRating n" Where n is a value between 0 (no rating) and 5 (maximum rating). !CommandMeasure "MainMeasure" "SetShuffle n" Where n is 1 (shuffle on), 0 (shuffle off), or -1 (toggle shuffle). !CommandMeasure "MainMeasure" "SetRepeat n" Where n is 1 (repeat on), 0 (repeat off), or -1 (toggle repeat). !CommandMeasure "MainMeasure" "SetVolume n" Where n is either an absolute value ( SetVolume 50 to set volume to 50%) or a relative value ( SetVolume +20 to increase volume by 20% or SetVolume -40 to decrease volume by 40%).

Supported Players
This list contains all supported media players in the latest beta version of Rainmeter. Note that using an unsupported type or bang is perfectly safe (it will simply result in in a empty value or no action, respectively). AIMP: PlayerName=AIMP Fully supported. Tested with AIMP 2.61. foobar2000: PlayerName=foobar2000 Fully supported with the exception of the SetRating and SetPosition bangs. The foo_rainmeter.dll plugin for foobar2000 must be installed. Tested with foobar2000 1.1.7. 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

Plugin-PerfMon
Plugin=PerfMon

Use Window's Performance Monitor to find out the valid values for these settings. There are a great many counters which Windows tracks in Performance Monitor. From the Start Menu, type "Perfmon.msc" to run the tool and find the counters you wish to measure. Note: The names of the objects, counters and instances need to be in English even in localized versions of Windows.

Options

PerfMonObject The name of the performance object. E.g. Memory, Process, Processor,... PerfMonCounter The name of the performance counter. E.g. "% Processor Time", "Disk Read Bytes/sec", ... PerfMonInstance The name of the instance. E.g. "_Total". If the counter doesn't have any instances you can leave this empty. PerfMonDifference If set to 1, the difference between two updates is measured instead of the actual value. This is useful as many of the performance values are counters and you usually want to know how much the counter has increased since last update.

Note: This is 1 by default. Set to 0 to return current value. Example Skin

Plugin-PingPlugin
Plugin=PingPlugin

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

Options
DestAddress The DNS address or IP-number of the server. UpdateRate How often the ping packet will be send to the server. This relative to the config's overall update rate. Timeout Defines the amount of time in milliseconds that the plugin waits for a reply. The default value is 30000 (i.e. 30 seconds). TimeoutValue Defines the value that is returned when timeout happens. The default is 30000. Example Skin

Plugin-PluginMediaKey
Plugin=MediaKey

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

Usage:
[MeasureMediaKey] Measure=Plugin Plugin=MediaKey

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

!CommandMeasure "MeasureMediaKey" "NextTrack"

Valid arguments are: NextTrack PrevTrack Stop PlayPause VolumeMute VolumeDown VolumeUp

Plugin-PowerPlugin
Plugin=PowerPlugin

This plugin can be used to measure battery status and the current MHz on laptops. Note that not all laptops support this (or all the values). PowerState This defines what is measured. The valid values are: o ACLINE - Measures if the power is hooked to ac-line (returns 0 for battery and 1 for ac-line). o STATUS - Measures the status of the battery (returns 0 for no battery, 1 for charging, 2 for critical, 3 for low, and 4 for high). o STATUS2 - Same as STATUS except that the BatteryFlag in SYSTEM_POWER_STATUS is returned as is. o LIFETIME - Measures the lifetime of the battery. o PERCENT - Measures the percentual lifetime. o HZ - Measures the current CPU in Hz. o MHZ - Measures the current CPU in MHz. Format This is the same as in a TIME measure. It is used only when PowerState=LIFETIME .

Plugin-Process
Plugin=Process

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

Options
ProcessName The name of the process / application, including the .exe extension. e.g. ProcessName=Firefox.exe Returns values of -1 (not running) or 1 (running). Note: 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. Example Skin

Plugin-Quote
Plugin=QuotePlugin

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

Options
PathName Path to a folder or a file. If it's a folder, the plugin returns the file name of one of the files in it. If it's a file, the plugin reads a random part of text from it. The file can be encoded in the ANSI or Unicode formats. Separator A string that separates the text. The default value is \n (i.e. newline). Subfolders If set to 1, subfolders are also taken into account. FileFilter This can used to filter the files by their name. It's possible to define several file filters by separating them with a semicolon (e.g. FileFilter=*.jpg;*.gif ). Example Skin

Plugin-RecycleManager
Plugin=RecycleManager

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

Options
RecycleType This defines what is measured. The valid values are: o COUNT - The number of items in the recycle bin. o SIZE - The total size of the items in the recycle bin. Drives Defines the drives to watch for trash. For the sum all recycle bins, use Drives=ALL . For specific drives use a pipe as a delimiter. E.g. Drives=A:|C:|D: will give the sum of these drives.

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

Plugin-ResMon
Plugin=ResMon

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

Options
ResCountType Valid values are: o GDI - Measures the number of GDI objects. o USER - Measures the number of user objects. o HANDLE - Measures the number of open handles. o WINDOW - Measures the number of windows in the system. ProcessName The name of the process that is measured. E.g. ProcessName=Rainmeter.exe would measure only Rainmeter's resources. Leave this empty if you want to measure all resources in the system. This has no effect if the ResCountType=WINDOW .

Plugin-Speedfan
Plugin=SpeedFanPlugin

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

Options
SpeedFanType Defines the return value. Valid values are: o TEMPERATURE - Returns the temperature value. o FAN - Returns the fan speed. o VOLTAGE - Returns the voltage value. SpeedFanNumber This defines the index for the returned value. The indexing starts from 0 so if you want to return e.g. the second temperature value use SpeedFanNumber=1 . SpeedFanScale This defines the temperature unit of measure when SpeedFanType is set to TEMPERATURE. o C - Returns the temperature in Centigrade. o F - Returns the temperature in Fahrenheit. o K - Returns the temperature in Kelvin. Note: This requires SpeedFan to be set to return Centigrade. Otherwise the returned value will be incorrect.

Plugin-SysInfo
Plugin=SysInfo

This plugin returns various information about your system.

Options
SysInfoType Type of the system information. String values (can be used only with STRING meters): o COMPUTER_NAME o USER_NAME o SCREEN_SIZE - The resolution of the primary display monitor in a string of the form "width x height" o WORK_AREA - The size of the client area of the primary display monitor in a string of the form "width x height" o RAS_STATUS o OS_VERSION o OS_BITS o ADAPTER_DESCRIPTION (SysInfoData specifies the adapter) o NET_MASK (SysInfoData specifies which net mask, if there are several) o IP_ADDRESS (SysInfoData specifies which ip address, if there are several. 0-999 for installed, 1000-1999 for active) o GATEWAY_ADDRESS (SysInfoData specifies the adapter) o HOST_NAME o DOMAIN_NAME o DNS_SERVER Numeric values: o SCREEN_WIDTH (SysInfoData specifies which monitor, if there are several) o SCREEN_HEIGHT (SysInfoData specifies which monitor, if there are several) o VIRTUAL_SCREEN_TOP - Y-Coordinate of the upper left corner of the virtual screen. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative. o VIRTUAL_SCREEN_LEFT - X-Coordinate of the upper left corner of the virtual screen. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative. o VIRTUAL_SCREEN_WIDTH - Width of the virtual screen which encompases all display monitors. o VIRTUAL_SCREEN_HEIGHT - Height of the virtual screen which encompases all display monitors. o WORK_AREA_TOP - Y-Coordinate of the upper left corner of the client area. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative. o WORK_AREA_LEFT - X-Coordinate of the upper left corner of the client area. Use SysInfoData to specify the monitor. These coordinates are relative to the primary monitor and can be negative. o WORK_AREA_WIDTH - Width of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are several. o WORK_AREA_HEIGHT - Height of the client area of the primary display monitor. Use SysInfoData to specify a different monitor, if there are several. o NUM_MONITORS - The number of display monitors currently active. SysInfoData Additional data that some of the SysInfoType items require. This is always a number. For SysInfoTypes which use SysInfoData to specify a monitor, the appropriate value to pass can be found by opening the Windows Display Properties dialog. It is important to note that "1" is not always the primary display monitor.

Plugin-VirtualDesktops
Plugin=VirtualDesktops

A virtual desktop manager (VDM) allows you to distribute programs across multiple desktops. The VirtualDesktops plugin gives access to information from different VDMs for Windows and can be used to trigger desktop switches.

General Options
VDManager Must be set to the name of a supported VDM. The plugin currently supports "Dexpot" and "VirtuaWin". VDMeasureType Specifies what information to measure. The following measure types are supported by every VDM and can be used to make basic skins that work with every VDM supported by this plugin. o VDMActive - Returns 1 if the VDM is currently running, and 0 otherwise. o CurrentDesktop - Returns the number of the currently active desktop. o SwitchDesktop - Triggers a switch to another desktop when sent that desktop's number as a bang. o DesktopCount - Returns the total number of virtual desktops. VDDesktopCount Used with VDMeasureType=DesktopCount . Can be set to either X or Y to return the number of columns or rows, respectively, in a desktop grid layout. Example:
[SwitchDesktop] Measure=Plugin Plugin=VirtualDesktops VDManager=Dexpot VDMeasureType=SwitchDesktop [DesktopCountX] Measure=Plugin Plugin=VirtualDesktops VDManager=VirtuaWin VDMeasureType=DesktopCount> VDDesktopCount=X

[CurrentDesktop] Measure=Plugin Plugin=VirtualDesktops VDManager=VirtuaWin VDMeasureType=CurrentDesktop

Bangs:
!CommandMeasure "SwitchDesktop" "2"

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
Url Url to the file to be downloaded and parsed. The Url can also be another WebParser-measure, in which case the already downloaded and parsed information can be reused (e.g. when displaying different StringIndex on the same page). To do this just give the name of the measure in the Url, like this: Url=[MeasureExample] Note: WebParser can also be used to read and parse local files on your computer by using Url=file://C:\path\file.ext . RegExp The regular expression used in parsing. The plugin uses Perl Compatible Regular Expressions, so check the Perl docs for syntax and more info. FinishAction A bang or command that is executed when the page has been downloaded and the parsing is done. This setting is only valid on WebParser measures that connect to a URL, and actions will not be fired on "child" WebParser measures that use another measure as the URL (i.e. URL=[SomeMeasure]). StringIndex Defines which string from the regexp this measure returns. You can get the correct index values by setting the Debug=1, which will add all matched strings to the log-file. StringIndex2 The second string index is used when using a RegExp in a measure that uses data from another webparser measure (i.e. the Url points to a measure and not to a real URL). In this case the

StringIndex defines the index of the result of the other RegExp and the StringIndex2 defines the index of this measure's RegExp (i.e. it defines the string that the measure returns). If the RegExp is not defined in this measure the StringIndex2 has no effect. UpdateRate The rate how often the webpage is downloaded. This is relative to the config's main Update rate AND any UpdateDivideron the measure. So the formula would be Update X UpdateDivider X UpdateRate = "how often the measure connects to the site". The default for UpdateDivider is 1, and the default for UpdateRate is 600. So if you set an Update of 1000, the default for WebParser is to connect every 10 minutes.(1000 X 1 X 600 milliseconds) It is advisable to limit the rate so that you're not flooding the server with constant requests. Web server admins will not like it and you may well get banned from a server altogether if you try to poll the server too often. This is why a default of 600 is set for UpdateRate. You can override this and make it shorter, but it is advisable (and polite) to only hit websites as often as really needed. You can use a combination of UpdateDivider and UpdateRate to both limit both how often you hit the website and how often Rainmeter updates the values returned by the measure and used by meters. However, In general practice it is often best to just set an UpdateRate and leave UpdateDivider off, so there is no lag between the measure obtaining information from the website and its display in your skin. DecodeCharacterReference Automatically decodes HTML Character References. This will eliminate the need to use a Substitute= statement to translate character references like &quot;, &amp;, &lt;, &gt; to the actual character. o 0 - Does nothing (default) o 1 - Decodes both numeric character references and character entity references o 2 - Decodes only numeric character references o 3 - Decodes only character entity references Debug Set this to 1 and the log file will contain some useful debug information (note that Rainmeter must also be in Debug mode for the Log window to display DEBUG messages). Value 2 dumps the downloaded webpage to C:\WebParserDump.txt. This can be useful since some web servers send different information depending which client requests it. Remember to remove this from your config once you have it working correctly. Debug2File If Debug is set to 2 then this parameter will allow you to set the path and filename of the file to use for the downloaded webpage. This will allow you to use WebParser to parse the local version for testing, or for use in another measure or skin. Usage:

[WebParserMeasure] Debug2File="C:\filename.txt" Debug=2

[WebParserMeasure2] ; Saves to current skin folder Debug2File="Debug2File.txt"

Debug=2

Notes: o Must include at least a filename. Path alone will not work. o Must be a directory which already exists. Does not create the target directory. Download If set to 1, the Url is downloaded to a temporary folder and the name to the file is returned as string value. The measure can be bound to a IMAGE meter to download images from web and show them. If the RegExp is defined the parsed string is interpreted as a link to the downloaded image. DownloadFile When Download is set to 1, the file is downloaded to DownloadFile folder in the skin folder as a filename set to this value. If you define it as "DownloadFile=image.jpg", DownloadFile folder will be created in the current skin folder then the downloaded file is saved as "image.jpg" If you define as "DownloadFile=photo\image.jpg", the subfolder photo is created then a file is saved in this folder. Notes: o o This file is not a temporary file so it is not deleted even if it close a skin. As for specification of file path, it is not possible to specify by the absolute path and also specification to the outside ofDownloadFile folder is not possible. ErrorString String that is returned in case there is a parse error. ForceReload WebParser reads the resource only if it has been modified. This can be overridden with ForceReload=1. ProxyServer Name of the proxy server. The plugin doesn't support any authentication so it's possible to use only servers that does not require it or you need a some different way to authenticate yourself to the proxy server.

ProxyServer=serverIP:port ProxyServer=servername:port CodePage Defines the codepage of the downloaded web page. For example CodePage=28605 interprets the page as Latin 9 (ISO-8859-15). If the CodePage is set to 0 no conversion is done. CodePage=65001 means UTF-8. You can check other Windows code pages from here. Examples: Retrieve the title and first item from Slashdot's RSS feed.
[MeasureRSSTitle] Measure=Plugin Plugin=WebParser UpdateRate=3600 Url=http://slashdot.org/slashdot.rdf RegExp="(?siU)<title>(.+)</title>(.+)<item(.+)<title>(.+)</title>" StringIndex=1 FinishAction=!Redraw

[MeasureRSS] Measure=Plugin

Plugin=WebParser Url=[MeasureRSSTitle] StringIndex=4 Substitute="&amp;":"&"

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: o SSID - The broadcast name for your current connection. When trying to conenct, you may see a 'connecting...' or 'authorizing...' next to the name, but only if your update speed is around 2 seconds o QUALITY - A percentage value of the maximum dBm signal strength for your current connection o ENCRYPTION - The cipher algorithm being used for your current connection. Possible values are: NONE, WEP40, TKIP, AES, WEP104, WPA_GROUP, WEP, ??? (for unknown)

AUTH - The authentication algorithm being used for your current connection. Possible values are: Open, Shared, WPA_NONE, WPA_Enterprise, WPA_Personal, WPA2_Enterprise, WPA2_Personal, ??? o PHY - The supported bands for your connection (NOT your adapter). Possible values are 802.11a, 802.11b, 802.11g, 802.11n, DSSS, FHSSS, IR-Band, ??? Note: The PHY measure supported in Windows Vista and higher only. o LIST - Returns a list of all visible networks. The list is automatically separated by line-breaks '\n', so each network appears on a separate line. It will also display the band, cipher, and authentication algorithms next the the network name. WiFiIntfID (optional) Should be kept at 0 ( WiFiIntfID=0 ) unless you have more than 1 wireless interface adapter (this may or may not include bluetooth/infrared receivers). If you do not get any response from the measure with this value at 0, then try other values starting from 1, then 2 and so on... WiFiListStyle (optional) Allows you to control what information appears along with the names of all visible networks (returned when WiFiInfoType=LIST, see above). This value should be either 0, 1, 2 or 3. This is how the list will show up based on these values: o o 0 - SSID o 1 - SSID @band o 2 - SSID (Encryption:Authentication) o 3 - SSID @band (Encryption:Authentication) WiFiListLimit (optional) Allows you to control how many networks will be displayed by the LIST measure.

Note: The list is sorted in descending order based on the signal quality of each network (i.e. strongest first, weakest last). Any value greater than 0 is valid for this measure. Examples:
[MeasureSSID] Measure=Plugin Plugin=WiFiStatus WiFiInfoType=SSID WiFiIntfID=0

[MeasureNetworks] Measure=Plugin Plugin=WiFiStatus WiFiInfoType=LIST WiFiIntfID=0 WiFiListStyle=3

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

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 (0100) 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

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 are commands you add to a meter or the [Rainmeter] section to execute an action on a specific mouse event. Note: When using a mouse action on a string meter or image meter with transparency, you must click exactly on the meter text or image, as the transparent areas do not react to clicks. 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 element. Also note that actions defined for the meter will override actions defined in the [Rainmeter] section. LeftMouseDownAction A command or a bang that will be executed when the left mouse button is pressed down over the meter. Note that this disables dragging. RightMouseDownAction A command or a bang that will be executed when the right mouse button is pressed down over the meter. Note that this disables the context menu. MiddleMouseDownAction A command or a bang that will be executed when the middle mouse button is pressed down over the meter. LeftMouseUpAction A command or a bang that will be executed when the left mouse button is released over the meter. RightMouseUpAction A command or a bang that will be executed when the right mouse button is released over the meter. Note that this disables the context menu. MiddleMouseUpAction A command or a bang that will be executed when the middle mouse button is released over the meter. LeftMouseDoubleClickAction A command or a bang that will be executed when the left mouse button is double clicked on the meter. If this action is missing, LeftMouseDownAction will be executed. RightMouseDoubleClickAction A command or a bang that will be executed when the right mouse button is double clicked on the meter. Note that this disables the context menu. MiddleMouseDoubleClickAction A command or a bang that will be executed when the middle mouse button is double clicked on the meter. MouseOverAction A command or a bang that will be executed when the mouse goes over the meter or entire skin. MouseLeaveAction A command or a bang that will be executed when the mouse leaves the meter or entire 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
Rainmeter can also be controlled with !Bang-commands. A bang is a special command that can be executed to change something in the application. You can use the bangs in the various actions that Rainmeter has, or run from them from the command line by giving it as an argument for Rainmeter.exe.

General Rules
A single !Bang may be called using:
LeftMouseUpAction=!Refresh

Multiple !Bangs must be in square brackets preceded by !Execute and a space:


LeftMouseUpAction=!Execute [!ResetStats][!Refresh]

Executing an external application is done by using the !Execute bang and a space, followed by the command and any parameters inside of square brackets:
LeftMouseUpAction=!Execute ["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=!Execute [!SetVariable "SomeVariable" """A "B" C"""]

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


LeftMouseUpAction=!Execute [!SetVariable "SomeVariable" "A "B" C"]

Bangs names can be preceded by the "Rainmeter" keyword. For example, !RainmeterShowMeter and !ShowMeter are both treated equally in recent versions of Rainmeter (older versions require that "Rainmeter" is specified).

Bangs
Note that the [] means that you must supply the argument for the bang (do not include the []-chars). The () means that the argument is optional. Most !bangs take also the config as an optional parameter. If the config is defined the bang only applies to that particular config. If it's not given, the !bang is sent to the current (in a skin) or first (from the command line) config. Use * as the config's name to send it to all configs. !Execute Special !bang that can be used to combine several !bangs together. The !bangs are separated with '[' and ']'-chars. You can also launch applications with this (!Execute ["C:\Windows\Notepad.exe"]) Actions for the Rainmeter application !About (TabName) Opens the About dialog. TabName can be set to Log, Measures, Plugins, or Version. Defaults to Log. !Manage (TabName) Opens the Manage dialog. TabName can be set to Skins, Themes, or Settings. Defaults to Skins. !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. Requires a full path to the .wav file. PLAYLOOP [soundfile] Plays the given soundfile as loop. Requires a full path to the .wav file. PLAYSTOP Stops the currently playing sound. Actions for variables and settings in skins or groups of skins !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] ("FileSpec") 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], "Key" and "Value" are the Key=Value pairs such as FontSize=15. "FileSpec" is optional. 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. Actions for a skin or group of 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). Actions for a meter or group of 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. Actions for a measure or group of 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. !PluginBang "[MeasureName] (Arguments)" (Config) This bang has been deprecated in favor of !CommandMeasure and should not be used in any new skins. !CommandMeasure ["Measure"] ["Arguments"] ("Config") Sends a command to the given measure. The arguments depend on the measure in question.

LuaScripting
Rainmeter, nor anyone associated with Rainmeter, is responsible for teaching you the Lua scripting language. This guide is only meant to help with using the Lua with Rainmeter. However, Lua is a relatively simple language, and there are many good sites where you can learn Lua itself:

http://www.lua.org/manual/5.1/ http://lua-users.org/wiki/LuaTutorial Or a really good book for sale: Programming Lua Second Edition

Overview
A Lua scripting language file (.lua) can be executed by Rainmeter, passing settings from Rainmeter to the script. The script can then be used to read Rainmeter measures and meters from the calling skin, do any kind of processing outside of Rainmeter that you like, and take various actions that impact the Rainmeter skin: Return a string or number value to the Lua measure, which can be used in Rainmeter just like the value returned by any measure. Directly set the value of a string meter. Change the value of any #Variable# set in the [Variables] section of the skin. Control many aspects of the overall skin, or a measure or meter, such as position, size, enable/disable etc. Send any !Bang command to the skin. Write values to the Rainmeter log file.

Rainmeter has the Lua 5.1 codebase embedded. It contains all the standard libraries and functions that come with Lua, but currently cannot be extended by using external libraries like LuaCURL in your code or "including" external script files using "dofile". This is due both to the need to protect the Rainmeter core in memory, and to limitations of Lua external libraries in a 32bit / 64bit environment. Improvements to this may come at a later date.

In the Skin
Lua is integrated with Rainmeter using the new Rainmeter Measure=Script measure type:
[MeasureLuaScript] Measure=Script ScriptFile=MyScript.lua MySetting="SomeSetting" UpdateDivider=30

ScriptFile= This is the required name of the .lua file you will be executing. MySetting= This is just a sample to show how you can pass information to the Lua script from Rainmeter when it is run. This can be any key name and any value, and you can have none, or as many as you like. UpdateDivider= This optionally tells Rainmeter how often to execute the script, as with any other Rainmeter measure. Notes: You can use any other standard Rainmeter settings that control measures, like Disabled=0/1

You can use #Variables# in any setting in a script measure, but as with plugins, you cannot use dynamic variables. As of this writing, Lua can interact with the current skin, and variables, meters and measures within the skin. There is currently no capability to interact with Rainmeter in general, nor any way to interact with any skin other than the one that ran the script, except by using bangs.

In the Script
There are three functions in a .lua script file written for Rainmeter that control the overall interaction with Rainmeter: PROPERTIES This is actually a Lua "table", used to hold the settings (Key=Value, like MySetting="SomeSetting" in the example above) you wish to pass from Rainmeter to the Lua script. You simply tell it the name of the key from the measure in the skin, and initialize it with any value. The format is:
PROPERTIES = { MyTextSetting = ""; MyNumberSetting = 0; }

You can then later use these settings in your script, with PROPERTIES.MyTextSetting for example, a standard Lua way of reference a table index by value. Remember that Lua is always "case sensitive". This table is PROPERTIES, not Properties. function Initialize() This function is used to perform actions you wish to do "once" when the skin is loaded or refreshed. It can be used to have the script get the structures of measures and meters in the skin so you can interact with them later, initialize global variables, tables etc. you will use later, or even take actions on the skin that you only want to happen once. For instance:
function Initialize() Measure1 = SKIN:GetMeasure("SomeMeasure") Meter1 = SKIN:GetMeter("SomeMeter") CurrentMeter1Height = Meter1:GetH() Meter1:Hide()

MyNewVar = PROPERTIES.MyTextSetting MyNewTable = {} end

function Update() The Update() function is where you will put the bulk of your code. It is executed on every update cycle of the measure and should return either a string or a number, which will be used as the value of the SCRIPT measure. 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 textual value of "99" return "Ninety Nine" - MeasureScript will have a textual value of "Ninety Nine" Example:

function Update() SomeNewVar = "Hello World" SKIN:Bang(!SetVariable MyVar "..SomeNewVar) NewReturnValue = 99

return NewReturnValue end

Simple Example: Skin:


[Rainmeter] Update=1000

[MeasureLuaScript] Measure=Script ScriptFile="#CURRENTPATH#LuaSample.lua" SettingInSkin=20

[MeterLua] Meter=String MeasureName=MeasureLuaScript FontSize=12 FontColor=255,255,255,255

Script:
PROPERTIES = { SettingInSkin = 0; }

function Initialize()

CurrentNumber = tonumber(PROPERTIES.SettingInSkin) end

function Update() NewNumber = CurrentNumber + 50 return NewNumber end

The measure [MeasureLuaScript] in the skin will have a string value of "70", which can be used in any calc or meter.

Functions
There are several Rainmeter-specific functions exposed to Lua. Functions may return a string (e.g. "example"), a number (e.g. 42), a boolean value (i.e. true or false), or nothing (marked by void). print() Allows you to output text to the Rainmeter log. Note that if the Lua interpreter raises an error in your Lua code in general, it will automatically be written to the Rainmeter log and can be viewed using "About" from the Rainmeter context menu.
print("Script just ran!")

Skin functions
These functions can be used on used with the SKIN: prefix. For example:
meter = SKIN:GetMeter("ExampleMeter") SKIN:Bang("!Refresh")

void Bang(string bang) Runs given string. meterType GetMeter(string meter) Returns a handle to the meter. Read more below. measureType GetMeasure(string measure) Returns a handle to the measure. Read more below. void Bang(string bang) Runs given string. string GetSkinName() Returns current skin name. string GetSkinIniFile() Retruns full path to the current skin .ini file. void MoveWindow(number x, number y) Moves the skin to given coordinates. void FadeWindow(number from, number to) Fades the skin. string MakePathAbsolute(string path) Converts relative path into an absolute path (relative to the skin folder). string GetVariable(string name) Retrieve variable name. Retruns nil for an invalid variable.

string ReplaceVariables(string text) Replaces #variables# in given string and returns the result.

Meter functions
These functions can be used on meter objects returned by the SKIN:GetMeter() call. For example:
anyMeter = SKIN:GetMeter("ExampleMeter") anyMeter:SetX(25)

void SetX(number y) Set the meter X position. void SetY(number y) Set the meter Y position. void SetW(number w) Set the meter width. void SetH(number h) Set the meter height. number GetX(bool abs = false) Returns the meter X position. number GetY(bool abs = false) Returns the meter Y position. number GetH() Returns the meter height. number GetW() Returns the meter width. void Hide() Hide the meter. number Show() Show the meter. string GetOption(string option) Returns the value of the meter option (e.g. SolidColor). string GetName() Returns meter name.

Measure functions
These functions can be used on objects returned by the SKIN:GetMeasure() call. For example:
anyMeasure = SKIN:GetMeasure("ExampleMeasure") anyMeasure:Disable()

string GetValue() Returns the numerical value of the measure. string GetStringValue() Returns the string value of the measure. void Disable() Disable the measure. void Enable() Updates string text. string GetOption(string option) Returns the value of the measure option (e.g. MaxValue).

string GetName() Returns measure name. number GetRelativeValue() Returns the measure value from scaled from 0.0 to 1.0. number GetValueRange() Returns the value range. number GetMinValue() Returns measure minimum value. number GetMaxValue() Returns measure maximum value.

Deprecated Functions
These are functions that should not be used. They are supported for now and may be removed in the future. tolua.cast - Simply use SKIN:GetMeter() by itself TO.LuaLog() - Use print() instead meter:SetText() - Prefer SKIN:Bang('!SetOption "MeterName" "Text" "Value"') instead function GetValue() and function GetStringValue() when used to return a value to the skin - Return number or string in Update() instead

Executing Lua code within Rainmeter


The !CommandMeasure bang can be used to execute Lua code in Rainmeter.
LeftMouseUpAction=!Execute [!CommandMeasure "ScriptMeasure" "someVar=5;someVar2=someVar*7;Update()"]

-> set variable someVar to 5, set a new variable with a formula, and immediately execute the Update function. (in the context of the ScriptFile specified by ScriptMeasure)

Example Skins
There are some simple skins using the new Lua integration on the Rainmeter forums. Tearing them apart can be the best way to learn how it all fits together: http://rainmeter.net/forum/viewtopic.php?f=99&t=9131 http://rainmeter.net/forum/viewtopic.php?f=27&t=6658 http://rainmeter.net/forum/viewtopic.php?f=27&t=6533 http://rainmeter.net/forum/viewtopic.php?f=27&t=9388

RMSkinCreate
The Rainmeter skin package (.rmskin) is an increasingly popular method of distributing various Rainmeter components. It allows one-click installation of skins, themes, fonts, and more. To create a .rmskin package, get the .rmskin template from here, then extract and open the newly created Template folder. It should contain five folders along with a file called Rainstaller.cfg.

Adding your skins / themes / addons / plugins and fonts.


To add components to the package, simply copy it into the correct folder. Folders in Template\Skins will be copied into the skin folder (usually Documents\Rainmeter\Skins). Folders in Template\Themes will be copied into the theme folder (usually %APPDATA%\Rainmeter\Themes). Folders in Template\Addons will be copied into addon folder (usually Program Files\Rainmeter\Addons). Folders in Template\Plugins will be copied into plugins folder (usually Program Files\Rainmeter\Plugins). See below for additional details. Folders in Template\Fonts will be copied into fonts folder (usually Program Files\Rainmeter\Fonts). See below for additional details. For example, to include the "MySkins" suite of skins, simply copy the entire Documents\Rainmeter\Skins\MySkins folder from your Rainmeter installation into Template\Skins in the template folders.

More on including plugins


You are able to include both 64bit and 32bit in one single .rmskin. If you decide to take advantage of this, you must specify at least MinRainmeterVer=2.0.0.740 into Rainstaller.cfg. Then, create the Template\Plugins\32bit andTemplate\Plugins\64bit folders and copy the plugin(s) into the appropriate folder. Template\ - Plugins\ -- 32bit\ --- MyPlugin\ ---- myplugin.dll -- 64bit\ --- MyPlugin\ ---- myplugin.dll

More on including Fonts


There are three ways to include font(s) in your distribution: Recommended - Include a font in your skin folders, allowing use with LocalFont without any additional installation to the end user's Rainmeter or Windows configuration. Simply copy the .TTF file(s) into some folder under the skin/suite you will be distributing. For example, You might create a folder called Skins\MySkins\Fonts and put all the fonts you wish to include in there, then you can use LocalFont=#ROOTCONFIGPATH#Fonts\FontFile.ttf in your skins to use the fonts you have distributed. Include a font that will be permanently installed into the end user's Windows configuration. Simply copy the .TTF file(s) into Template\Fonts. Set RainmeterFonts=0 in Rainstaller.cfg (see below for more on this file) and the font(s) will be installed to the user's Windows\Fonts folder automatically and will be available for use in Rainmeter skins. Include a font that will be installed into the Rainmeter "Fonts" folder, for use with LocalFont in Rainmeter skins. Simply copy the .TTF file(s) into Template\Fonts. Set RainmeterFonts=1 in Rainstaller.cfg (see below for more on this file) and the font(s) will be installed in the Rainmeter Fonts folder, normally Program Files\Rainmeter\Fonts, and can be used with LocalFont=#PROGRAMPATH#Fonts\FontFile.ttf in Rainmeter skins.

Changing settings
After you have copied all the necessary files into the correct folders, open any text editor (e.g. notepad) and drag & drop theTemplate\Rainstaller.cfg file into the text editor. Fill in the obvious (Name, Author, and Version) and save the file. A detailed explanation of the other values is available at the end of this page, be sure to glance through that list.

Rainstaller.cfg Basic Options


AdminRights Set AdminRights=1 if the package contains addons, fonts, or plugins. MinRainmeterVer Sets the minimum version of Rainmeter required to install. For example, to require that Rainmeter 1.2 r393 or higher is installed, specify MinRainmeterVer=1.2.0.393 The revision numbers are available from from Google Code. LaunchType and LaunchCommand These two values are used to either load config(s) or a specific theme after installation. o To open an installed theme, set the following (replacing NameOfTheme with the the theme name):
LaunchType=Theme LaunchCommand=NameOfTheme

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.

You might also like