Rainmeter Manual 3.0
Rainmeter Manual 3.0
0 Manual
Contents
o Getting Started
o Setting Up
o Using Rainmeter
o Customizing
o Creating Skins
o Basic Tutorials
o Launcher
o Clock
o System
o Installing Rainmeter
o User Interface
o Manage
o About
o Context Menus
o Installing Skins
o Publishing Skins
Reference
o Settings
o [Rainmeter] section
o [TrayMeasure] section
o [Skin] sections
o Skins
o [Rainmeter] section
o [Metadata] section
o @Include option
o @Resources folder
o Meters
o General Options
o Image Options
o MeterStyles
o Tooltips
o Bar
o Bitmap
o Button
o Histogram
o Image
o Line
o Rotator
o Roundline
o String
o Measures
o General Options
o IfActions
o Substitute
o Calc
o CPU
o FreeDiskSpace
o Memory
o Net
o Plugin
o Registry
o Script
o Time
o Uptime
o Plugins
o AdvancedCPU
o CoreTemp
o FileView
o FolderInfo
o InputText
o iTunes
o MediaKey
o NowPlaying
o PerfMon
o Ping
o Power
o Process
o Quote
o RecycleManager
o ResMon
o SpeedFan
o SysInfo
o VirtualDesktops
o WebParser
o WiFiStatus
o Win7Audio
o WindowMessage
o Options
o Bangs
o Variables
o Built-In Variables
o Section Variables
o Mouse Variables
o Groups
o Mouse Actions
o Lua Scripting
2013
IZEN.ORG
IZEN
More information
Be sure to check the Tips & Tricks section for a wealth of guides and suggestions from the
Rainmeter community.
The Snippets section contains a collection of useful "snippets" of Lua script code, from the
Rainmeter Team and users.
Remember, there is an entire community of people willing and able to help when things get
stuck. Be sure to use the Rainmeter Forum or jump on the web-based IRC channel when help is
needed.
Note: Most option entries and header text in the manual can be selected with CTRL-Click to
add an #anchor to the URL. This makes it easy to link to a specific part of a page. Try it below.
SampleOption
What is Rainmeter?
Rainmeter is a free, open-source application for Windows PCs. It is a platform that
enables skins to run on the desktop.
What is a "skin"?
Some Rainmeter skins. Each skin is a separate window, and can be moved around on the desktop by clicking and
dragging. Rainmeter can run any number of skins at one time, even from different sources.
A skin can be many things. Some skins are very simple, single-purpose tools, like Windows
desktop gadgets, or "widgets" on an Android device. Others are more complex, like miniature
applications themselves. Some skins even come bundled in large "suites" and include their own
tools for customizing their form and appearance, within or alongside Rainmeter's basic user
interface. Every skin works differently, depending on the choices of that skin's individual author.
However, all skins are made from the same building blocks: measures, which gather information
from your computer, a website, a text file, or some other source; and meters, which create visual
elements in the skin's window, such as frames, borders, backgrounds, images, text, charts, or
buttons.
Skins can interact with other skins and applications using special commands, called bangs, and
they can be customized by changing short lines of text, called variables. All of these things are
made possible by Rainmeter's unique code language, which allows a skin to access functions and
resources built into the Rainmeter application. Every skin's code is completely open, and can be
tweaked, modified or even completely rewritten using any text editing software.
Most Rainmeter features can be reached through the basic Manage window or context menus.
Some skin authors create their own controls for users to customize their skins. These controls
may be included as a separate utility, or they may be created entirely within Rainmeter as
another skin. If this is the case, then you will not need to know any code to customize these
skins.
In other cases, you may need to change some variables in the skin code. This may be scary if you
are not a programmer, but usually, these "variables" are clearly marked labeled, located near the
beginning of the file so that you don't have to do any searching, and are accompanied by helpful
instructions and comments.
An example of some Rainmeter code.
If you want to create skins, or modify someone else's skin beyond the customization options that
the author has provided, then you will get some hands-on experience with Rainmeter's code
language. You do not need to be professional programmer to become a proficient writer of
Rainmeter skins—although those skills will certainly help you, and a full-
powered scripting language is available for advanced users. But all of a skin's basic properties
are written using a simple configuration language that is suitable for novice programmers. The
difficulty level is similar to that of HTML or JavaScript.
Setting Up [home]
System Requirements
Rainmeter requires Windows XP or above. Some specific features require Windows Vista or
above. The same installer may be used on either 32-bit or 64-bit systems, and all skins and
features are compatible with both architectures.
Rainmeter is not available for non-Windows systems, including Mac OS and Linux, and there
are no plans to support these operating systems.
Download
Start by downloading the Rainmeter installer from the Rainmeter.net.
Install
To install Rainmeter, run the installer program that you downloaded, and follow the instructions.
(See Installing Rainmeter if you need more detailed instructions, including steps for installing
Rainmeter as a portable application.)
Rainmeter will run automatically after it has been installed.
Context Menu
Variants
When you loaded the Google skin, there was only one option under the "Google"
menu, Google.ini . This is how most skins work: each skin is saved as a " SkinName.ini " file in a
separate folder. What happens when there is more than one skin in the same folder? The answer
is that these skins become variants of each other.
Settings
Rainmeter keeps track of a number of basic skin settings. These settings are created
automatically for each skin. They include things like position (whether a skin stays on top of all
windows or is pinned to the desktop), snap to edges (whether skins automatically align with
other skins when they are dragged close together), and of course, the skin's coordinates (location
on the desktop) and which variant is loaded.
Tray Icon
Manage
Aside from the context menus, the most important part of Rainmeter's basic user interface is
the Manage window. Open Manage by selecting Manage from the context menu, or by left-
clicking once on the tray icon.
Skins
The Skins tab allows you to load, unload, or change settings for your entire library of skins. You
can go to a specific skin's settings in the Manage window by choosing Manage skin from the
skin's context menu, or choosing from the Active skins drop-down menu in Manage. You can
also right-click to open any skin's folder in Windows Explorer, where you can see other resource
files for that skin, such as images or scripts, or delete a skin's file, from your computer.
The Manage window does many of the same tasks as the context menu, but when you need to
load or edit options for a number of skins at the same time, it's much easier to use the window.
Layouts
Manage is also where you can load and save layouts. A layout is a permanent copy of your skin
settings, including both loaded and unloaded skins. (Again, these settings do not account for
changes to your skin files, which include any extra customization options. Loading a layout will
also not recover a skin that has been deleted from your library.) When you save a layout, you
have the option of excluding settings for unloaded skins, which is a good way to "clean up" skins
that you may no longer have or use. You can also associate your current wallpaper with your
layout.
About
The last part of Rainmeter's interface is the About window. Open About by selecting About from
the context menu, or by clicking Open log in Manage.
Log
The Log tab is where Rainmeter keeps a running record of what it is doing. This is also where
Rainmeter reports errors related to a skin or the program itself. In addition, the Skins tab will
show you the current values of all measures and variables in the skin. (You'll learn more about
those later.) This makes the About window an invaluable assistant whenever you're writing,
editing or troubleshooting a skin.
Version
The other tabs show information about the version of Rainmeter you are using, as well as the
versions of pluginsthat you have installed. If you are ever having a technical issue and need to
ask for support from the Rainmeter community, the About window is where you can find a
wealth of information about your Rainmeter setup that may be helpful in solving your problem.
Exiting Rainmeter
Rainmeter saves all settings automatically. If you exit Rainmeter (by clicking Exit in the context
menu), or even if the program crashes unexpectedly, all skins' settings are still saved, and your
current layout will be loaded automatically the next time Rainmeter is launched.
Customizing [home]
Now that you are familiar with Rainmeter's basic user interface, you're ready to start customizing
Rainmeter to your liking.
Finding Skins
There is no official, central repository of Rainmeter skins. Rainmeter is an open platform, and
skins can be found all over the Internet, from large screenshot galleries to small personal blogs
and websites. That said, there are a few major sites where the Rainmeter community tends to
gather:
o Rainmeter.net
The Rainmeter homepage highlights Featured Suites from veteran skin authors in the
community.
o Rainmeter Forum
Other members of the community like to share their creations on the official boards.
o DeviantArt
Probably the biggest and best collection of skins, deviantArt not only has a special Rainmeter
category, but also a dedicated Rainmeter Group, which is run by members of the community
and features a curated stream of skins, screenshots, tutorials, interviews and more. All skins
on deviantArt are checked for malware before they are accepted by the group.
o Customize.org
One of the first gathering places for Rainmeter enthusiasts, Customize.org hosts one of
the largest and oldestRainmeter skin collections.
o Lifehacker
Not only is the Lifehacker community full of Rainmeter users, but Lifehacker's editors
frequently post featured desktops and how-to guides for popular skins under the Rainmeter
tag. Be sure to browse the Lifehacker Desktop Show & Tell pool on Flickr, as well.
Malware
Adding Skins
Editing Skins
You have already learned how to change basic skin settings in Rainmeter. Now, it's time to learn
how to make edits to a skin itself.
Remember: every skin is different. Some skins provide more customization options, tools and
instructions than others, and the processes for customizing two skins may be very different. In all
cases, you should look to whatever documentation the author has provided, whether in the form
of a "readme" file, an online support URL, or ;comments embedded in the skin code.
Controls
Variables
[Section1]
Key1=Value
Key2=Value
Key3=Value
[Section2]
Key1=Value
Key2=Value
Key3=Value
Select all
When you're editing variables in a skin, the values are what you are going to change.
Scroll down in your text editor to the section called [Variables] . Here's what it looks like. (Code
examples in this manual are highlighted to help you easily identify sections, keys and values.)
[Variables]
; Variables declared here can be used later on between two # characters (e.g. #MyVariable#).
fontName=Trebuchet MS
textSize=8
colorBar=235,170,0,255
colorText=255,255,255,205
Select all
Try changing one of these variable values. Go to the line that begins with the fontName key, and
change Trebuchet MS to another font - say, Times New Roman:
fontName=Times New Roman
Refresh
The refresh action is important in Rainmeter. The effect of refreshing a skin is the same as if you
had unloaded and then re-loaded the skin. When this happens, all dynamic variables and other
options are reset according to their original values in the skin file, and all measures restart from
the beginning. Refreshing a skin is also necessary to apply any changes that have been made to a
skin's files.
You can refresh any skin by selecting Refresh skin in the context menu, or browsing to the skin
in Manage and clicking the Refresh button in the top-right.
Going Further
If you don't find the option that you want to change in the [Variables] section, and the author has
provided no other instructions, then your objective goes beyond merely "customizing" a skin:
you will need to actually modifythe skin away from the original author's design.
This is not only possible—we actually encourage it! Breaking down the pieces of someone else's
creation and building something new with them is one of the best ways to learn Rainmeter.
Modifying skins and creating new skins involve basically the same skills and require an
understanding of the same core concepts. It is the tweakers, the experimenters, who get the most
out of the tools that Rainmeter has to offer.
1. Rainmeter.
2. A text editor.
And that's all. No extra software or materials of any kind are required.
Text Editor
That being said: while you can edit skins using Windows' built-in text editor, Notepad, we
strongly recommend downloading an enhanced text editor, such as Notepad++ or Sublime Text.
These applications come with powerful features like tabs, auto-completion, embedded file
browsers and more. You can even download extensions that add Rainmeter-specific code
highlighting, which makes it much faster and easier to read a skin's code and spot errors.
For more information, see Notepad Alternatives.
Image Editor
Depending on the kind of skin you want to make, you may also want to find a good piece of
image editing software. Rainmeter can create text by itself, as well as simple shapes, like
rectangles and circles, with solid colors or color gradients. But anything more complex will
require a separately-created image file.
Adobe Photoshop is the usual gold standard for image editing, but there are other, less expensive
alternatives worth considering, such as Paint.NET, GIMP, or Inkscape.
Configs
A skin can grow to become an enormously complex project by the time it's done. It may
accumulate any number of images, icons, fonts, plugins, addons, scripts, and even included code
that is strewn across multiple files and shared by other skins.
But at the core of every skin is a single .ini file. Named SkinName.ini —where "SkinName" is the
name of the skin—this is a text file that contains the fundamental code that Rainmeter uses to
create a working skin.
Because a skin may have any number of variants, skins are typically identified not by their file
name, but by the folder where they are located. This is known as the skin's config name. To
quickly find out a skin's config name, just check the context menu—the first item is the config
name. For example, the illustro "Clock" skin's config name is illustro\Clock .
Each skin also has a root config folder. This refers to the one folder that contains all of the skins
belonging to a "suite," such as illustro. When the skins in a suite are organized together in this
way, they can be exported to apackage, and then installed on another system, as a single
collection. They can also share fonts, images and other resources in a way that separate skins
cannot. For a simple skin that is not part of such a "suite," the config and root config are the
same.
Here's a quick reference chart to help you remember the relationship between skins, configs,
variants and roots, using illustro as an example:
Root config folders are all organized in Rainmeter's main Skins folder:
1
C:\Users\YourName\Documents\Rainmeter\Skins
Accordingly, you can identify any skin by its file path, according to a simple rule:
C:\Users\YourName\Documents\Rainmeter\Skins\ConfigName\SkinName.ini
The illustro "Clock" skin is organized in the Skins folder. Remember that skins are identified by their config name,
e.g. "illustro\Clock".
1. For Windows Vista, 7 and 8. For default folder locations on Windows XP, see Installing Rainmeter.
Until now, you have been working with the pre-made illustro skins that come with Rainmeter.
Now, you're going to create a new skin from scratch. You will use this same skin throughout
the tutorials that follow.
Open your Skins folder in Windows Explorer, and create a new folder. Call it MyFirstSkin . Next,
you're going to create MyFirstSkin.ini .
Before you continue, there is a setting in Windows Explorer that you may want to change in
order to make this process easier.
Press Alt to show the menu bar in Explorer, then select Tools → Folder options . Click
the View tab, and uncheck the option labeled Hide extensions for known file types . Press Ok to
apply the change.
You can now see the "extensions" that signify different file types in Windows Explorer, such
as .txt and .ini. This also allows you to change the extension when you rename a file.
Open your new "MyFirstSkin" folder. Right-click inside the empty folder, and select New → Text
Document . Windows will create the new file, and allow you to type in a new name.
Type MyFirstSkin.ini . Make sure to remove the ".txt" at the end of the file name. Windows will
ask you if you're sure about changing the extension; click Yes .
Finally—open the Rainmeter context menu and click Refresh all to make Rainmeter see the new
skin in your library. Then, open the skin in your text editor.
[Rainmeter]
Update=1000
Select all
The Update option is what sets the length of the skin's update cycle. The length is given in
milliseconds, or 1/1000ths of a second, so Update=1000 means that the skin will update once per
second. Updating is how the skin will react to changes in information. You'll see how this works
in more detail later on.
Now that you've given your skin a "head," it's time to give it a "body." You're going to create
a string meter. This is one of the most common types of meters, and it is used to create text.
[Rainmeter]
Update=1000
[MyMeter]
Meter=String
Text=Hello, world!
Select all
The Meter option is required to tell Rainmeter that this section is, in fact, a meter. All meters
have this option. The value of the option determines what type of meter it is.
The Text option, on the other hand, is unique to the string meter. As you might have guessed,
this is where you provide a string of text for Rainmeter to display.
Believe it or not, what you have now is a complete, valid, working Rainmeter skin! Let's load it
to see what it looks like. Load the skin using one of the methods that you learned before. You
can either:
o Open the Manage window by left-clicking the Rainmeter tray icon, find MyFirstSkin in
the skins list, then click the Load button in the upper-right.
o Open the context menu by right-clicking the tray icon, then
select Skins → MyFirstSkin → MyFirstSkin.ini .
(As you get comfortable with Rainmeter's user interface, you'll decide whether you prefer
working with the context menu or the Manage window.)
Now, look up in the top-left corner of your desktop. There's your skin!
Can you see me?
It's... not very big. Or pretty. Meters without any options tend to be very simple and
unimpressive. So let's add some formatting.
[MyMeter]
Meter=String
Text=Hello, world!
AntiAlias=1
FontColor=255,255,255
FontFace=Segoe UI
FontSize=20
Select all
Congratulations! You have just created a new skin. You are now ready to move on to the Basic
Tutorials. This series will guide you through the entire process of creating several example skins,
while teaching you about the fundamental elements of a Rainmeter skin.
Basic Tutorials [home]
This is the first series of tutorials for Rainmeter. It is meant to follow Getting Started and
assumes that you have gone through the steps described there. If you have not been through these
steps, you should start here.
This series starts by creating a simple first skin, then covers the anatomy of Rainmeter skins,
focusing on each of the basic skin properties in turn:
o Meters
A skin's display elements. How to create objects that can be seen and clicked.
o Measures
A skin's informational elements. How to pull data from your computer or the Internet.
o Bangs
A skin's interactive elements. How to send commands to Rainmeter or other applications.
o Updates
A skin's internal clock. How to control the timing and synchronicity of skin events.
o Variables
A skin's data elements. How to manipulate independent strings that are used to store many
kinds of information.
This series is in development. Check back soon for the first installment.
Launcher [home]
[Rainmeter]
Update=1000
Select all
Then, we can add our first meter to the skin.
[MeterLaunch1]
Meter=String
X=5
Y=5
FontFace=Trebuchet MS
FontSize=14
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Text=Notepad
SolidColor=0,0,0,1
LeftMouseUpAction=["C:\Windows\System32\Notepad.exe"]
Select all
Note that the first two things we must do is create a [SectionName] for the meter, and tell
Rainmeter what type of meter this is.
[MeterLaunch1]
Meter=String
Select all
This is a String meter, one of the most commonly used meters. It is used to display some text on
the screen. Formatting control, like the position, size, color and font face can all be set with a
combination of General meter options and the options specific to the String meter. Let's look at
some we have used here.
o X and Y: These control the position of the meter relative to the overall skin. So what we are
saying here is that we want this first meter to be five pixels right of the left edge of the skin,
and five pixels down from the top of the skin.
o FontFace: This determines which font you want to use when displaying the string.
o FontSize: The size in points for the font.
o FontColor: The color for the text.
o StringStyle: Contols some sytle options for the string. We are using a Bold style.
o AntiAlias: Does font smoothing on the text, to improve the display quality.
Then we are setting the Text option of the meter with Text=Notepad , defining the string of text we
wish to display. String meters can also use the value of Measures as the text to display, we will
go into that in more detail in a future tutorial.
The last two options in the meter are what really makes this into a "launcher", and not just some
text on the screen.
o SolidColor=0,0,0,1: This is a little trick used to create a solid but invisible "box" behind the
string meter, to make clicking on the text easier.
o LeftMouseUpAction=["C:\Windows\System32\Notepad.exe"]: This is a mouse action, telling
Rainmeter to take the defined action option when the meter is clicked with the mouse. In this
case, we are launching the application Notepad.exe found in the
folder C:\Windows\System32\. We will go into much more detail on different types
of actions and Bangs in future tutorials.
So let's load our new skin and take a look at where we stand. From the Manage dialog, find
the Launcher.ini entry in the list and click on the Load button on the upper right.
Drag the skin anywhere on the screen you like. Rainmeter will remember the position any time
you load this skin in the future. You can also right-click the skin to change other skin options as
desired.
There we have our first meter, and a fully functioning Rainmeter skin. Clicking on
the Notepad text will launch the application. Congratulations! Take a short break.
[MeterLaunch2]
Meter=String
X=0r
Y=2R
FontFace=Trebuchet MS
FontSize=14
FontColor=255,255,255,255
StringStyle=Bold
SolidColor=0,0,0,1
AntiAlias=1
Text=Paint
LeftMouseUpAction=["MSPaint.exe"]
Select all
The important changes here are in the X and Y options for the meter. Remember that X and Y set
the position of a meter in the context of the overall skin. Note that we are using relative
positioning to set the X option zero pixels relative to the left of the previous meter, (in effect
the same X as before) and the Y option two pixels relative to the botton of the previous meter.
We could also have specifically set the value of X and Y to some hard-coded value, but using
relative positioning is often much easier when laying out a skin's meters.
We have changed the Text and LeftMouseUpAction options for our second application, and we can
now use Manage and the Refresh button at the upper right to see our changes in action. Note
that you can also right-click the skin on the screen and say Refresh skin.
[MeterLaunch3Image]
Meter=Image
ImageName=#@#Images\Calc.png
W=32
H=32
X=0r
Y=2R
LeftMouseUpAction=["Calc.exe"]
Select all
We have created a new section that has the Meter option set to Meter=Image . We are going to use
an image file we will include with our skin, so we have a couple of things to do to set that up
correctly.
o First, we need to create a folder to hold all the images for our tutorial skins. We will use this
folder not only for this Launcher skin, but other ones going forward.
ImageName=#@#Images\Calc.png
W=32
H=32
X=0r
Y=2R
Select all
Then, just as with the String meters above, set the LeftMouseUpAction option
to LeftMouseUpAction=["Calc.exe"] so that the Windows Calculator is launched when the image is
clicked.
Save your changes and refresh the skin. Click on the image to launch Windows Calculator.
You could just use the image as is, but let's add a string label next to the image. For that, create a
new String meter, much like the ones above.
[MeterLaunch3Text]
Meter=String
X=0R
Y=6r
FontFace=Trebuchet MS
FontSize=14
FontColor=146,197,94,255
StringStyle=Bold
SolidColor=0,0,0,1
AntiAlias=1
Text=Calculator
LeftMouseUpAction=["Calc.exe"]
Select all
Notice that we have used the X and Y options to set the position of the meter lined up just to the
right of the previous meter (the Image meter), and six pixels below the top of it. That will align
the meter more or less centered to the right of the image of the calculator. We add the
same LeftMouseAction that the Image meter has, so you can click on either to launch the
application. Just for fun, we also changed the FontColor of the string.
[Rainmeter]
Update=1000
[MeterBackground]
Meter=Image
W=145
H=95
SolidColor=60,60,60,255
[MeterLaunch1]
Meter=String
X=5
Y=5
FontFace=Trebuchet MS
FontSize=14
FontColor=255,255,255,255
StringStyle=Bold
SolidColor=0,0,0,1
AntiAlias=1
Text=Notepad
LeftMouseUpAction=["C:\Windows\System32\Notepad.exe"]
Select all
We have set a specific W and H (width and height) so the meter is large enough to hold all the
others, and no X and Y options. This is so the meter will be at the far left and top of the overall
skin. We then set SolidColor=60,60,60,255 , which in the absence of any ImageName on an Image
meter will simply draw a square or rectangle based on the size of the W and H options.
[Rainmeter]
Update=1000
Select all
Now let's add our first Measure, in this case a Time measure to retrieve information about the
system time from your computer.
[MeasureTime]
Measure=Time
Format=%#I:%M
Select all
Do check out the manual entry for the Time measure to see how that Format option is used to
obtain the time information you want. We are using a format of "hour in 12 hour
time:minutes" for this measure.
So let's add a meter to display this value we obtained with our measure. First, we are going to use
the MeterStyleoption by creating a [TextStyle] section to set up some common string formatting
options. This way we won't have to repeat them in every meter we create. Then add the
new [MeterTime] meter.
[TextStyle]
FontFace=Trebuchet MS
FontColor=255,245,207,255
SolidColor=0,0,0,1
StringStyle=Bold
StringAlign=Right
AntiAlias=1
[MeterTime]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureTime
X=165
Y=0
FontSize=40
Select all
The key to using measures and meters together is using the MeasureName option to "bind" the
measure[MeasureTime] to the meter. What that means is that this meter will display the value
returned by the measure on each Update.
So let's load our new skin and take a look at where we stand. From the Manage dialog, find
the Clock.ini entry in the list and click on the Load button on the upper right.
Drag the skin anywhere on the screen you like. Rainmeter will remember the position any time
you load this skin in the future. You can also right-click the skin to change other skin options as
desired.
[MeasureSeconds]
Measure=Time
Format=%S
[MeasureAMPM]
Measure=Time
Format=%p
[MeasureMonthName]
Measure=Time
Format=%B
[MeasureDayOfMonth]
Measure=Time
Format=%#d
[MeasureYear]
Measure=Time
Format=%Y
[MeasureDayOfWeek]
Measure=Time
Format=%A
Select all
Now, start building meters to display all these different measure values. Let's start with the first
one, so we can look at a new meter positioning concept. Head back down to the bottom of your
skin and add this new meter.
[MeterSeconds]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureSeconds
X=204
Y=8
FontSize=18
FontColor=255,231,135,255
Select all
Note that we are using the MeasureName=MeasureSeconds option to bind this meter to the appropriate
measure.
Now, if you look above, you will see that in the MeterStyle section [TextStyle] we have defined
many format options for our string meters that we want to share with the meters rather than
repeating them in each one. One of these is the StringAlign option, which will allow us to align
the text in the meter based on the X and Y options for the meter. In this case, we are going to
right-align all of our meters. You will see why as we continue with the layout. In the
previous [MeterTime] meter, we aligned the meter so the right-most edge was at the X position
of165 in the skin. For this meter, we are aligning the right-most edge at the X position of 204.
In addition, we want this meter to have a different color. So, we are "overriding"
the FontColor=255,245,207,255 option we set in the [TextStyle] MeterStyle, by specifically
setting FontColor=255,231,135,255 for this meter.
[MeterAMPM]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureAMPM
X=204
Y=30
FontSize=16
FontColor=255,231,135,255
[MeterMonthDayYear]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureMonthName
MeasureName2=MeasureDayOfMonth
MeasureName3=MeasureYear
X=204
Y=0R
FontSize=13
Text=%1 %2, %3
[MeterDayOfWeek]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureDayOfWeek
X=204
Y=0R
FontSize=13
Select all
[MeterMonthDayYear]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureMonthName
MeasureName2=MeasureDayOfMonth
MeasureName3=MeasureYear
X=204
Y=0R
FontSize=13
Text=%1 %2, %3
Select all
Since we want to use the value of three different measures in this meter, we use
the MeasureName option to define all three measures as being bound to this meter. Then we can
use the Text option with %1 %2, %3 to display each of the three measure values, including
adding a hard coded comma for formatting.
Let's add a background image like we did in the earlier tutorial, by going up above all the
existing meters and adding a new Image meter.
[MeterBackground]
Meter=Image
W=210
H=107
SolidColor=60,60,60,255
[TextStyle]
FontFace=Trebuchet MS
FontColor=255,245,207,255
SolidColor=0,0,0,1
StringStyle=Bold
StringAlign=Right
AntiAlias=1
Select all
Save and refresh the skin to see the changes. Congratulations! Nice looking clock skin.
[MeterTime]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureTime
X=165
Y=0
FontSize=40
Select all
Mouse Off
Mouse Over
Measure=Time
Format=%#I:%M
[MeasureChimeHour]
Measure=Time
Format=%M
IfEqualValue=0
IfEqualAction=[Play "#@#Sounds\HourChime.wav"]
Select all
This [MeasureChimeHour] measure is getting the number of minutes (%M) from the system
time, and then using an IfAction to check the value of the measure on each update. If the value is
equal to zero IfEqualValue=0 , then the associated IfEqualAction=[Play
"#@#Sounds\HourChime.wav"] is executed. This uses the Play bang to load and play
the HourChime.wav file.
After making the changes, save and refresh the skin. Congratulations! You now have a beautiful,
functional AND annoying skin!
We have jumped around a bit, so here is the entire completed skin so you can check that your
code is the same.
[Rainmeter]
Update=1000
[MeasureTime]
Measure=Time
Format=%#I:%M
[MeasureChimeHour]
Measure=Time
Format=%M
IfEqualValue=0
IfEqualAction=[Play "#@#Sounds\HourChime.wav"]
[MeasureSeconds]
Measure=Time
Format=%S
[MeasureAMPM]
Measure=Time
Format=%p
[MeasureMonthName]
Measure=Time
Format=%B
[MeasureDayOfMonth]
Measure=Time
Format=%#d
[MeasureYear]
Measure=Time
Format=%Y
[MeasureDayOfWeek]
Measure=Time
Format=%A
[MeterBackground]
Meter=Image
W=210
H=107
SolidColor=60,60,60,255
[TextStyle]
FontFace=Trebuchet MS
FontColor=255,245,207,255
SolidColor=0,0,0,1
StringStyle=Bold
StringAlign=Right
AntiAlias=1
[MeterTime]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureTime
X=165
Y=0
FontSize=40
[MeterSeconds]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureSeconds
X=204
Y=8
FontSize=18
FontColor=255,231,135,255
[MeterAMPM]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureAMPM
X=204
Y=30
FontSize=16
FontColor=255,231,135,255
[MeterMonthDayYear]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureMonthName
MeasureName2=MeasureDayOfMonth
MeasureName3=MeasureYear
X=204
Y=0R
FontSize=13
Text=%1 %2, %3
[MeterDayOfWeek]
Meter=String
MeterStyle=TextStyle
MeasureName=MeasureDayOfWeek
X=204
Y=0R
FontSize=13
Select all
System [home]
Introduction
With this tutorial, we are going to cover several things. First, we are going to introduce two new
measure and two new meter types, as well as some new options for controlling how they work.
We will also touch on the use ofUpdateDivider on measures to control the performance of a skin,
and will explore using Variables to set, use and change values shared by measures and meters.
There is a lot going on in this skin, so let's explore the end-result a bit so you can get a sense of
where we are going as we work through it. First, let's take a look at the final skin.
What we are going to do is measure the percent usage of the CPU, and the space on a couple of
hard drives. Then we are going to create some circular meters showing the usage
with Roundline meters. We are going to monitor the CPU with a Line meter, and display some
information about the space on your hard drives. You only see one hard drive in that image? We
will get to that...
[Rainmeter]
Update=1000
Select all
The next thing we are going to do is define some variables for the skin. Variables are used to
create a value, which can be used repeatedly in the skin by enclosing the variable name
in ## (example: #VarName#). In order to change the value in all places it is used, you only need
to change it one time in the [Variables] section of the skin.
[Variables]
DarkBlue=27,63,107,255
MediumBlue=92,135,209,255
LightBlue=207,224,255,255
LightRed=250,148,135,255
AlmostBlack=40,40,40,255
CurrentDrive=C:
Drive1=C:
Drive2=D:
Select all
Now we will cheat a bit. In earlier tutorials, we waited until the end and put a solid background
on the skin using anImage meter. Let's go ahead and add that now, so we can demonstrate the
first use of one of those variables we created above.
[MeterBackground]
Meter=Image
X=0
Y=0
W=185
H=110
SolidColor=#AlmostBlack#
Select all
Note that we have used the variable #AlmostBlack# in the SolidColor option for this meter. The
meter will then use the value we defined as AlmostBlack=40,40,40,255 in the [Variables] section
earlier. Remember that if you define SolidColor on an image meter with no
MeasureName option, it simply draws a square or rectangle based on the W and H (width and
height) options.
So let's load our new skin and take a look at where we stand. From the Manage dialog, find
the System.ini entry in the list and click on the Load button on the upper right.
[MeasureCPU]
Measure=CPU
Select all
Now it is time to introduce a new meter type. We are going to display the value of
that [MeasureCPU] measure as filling a cirle on the screen using a Roundline meter. Create a
new section with this code:
[MeterCPUCircle]
Meter=Roundline
MeasureName=MeasureCPU
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#LightBlue#
AntiAlias=1
Select all
Refresh the skin so we can see what it is doing as we walk through the options.
What the Roundline meter does is draw a line that rotates around the center of a circle defined
by the W and Hoptions of the meter. In this case, we have defined the size of the meter (and thus
the circle) as 40x40 pixels. Keep in mind that this defines a circle that has a total width of 40
pixels, and a width from the center to the edge as 20 pixels.
o LineStart=15
This tells the Roundline that we want the line to start 15 pixels from the center of the meter.
o LineLength=20
This sets the overall length of the line to 20 pixels. Remember that our meter is 40 pixels wide
in total, but only 20 pixels wide from the center to the outside edge.
The result of these two options is a line that starts 15 pixels from the center, and extends to
the full 20 pixels defined as the length from the center to the edge. So in effect, a 5 pixel line
at the outside edge.
o Solid=1
This option tells the Roundline that instead of a single line, we want the meter to "fill" from
the position defined as 0% to the current value represented by the measure. So instead of a
"pointer", we get a circle being filled as the value changes.
Then we are using one of the variables we defined in the [Variables] section at the beginning.
We want to set the color of the circle to a nice light blue, which we defined
as LightBlue=207,224,255,255 . So we set the option in the Roundline meter
to LineColor=#LightBlue# .
Good job! Roundline is a very useful and flexible meter type in Rainmeter, and once you play
with the options and different behaviors you will find lots of creative ways to use it. Take a
breather...
[MeterCPUCircleBack]
Meter=Roundline
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1
Select all
What we are doing here is creating another Roundline meter, at the same X and Y position as the
one that comes after, but behind it. All of the options in [MeterCPUCircleBack] are the same as
those in [MeterCPUCircle], with the exception that there is no MeasureName option to "bind" a
measure to the meter. Roundline will by default use a value of 100% in this case, in effect
allowing us to draw a full circle that we can use as a background. Oh, we also used a different
variable for the color of the line. Refresh the skin to see the change.
Your entire skin code should now look like this:
[Rainmeter]
Update=1000
[Variables]
DarkBlue=27,63,107,255
MediumBlue=92,135,209,255
LightBlue=207,224,255,255
LightRed=250,148,135,255
AlmostBlack=40,40,40,255
CurrentDrive=C:
Drive1=C:
Drive2=D:
[MeasureCPU]
Measure=CPU
[MeterBackground]
Meter=Image
X=0
Y=0
W=185
H=110
SolidColor=#AlmostBlack#
[MeterCPUCircleBack]
Meter=Roundline
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1
[MeterCPUCircle]
Meter=Roundline
MeasureName=MeasureCPU
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#LightBlue#
AntiAlias=1
Select all
Next we want to create a String meter showing the actual value we are getting in
the [MeasureCPU] measure, and center it inside our circle. We have talked about string meters
and positioning in earlier tutorials, so let's just add the following as a new section at the end of
your skin code.
[MeterCPUPercent]
Meter=String
MeasureName=MeasureCPU
FontFace=Segoe UI
FontSize=8
FontColor=#LightBlue#
X=26
Y=28
StringAlign=CenterCenter
StringStyle=Bold
AntiAlias=1
Text=%1%
Select all
Save and refresh the skin to see your new meter.
You know, it would be nice if the color of that text changed when the CPU usage hits some value
we define. What we can do is change the color to "red" if the value is at or above 25%, and back
to "blue" if it is below that value.
Go back near the top of the code and find the the [MeasureCPU] measure. Let's add a few lines
to it.
[MeasureCPU]
Measure=CPU
IfAboveValue=24
IfBelowValue=25
IfBelowAction=[!SetOption MeterCPUPercent FontColor #LightBlue#][!UpdateMeter *][!Redraw]
Select all
This is using IfAction options to do the following:
o If the value of the measure moves above 24, use the !SetOption bang to change
the FontColor option on the[MeterCPUPercent] meter to the value of the
variable #LightRed# we defined earlier in [Variables].
o If the value of the measure falls below 25, use the !SetOption bang to change
the FontColor option on the meter to the value of the variable #LightBlue# we defined
earlier in [Variables], in effect changing it back to the original color.
Line meter
Next we are going to touch on another meter type in Rainmeter. The Line meter displays the
percentage value of a measure (or more than one measure) as a series of points over time,
connected to create lines on a graph.
Add a new section to the skin.
[MeterCPULine]
Meter=Line
MeasureName=MeasureCPU
X=49
Y=8
W=130
H=38
LineCount=1
LineColor=#LightBlue#
LineWidth=1
HorizontalLines=1
HorizontalLineColor=#AlmostBlack#
SolidColor=#DarkBlue#
Select all
The Line meter is pretty self-explanatory, you "bind" one or more measures to the meter
with MeasureName, and then use options like LineWidth and LineColor to control how the
meter looks. The line is plotted over time on a graph that is defined by the W and H options of
the meter. The additional HorizontalLines and HorizontalLineColoroptions draw the background
lines on the graph, in the desired color. Finally, we set a SolidColor option on the meter to define
a overall background color. Refresh the skin and have a look. Let it run for a while so you can
see the movement of the line.
We should put a label on the Line meter, so it is clear what it is measuring. We have looked at
the String meter previously, so let's just add one and take a look at the result.
[MeterCPUText]
Meter=String
FontFace=Segoe UI
FontSize=15
FontColor=#LightBlue#
X=48
Y=4
StringStyle=Bold
AntiAlias=1
Text=CPU
Select all
Measuring a hard drive
It is time to introduce a new measure type to our skin. We are going to be measuring
the total, used, and freespace on one of your hard drives. We will display the used space on a
circular Roundline meter almost exactly as we did with the CPU measurement, then display the
other information, total and free space, in string meters next to it.
First, let's set up the measures you will need. Back up in your skin code, right under
the [MeasureCPU] we created in the beginning, and add some new measures.
[MeasureDriveTotal]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
Total=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=-1
[MeasureDriveFree]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5
[MeasureDriveUsed]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
InvertMeasure=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5
Select all
The FreeDiskSpace measure obtains space information about a drive. There are several options
we are using that should be explained.
o Drive=#CurrentDrive#
This option tells the measure which drive to examine. In this case, we are using one of the
variables we defined earlier, to set the value to C:.
o IgnoreRemovable=0
By default, FreeDiskSpace will ignore all removable drives like USB or optical drives.
Set IgnoreRemovable=0to enable measuring these kinds of drives.
o InvertMeasure=1
By default, FreeDiskSpace will measure the free space on a drive. To measure the used space,
you use theGeneral Measure Option InvertMeasure=1 to reverse what is measured.
In addition, we are using two other options on the measures we have not looked at before.
DynamicVariables is used to tell a measure or meter that any variables used in the section should
be re-evaluated on each update of the section. In order to have Rainmeter use as few resources as
possible, variables are only evaluated when the measure or meter is created, and will not detect
any dynamic changes to variables it uses, if this option is not set. It will become clear in a little
bit why we want this option on our FreeDiskSpace measures.
UpdateDivider is used to control how often a measure or meter is updated. The overall Update of
the skin is set in the [Rainmeter] section at the top of the skin, and defines how often in
milliseconds the skin is updated. In our case, and by default, this is Update=1000 or once a second.
The UpdateDivider=5 option we are setting on these FreeDiskSpace measures tells Rainmeter to
update these measures every 5 updates of the skin, or in our case every 5 seconds. UpdateDivider
should be considered for any measures that don't need to be updated as often as the Update
option alone, to reduce the amount of work that Rainmeter has to do. In the case of
FreeDiskSpace, this is particularly useful as actually reading the drives once every second would
be more resource hungry than is really needed.
See the guide at Update Guide for a lot more detail and explanation.
Ok, our measures are all set up, and providing the various kinds of space measurements for our
drive in bytes. One thing that should be noted is that the FreeDiskSpace measure also
automatically sets the MinValue andMaxValue of the measure, so the value can be used in
meters that require a Percentage, like the Roundline meter we are about to create.
Add the following new meters to the skin.
[MeterDriveCircleBack]
Meter=Roundline
X=5
Y=63
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1
[MeterDriveCircle]
Meter=Roundline
MeasureName=MeasureDriveUsed
X=5
Y=63
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#LightBlue#
AntiAlias=1
[MeterDriveCircleLabel]
Meter=String
FontFace=Segoe UI
FontSize=10
FontColor=#LightBlue#
X=26
Y=83
StringAlign=CenterCenter
StringStyle=Bold
Percentual=1
AntiAlias=1
DynamicVariables=1
Text=#CurrentDrive#
Select all
Note that these are pretty much identical to the meters we created earlier to show the CPU usage
as a circularRoundline meter. We bind the active Roundline meter [MeterDriveCircle] to the
measure [MeasureDriveUsed] to display the amount of "used" space, and instead of showing
any measured value inside the circle in[MeterDriveCircleLabel], we simply create a label with
the value of the current drive letter we created in the variable #CurrentDrive#. We again
set DynamicVariables=1 on this label meter. We will see why shortly. Save and refresh the skin to
see how we are doing.
Finally, we can create a nice background to match the one behind the Line meter we created
in [MeterCPULine], by simply creating an Image meter with a SolidColor and
no MeasureName option, then some String meters to display the other drive space
information, total and free. Add the following meters to the bottom of the skin. Save and refresh.
[MeterDriveBack]
Meter=Image
X=49
Y=63
W=130
H=38
SolidColor=#DarkBlue#
[MeterDriveTotalLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=50
Y=64
StringStyle=Bold
StringAlign=Left
AutoScale=1
AntiAlias=1
Text=Total:
[MeterDriveTotal]
Meter=String
MeasureName=MeasureDriveTotal
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=180
Y=64
StringStyle=Bold
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B
[MeterDriveFreeLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=50
Y=81
W=130
H=18
ClipString=1
StringStyle=Bold
AutoScale=1
AntiAlias=1
Text=Free:
[MeterDriveFree]
Meter=String
MeasureName=MeasureDriveFree
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=180
Y=81
StringStyle=Bold
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B
Select all
One new option we have used in two of these meters should be explained.
The FreeDiskSpace measure obtains the space values from the drive in bytes. For most of us,
that is going to be a really huge and long number, (my one-terabyte C: drive has a total of
1000097181696 bytes for instance) and probably not one we want to display on a skin.
The AutoScale option on the string meter will automatically scale the number
to megabytes, gigabytes,terabytes etc. and append the appropriate M / G / T label to the end.
We have added an extra hard-coded B at the end of the text, so it will display as for instance: 931
GB. Let's take a look.
What about those dynamic variables?
I promised we would get back to the reason why we added DynamicVariables=1 to a few
measures and meters. Our last goal is to have the skin dynamically change the Drive that we
measure and display when we move the mouse over the skin.
If you look back to the [Variables] section, you will see that we set the following:
CurrentDrive=C:
Drive1=C:
Drive2=D:
Select all
Then in our FreeDiskSpace measures [MeasureDriveTotal], [MeasureDriveFree],
and [MeasureDriveUsed], we set the Drive option to that variable #CurrentDrive#. So to start
with, the measures are looking at the C: drive. What we want to do is set the value
of #CurrentDrive# to be equal to the value of the variable #Drive2# when we move the mouse
over the skin, and back to #Drive1# when we move the mouse away.
To accomplish this, we need to add new Mouse actions to the skin, and some Bangs that are
executed by the mouse actions.
Let's go back up to our [MeterBackground] meter, the first one after the measures in the skin.
Change it by adding our mouse action lines.
[MeterBackground]
Meter=Image
X=0
Y=0
W=185
H=110
SolidColor=#AlmostBlack#
Select all
What this is saying is:
o If the mouse moves over the background meter, use the !SetVariable bang to change the value
of the variableCurrentDrive to the value of the variable Drive2.
o If the mouse moves away from the background meter, use the !SetVariable bang to change
the value of the variable CurrentDrive to the value of the variable Drive1, or in effect back
to the original value.
o Then we are using the !UpdateMeasure, !UpdateMeter, and !Redraw bangs to have the
change take place as soon as we move the mouse over or away, and not wait for the next
update of the skin.
This functionality is why we added DynamicVariables=1 to the measures and meters which are
using the#CurrentDrive# variable. That option allows the measures and meters to re-evaluate
the variable on each update of the section, so when we change it with !SetVariable they react to
the change.
So we are finally there... Great job! Here are two shots of your final skin, the first with the mouse
away from the skin and the second with the mouse over the skin.
Mouse Off
Mouse Over
[Rainmeter]
Update=1000
[Variables]
DarkBlue=27,63,107,255
MediumBlue=92,135,209,255
LightBlue=207,224,255,255
LightRed=250,148,135,255
AlmostBlack=40,40,40,255
CurrentDrive=C:
Drive1=C:
Drive2=D:
[MeasureCPU]
Measure=CPU
IfAboveValue=24
IfBelowValue=25
[MeasureDriveTotal]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
Total=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=-1
[MeasureDriveFree]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5
[MeasureDriveUsed]
Measure=FreeDiskSpace
Drive=#CurrentDrive#
InvertMeasure=1
IgnoreRemovable=0
DynamicVariables=1
UpdateDivider=5
[MeterBackground]
Meter=Image
X=0
Y=0
W=185
H=110
SolidColor=#AlmostBlack#
[MeterCPUCircleBack]
Meter=Roundline
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1
[MeterCPUCircle]
Meter=Roundline
MeasureName=MeasureCPU
X=5
Y=8
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#LightBlue#
AntiAlias=1
[MeterCPUPercent]
Meter=String
MeasureName=MeasureCPU
FontFace=Segoe UI
FontSize=8
FontColor=#LightBlue#
X=26
Y=28
StringAlign=CenterCenter
StringStyle=Bold
AntiAlias=1
Text=%1%
[MeterCPULine]
Meter=Line
MeasureName=MeasureCPU
X=49
Y=8
W=130
H=38
LineCount=1
LineColor=#LightBlue#
LineWidth=1
HorizontalLines=1
HorizontalLineColor=#AlmostBlack#
SolidColor=#DarkBlue#
[MeterCPUText]
Meter=String
FontFace=Segoe UI
FontSize=15
FontColor=#LightBlue#
X=48
Y=4
StringStyle=Bold
AntiAlias=1
Text=CPU
[MeterDriveCircleBack]
Meter=Roundline
X=5
Y=63
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#MediumBlue#
AntiAlias=1
[MeterDriveCircle]
Meter=Roundline
MeasureName=MeasureDriveUsed
X=5
Y=63
W=40
H=40
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineStart=15
LineLength=20
Solid=1
LineColor=#LightBlue#
AntiAlias=1
[MeterDriveCircleLabel]
Meter=String
FontFace=Segoe UI
FontSize=10
FontColor=#LightBlue#
X=26
Y=83
StringAlign=CenterCenter
StringStyle=Bold
Percentual=1
AntiAlias=1
DynamicVariables=1
Text=#CurrentDrive#
[MeterDriveBack]
Meter=Image
X=49
Y=63
W=130
H=38
SolidColor=#DarkBlue#
[MeterDriveTotalLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=50
Y=64
StringStyle=Bold
StringAlign=Left
AutoScale=1
AntiAlias=1
Text=Total:
[MeterDriveTotal]
Meter=String
MeasureName=MeasureDriveTotal
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=180
Y=64
StringStyle=Bold
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B
[MeterDriveFreeLabel]
Meter=String
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=50
Y=81
W=130
H=18
ClipString=1
StringStyle=Bold
AutoScale=1
AntiAlias=1
Text=Free:
[MeterDriveFree]
Meter=String
MeasureName=MeasureDriveFree
FontFace=Segoe UI
FontSize=11
FontColor=#LightBlue#
X=180
Y=81
StringStyle=Bold
StringAlign=Right
AutoScale=1
AntiAlias=1
Text=%1B
Select all
Standard Installation
The standard installation is recommended for most users. Simply run the installer and follow the
instructions.
The installation will do the following:
Skins and settings folders will be created in the default file locations when Rainmeter is first run.
Note: Rainmeter can be uninstalled using the Add or Remove programs function in Windows.
Portable Installation
To run Rainmeter from a single folder, so it can be copied to another computer or run directly
from a removable drive, select Portable installation during the install process and browse to the
desired installation folder. No changes to the Windows Registry or Start menu will be made. All
program, skins and settings folders and files will remain in the selected program folder.
Note: The required C++ and .NET runtime libraries may need to be manually installed.
Skins folder:
1
Windows XP C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins
Windows 8/7/Vista C:\Users\YourName\Documents\Rainmeter\Skins 1
Settings and Layouts folder:
1
Windows XP C:\Documents and Settings\YourName\Application Data\Rainmeter
Windows 8/7/Vista C:\Users\YourName\Appdata\Roaming\Rainmeter 1
1. "YourName" is an example.
For example:
"Rainmeter-2.4-r1700-beta.exe" /S /DESKTOPSHORTCUT=1 /ALLUSERS=1
o 0 - Success!
o 1 - Unknown error.
o 2 - Unknown error.
o 3 - Version of Windows version not supported.
o 4 - Administrative rights not required.
o 5 - Failed to write to install directory.
o 6 - VC++ Redistributable 2010 is not installed.
o 7 - Unable to close Rainmeter/RainBrowser.
User Interface [home]
Rainmeter can be controlled using several user interface windows built into the application.
Choose one of the items to see details on how they are used to operate the application, install,
load and manage skins, monitor and debug during skin editing, and save and load the current
skin layout and settings.
Manage
The primary management tool for Rainmeter. Load and unload skins, control settings for the
application and skins, load and save layouts and more.
About
Much more than the usual simple About dialog in applications, the About window in Rainmeter
provides powerful tools for monitoring the current status of the application and skins. Monitor
the log file for information and errors, watch current values of variables and measures for
running skins, and view the status and version of the application and plugins.
Context Menus
In addition to the Manage window, Rainmeter can be completely controlled from context menu
items available by right-clicking the application's notification area (system tray) icon or an
individual skin on the screen.
Manage [home]
The Manage window in Rainmeter is the primary means of controlling the application and skins.
It consists of three main tabs:
o Skins: Displays a list of installed and loaded skins. This tab is used to view information about skins,
manage skin settings, and control buttons to load/unload/refresh skins.
o Layouts: Used to save and load the current state of Rainmeter. Active and inactive skins, skin
positions, and other Rainmeter settings.
o Settings: Controls high-level Rainmeter settings such as the interface language and logging.
o Left-Click the Rainmeter icon in the Windows Notification Area on the taskbar.
o Right-Click the Rainmeter icon in the Windows Notification Area on the taskbar and select "Manage".
o Using the !Manage bang as an action in a skin or from the command line as a parameter to
Rainmeter.exe.
o Right-Click any running skin on the desktop and select "Manage skin".
o Refresh all: Refresh the entire Rainmeter application, including all currently active skins.
o Edit settings: Manually edit the settings in Rainmeter.ini with the text editor associated with .ini files.
o Open log: View the Log tab of the Rainmeter About window.
o Create .rmskin package: Package skins(s) for distribution in the .rmskin format.
o Clicking on a skin .ini file will make that skin active in the Manage tab.
o Double-clicking a skin .ini file will unload the skin if it is running, or load it if not.
o Right clicking on a config folder will allow opening the folder in Windows Explorer.
o Right clicking on a skin .ini file will allow loading, unloading or editing the skin.
Active skins
This pull-down will contain a list of all currently loaded and active skins in Rainmeter.
Clicking on a skin will make that skin active in the Manage tab.
Metadata
Displays the information in the [Metadata] section of the selected skin.
This includes Name, Config, Author, Version, Licenseand Information fields.
If a skin does not contain a [Metadata] section, the Add metadata link in this area will add an
empty section with all fields.
Skin Settings
For a selected active skin, shows the current values of various settings. Changes will
immediately effect the skin on the desktop.
o Coordinates: The window X and Y location of the skin on the screen in pixels.
o Position: The z-position of the skin on the desktop relative to other windows.
o Load order: The loading order of the skin on the desktop relative to other skins.
o Transparency: The transparency of the skin.
o On hover: The hide on mouse over behavior of the skin.
o Draggable: The draggable setting for the skin.
o Click through: The click through setting for the skin.
o Keep on screen: The keep on screen setting for the skin.
o Save position: The save position setting for the skin.
o Snap to edges: The snap to edges setting for the skin.
o Display monitor: Settings for the monitor on which the skin is displayed.
Use default: Primary monitor: Removes the @N directive from WindowX/WindowY settings.
@0, @1, @2, ... , @32: Adds the specified monitor number to WindowX/WindowY
settings. @0 represents"The Virtual Screen".
Auto-select based on window position: If checked, the WindowX/WindowY @N settings are made
automatically based on the position of the meter's window. This setting will be unchecked when a
specific monitor is selected.
o Unload / Load: Unload (make inactive) the selected skin if it is currently active, or load it if not.
o Refresh: Refresh the selected active skin.
o Edit: Edit the selected skin with the text editor associated with .ini files.
Note: If an existing layout is selected from the Saved layouts list or typed in, saving will replace
the existing saved layout with the current state.
Saved layouts
Click on any layout name in the list.
o Load
Loads the selected layout. If a Windows desktop wallpaper was saved with the layout, it will be
applied to the desktop.
o Delete
Permanently deletes the saved layout.
o Edit
Edits the saved layout (Rainmeter.ini) file with the text editor associated with .ini files.
Global options under [Rainmeter] are not replaced when a layout is loaded, preserving local
settings such as:
o ConfigEditor
o SkinPath
o DisableVersionCheck
o Language
When loading a layout, the current Rainmeter state will automatically be saved as a layout
named @Backup.
Hint: A layout can be loaded from the Windows command line using the !LoadLayout bang.
"C:\Program Files\Rainmeter\Rainmeter.exe" !LoadLayout "My Saved Layout"
The current Rainmeter state will be replaced with the named layout. If Rainmeter is not running,
it will be started.
o Language:
Use the pull-down menu to select the desired language for all Rainmeter user interfaces. This does
not have any effect on languages used in skins.
o Editor:
Enter or browse to the text editor that will be used when "Edit skin" or "Edit settings" is selected.
o Check for updates
If selected, Rainmeter will check online when started to see if the running version is the most recent
release version, and will prompt the user to upgrade if not. This has no effect on beta versions of
Rainmeter.
o Disable dragging
If selected, automatically sets the draggable state of all active skins to prevent dragging skins with
the mouse.
o Show notification area icon
Shows or hides the Rainmeter icon in the Windows notification area (system tray).
o Use D2D rendering
Use Direct2D rendering in Rainmeter. This requires Windows 8, or Windows 7 with the Platform
Updateapplied.
o Reset statistics
When clicked, clears all saved network and other statistics from the Rainmeter.stat file in
the settings folder.
Logging
In addition to the real-time logging of errors, warnings and notices in the Log tab of the
Rainmeter About window, Rainmeter can log activity to a Rainmeter.log text file, which will be
created in the settings folder.
o Debug mode
If selected, a more detailed logging mode will be used in the About window, and when Log to file is
active. This should only be used when debugging a problem, as leaving this level of detailed logging
on can impact Rainmeter performance.
o Log to file
If selected, Rainmeter will append log entries to the Rainmeter.log file while running. Unchecking this
item will turn off logging, but the Rainmeter.log file will be retained.
o Show log file
If clicked, the Rainmeter.log file will be loaded in the text editor associated with .log files.
o Delete log file
If clicked, the Rainmeter.log file will be deleted. If Log to file is currently active, it will automatically
be turned off.
About [home]
The About interface in Rainmeter is much more than the usual version number and link to a
website. It is a powerful tool for finding and fixing problems with Rainmeter and skins. It
consists of four main tabs:
o Right-Click the Rainmeter icon in the Windows Notification Area on the taskbar and
select "About".
o Click the Open log button in the Manage window.
o Using the !About bang as an action in a skin or from the command line as a parameter to
Rainmeter.exe.
o Right-Click any running skin on the desktop and select "Rainmeter / About".
When opened, the list displays the last 20 messages logged by Rainmeter. While left open, the
log continues to add new messages to the top of the list.
The log has three columns of information:
o Type: The category of message:
The types of messages that are displayed by the log can be controlled with the checkboxes at the
bottom of the list. This can be used to filter the display to only certain kinds of new messages.
Click Clear to remove the current contents of the log panel.
Note: Custom log entries can be created using the !Log bang from a skin, or the print() function
in the Lua scripting language. This can be very useful for debugging purposes.
Extremely powerful tool displaying real-time information about currently active skins. The tab
displays a list of currently active skin config names in the panel on the left. Selecting one from
the list will update important information about the skin in real time, in the panel on the right.
o Measures: Information about measures in the selected skin.
Note: The list contains all plugins installed in Rainmeter. It does not reflect whether a particular
plugin is actually loaded or running in a skin.
The Version tab
o Version information: The version, revision number, architecture and build date.
o Path information: The paths to the program, settings and skins folders.
Click Copy to Clipboard to copy the version and path information to the Windows clipboard.
Context Menus [home]
In addition to the Manage window, the right-click context menus for Rainmeter can be used to
control the application and skins.
There are two levels of context menus:
o Rainmeter context menus: Used to control the Rainmeter application and all skins. Accessed from
the Rainmeter icon in the Windows Notification area.
o Skin context menus: Used to control an individual skin. Accessed by right-clicking any running skin on
the desktop.
o ConfigNames: (e.g. illustro\Welcome) Each currently loaded skin configwill be listed. Provides control
of settings and actions for each using the same items as Skin context menus below.
o ConfigName: (e.g. illustro\Welcome) Clicking the name of the config will open the folder in Windows
Explorer.
o Variants: Lists the .ini files / variants in the skin config. Clicking on a .ini file will load the skin in
Rainmeter.
o Root Config: (e.g. illustro) Lists the root-level config folders for the skin. The menu can be used to
load skins under the root config.
o Settings: See Skins settings submenu below for details.
o Manage skin: Loads the Manage window with the skin selected.
o Edit skin: Edit the skin with the text editor associated with .ini files.
o Refresh skin: Refresh the skin.
o Rainmeter: Displays a subset of the main Rainmeter context menu.
o Unload skin: Unloads the skin.
___________
Note for skin authors: Custom skin context menu items can be added using Context options in a
skin. Details and examples here.
Position
o Display monitor: Settings for the monitor on which the skin is displayed.
o Stay topmost: The skin will stay on top of all (including topmost) windows.
o Topmost: The skin will be on top of normal windows.
o Normal: The skin will stay visible when showing the desktop and will be brought to the top on click.
o Bottom: The skin will stay behind other windows.
o On desktop: Similar to Normal, except that the skin will stick to the desktop and cannot be brought
to the foreground.
o From right: The WindowX of the skin will be expressed in pixels from the right edge of the screen.
o From bottom: The WindowY of the skin will be expressed in pixels from the bottom edge of the
screen.
o X as percentage: The WindowX of the skin will be expressed as a percentage of the screen width.
o Y as percentage: The WindowY of the skin will be expressed as a percentage of the screen height.
Note: See settings - skin sections for details on these settings.
Transparency
o Percentage: (e.g. 0% - 90%) Amount of transparency for the entire skin, expressed as a percentage.
o Fade in: On mouse over, the skin will fade from the amount of transparency set as a percentage
above to opaque.
o Fade out: On mouse over, the skin will fade from opaque to the amount of transparency set as a
percentage above.
General settings
o Hide on mouse over: The skin will hide (fully transparent, ignores mouse clicks) on mouse over.
o Draggable: The draggable setting for the skin.
o Save position: The save position setting for the skin.
o Snap to edges: The snap to edges setting for the skin.
o Click through: The click through setting for the skin.
o Keep on screen: The keep on screen setting for the skin.
o Use D2D rendering: The UseD2D setting for the skin.
Installing Skins [home]
There are two ways of installing Rainmeter skins downloaded from the internet:
Installing Automatically
Skins in the Rainmeter Skin Packager (.rmskin) format can be easily and automatically installed
with the Rainmeter Skin Installer. During a normal Rainmeter installation, the .rmskin
extension is associated in Windows with the Skin Installer program, and simply double-clicking
the file will install it in Rainmeter.
This dialog lists each component that will be installed. These may include:
o Skins : At least one skin will always be included and installed in the Rainmeter\Skins folder.
The author of the package may indicate that one or more skins will automatically be loaded
when the installation is complete.
o Layouts : If the author has added a layout to the package it will be installed in the
Rainmeter\Layouts folder. IfApply included layout is selected, the layout will be applied to
Rainmeter following installation.
o Plugins : If the author has added custom plugins to the package the appropriate 32bit/64bit
architecture version of the plugin .dll files will be installed to the Rainmeter\Plugins folder.
Legacy .rmskin format components. No longer supported in new Rainmeter 2.4 .rmskin files:
o Fonts : If an author has included font files with the package, they will be installed in the
Windows\Fonts folder. This may be disabled by unchecking Install fonts to system in
the Advanced pull-down menu.
o Addons : If an author has included addon executable files with the package, they will be
installed in the Rainmeter\Addons folder.
If any of the skins to be installed already exist, they will be moved to a Backup folder before
installation. This may be disabled by unchecking Backup skins in the Advanced pull-down
menu.
Click Install to complete the installation of the package.
______________
Note: If Rainmeter is being run as a portable installation, start SkinInstaller.exe from the
Rainmeter program folder, and browse to the .rmskin file to install it.
Installing Manually
Before Rainmeter 1.3, most skins had to be unzipped and moved to the Skins folder by hand. All
versions of Rainmeter are 100% backwards-compatible, so these older skins will still work just
fine. Here is how to install them:
First of all, if a skin comes in an archive, such as a ZIP, RAR or 7Z file, software is needed to
"extract" them. 7-Zipis one of the popular choices, since it can handle almost any archive type.
After installing the software, right-click the archive in Explorer to extract it.
The archive may include a readme.txt file with further instructions. If not, look for a folder with
the same name as the skin - it might be inside another folder that is actually called "Skins".
Move the folder to the Rainmeter "Skins" folder:
Windows 8/7/Vista: C:\Users\YourName\Documents\Rainmeter\Skins 1
Windows XP: C:\Documents and Settings\YourName\My Documents\Rainmeter\Skins 1
1. "YourName" is an example.
Finally, right-click the Rainmeter Windows Notification area icon and select Refresh all. The
new skins will now be available to load from the Manage window or context menus.
Publishing Skins (.rmskin) [home]
Rainmeter includes tools that make it easier to share skins that you have created with other users.
This page describes how to use the Skin Packager feature, and offers some guidelines for
publishing a new skin in a public gallery, such as deviantArt or Customize.org.
Skin Packager
The Skin Packager is used to create a "package" file that contains all of the files needed to install
a skin in Rainmeter.
The package file is created in the "Rainmeter Skin Installer" format, with the extension .rmskin.
The file is actually a modified zip file, with the addition of certain metadata that is used to verify
the integrity of the package. (As of version 2.3, Rainmeter will not install a normal ZIP file
changed to the ".rmskin" extension; the package must be created with the Skin Packager.)
To launch the Skin Packager, open the Manage window and click the button labeled Create
.rmskin package... in the bottom-left.
Step 2: Options
All of the following fields are optional. The default settings are appropriate for most skins.
o Save package to:
Choose where the new package file will be created. Defaults to the current user's Desktop
folder.
o After installation
You may choose one of two actions for Rainmeter to take after installing the skin. (Before
installing, the user will have the option to skip this action.)
o Load skin:
You may choose one of the skin ".ini" files in your package. This skin will be
automatically loaded alongside any other skins that the user is already running. This
setting is recommended for most skins.
o Load layout:
If you added any layouts to the package, you may choose one layout to be loaded
automatically, replacing the user's existing layout.
o Minimum requirements
You may set the minimum versions of Rainmeter and/or Windows required for the skin.
Rainmeter will not install the skin on a system that does not meet these requirements.
o Rainmeter version:
Defaults to the current version of Rainmeter on your system. If you are sure that the skin
will work on an earlier version, you may change the minimum requirement accordingly.
Rainmeter version numbers are written in the form Major.Minor.Patch.Revision. For
example, Rainmeter 2.3.3 (r1468) would be written as 2.3.3.1468 .
o Windows version:
Defaults to Windows XP, which is the lowest version of Windows supported by Rainmeter.
Some skins may require higher versions of Windows, depending on their plugins, addons,
or other factors. For example, any skins that make use of the Win7Audio plugin will
require Windows Vista or above.
Step 3: Advanced
For additional options, click the Advanced tab at the top of the window.
o Header image:
You may choose a custom header image to be displayed in the Skin Installer. The image must
be a bitmap image (.bmp) that is exactly 400x60 pixels in size.
o Variables files:
Some skins have one or more include files to store variables that can be changed by the user.
If a user is reinstalling or upgrading a skin that they already have in their library, they will
most likely want to preserve their existing preferences. You may specify these files in your
skin package, so that the existing variable values are used instead of the defaults in the
package.
Specify the file location starting with the root config folder, e.g. illustro\Clock\Variables.inc .
You may specify multiple files by separating them with pipes ( | ),
e.g. illustro\Clock\Variables.inc | illustro\Feeds\Variables.inc .
o Merge skins
If selected, the Skin Installer will not remove any existing files found in the user's Skins
directory. (Normally, the root config folder is removed and replaced with the version in the
skin package.) This can be used to install an "expansion" or a "patch" to a previously-installed
skin, without duplicating unchanged files.
Finally, click Create package to complete the process. It may take several seconds to create the
package, depending on the size of your skin. The file will be saved in your chosen
location as Name_Version.rmskin (using the "Name" and "Version" fields that you entered in the
first step).
Hidden Files
The Skin Packager will ignore any hidden files or folders in your root config folder. You can
take advantage of this behavior by storing development files (such as Photoshop "PSD" files, or
backup copies of skin code) as hidden files, so that they are excluded from the final product.
Publishing Guidelines
When distributing a skin to a small or private group of users, strict adherence to standards
probably isn't too important. However, you may want to publish your finished work in a public
repository, such as the Rainmeter skin galleries on deviantArt or Customize.org, for other users
to discover, download and share. In this case, taking the time to follow a few simple guidelines
will be helpful to you, your users, and the Rainmeter community at large.
Use metadata.
Many skin authors tend to ignore the [Metadata] section in their skins, because it has no effect on
a skin's function or performance. But there are good reasons to make sure your skin is fully-
tagged before you release it into the wild. A skin with complete metadata is easier to find in
the Manage window, and offers a reliable, built-in way to provide users with setup and usage
instructions, or at least direct them to a webpage or readme file with more information.
In addition, because a skin's code is often copied or excerpted in posts and comments across the
Internet, good metadata makes it easier to trace the code back to its source. The Version tag is
especially helpful to avoid confusing multiple revisions of the same skin that have been released
at different times.
Choose the right license for your skin (and respect others').
The Rainmeter community is built around a free, open exchange of ideas and resources. We
wholeheartedly encourage skin authors to release their works under terms that allow other users
to borrow their code and concepts, modify them, and release them in a new, unique form. We
believe that this kind of frictionless collaboration is a big part of what has made the Rainmeter
ecosystem thrive.
There are a number of open-source software licenses available, and it couldn't be easier to add
them to your Rainmeter skin: just paste the name into the License tag in your [Metadata] section.
The following licenses are commonly used for Rainmeter skins, plugins and addons:
o Creative Commons
o GNU Public License
o MIT License
That said, the same rule applies to Rainmeter skins as it does to any other content on the Internet:
if you are not explicitly given permission to use it, you don't have permission. You really need
some indication of consent from the creator - even a quick email is enough. In addition, it's
always a good idea to credit the original creators when you post your own skin, even if their
license doesn't require it. This means not only the original author of some code that you have
modified, but also any images, addons, plugins and fonts that are not your own.
Make sure your license and credits are included both on your download page (for example, in the
deviation comments on deviantArt) and somewhere in your skin package (either in
your metadata tags, or a separate "readme" file).
1. "Offset" should be a number, e.g. 25R , -10B , (#WORKAREAX# + 75) . If you don't need an offset (the skin is
exactly centered or adjacent to the edge of the screen), leave it out. "SkinWidth" and "SkinHeight" should be the
probable width and height of the skin.
Settings [home]
This page details the files and folders in which Rainmeter-wide and skin-specific settings are
saved. These include each skin's position, transparency, draggability, active or inactive state,
"snapping" behavior, and other general options. Normally, the user does not need to edit these
files directly. Most settings can be changed using theManager, the context menu, or bangs.
Note: Many skins include features that are described as "settings," "options," "preferences," etc.
that allow the user to customize the appearance and behavior of the skin. However, these features
are different from the "settings" described on this page. They are handled entirely by the skin,
usually as variables, and are not managed by Rainmeter at all. Options such as fonts, colors,
passwords, RSS feeds and "weather codes" are in this category. These are not "standard"
features, and are not supported in any formal way.
If Rainmeter is installed as a portable application, settings files are found in the installation
folder.
1. "YourName" is an example.
Rainmeter.ini
Most settings are saved in a file called Rainmeter.ini. The file is written as a standard INI file,
which uses the following1 format:
[Section]
Key=Value
Select all
Each key is an option that modifies the property identified in the section name. The following
sections are used in Rainmeter.ini:
o [Rainmeter]
Defines global Rainmeter options.
o [Skin] sections
Defines options related to individual skins. Each skin is identified by its config name.
o [TrayMeasure] section
Defines options that change the appearance of Rainmeter's tray icon.
When settings are changed in Rainmeter, they are saved to Rainmeter.ini automatically. If
settings are changed in Rainmeter.ini, a refresh application command is needed to apply the new
settings.
1. "Section," "Key" and "Value" are examples.
Other Files
Rainmeter.data
This file is used by Rainmeter's program and some plugins to store "global" settings that are not
related to individual skins. These are system- or user-specific settings that are not saved
with layouts.
Rainmeter.stats
This file records Windows' network usage statistics over time. These statistics are used by
the Net measures to display "cumulative" network usage data. The contents of Rainmeter.stats
may be cleared using the !ResetStats bang.
Layouts
A layout (formerly theme) is a saved "session" or "state". The user can create a layout using
the Manager, which copies the settings in Rainmeter.ini to the layout file. These settings can later
be restored using the Manager or the!LoadLayout bang. Layouts may also be installed with 3rd-
party skins.
Global options under [Rainmeter] are not replaced when a layout is loaded, preserving local
settings such as:
o ConfigEditor
o SkinPath
o DisableVersionCheck
o Language
Plugins
Custom plugins are installed to this folder. Plugins in this folder can be used in the same manner
as the standard plugins included with Rainmeter.
Addons
3rd-party "addon" utilities, such as RainRGB, can be installed to this folder. This is a legacy
feature. As of Rainmeter 2.3, each skin or suite should include its own addons in the @Resources
folder.
[Rainmeter] section [home]
The [Rainmeter] section of Rainmeter.ini defines global options.
Options
SkinPath
ConfigEditorDefault: Notepad
Defines the application that is used to edit the Rainmeter's configuration files when "Edit Skin" is
chosen from the context menu. Relative paths can be used here, which may be useful for portable
installs.
Action to be executed when the middle or right clicking (or double-clicking) on the notification
area (tray) icon.
Note: TrayExecuteR will override the context menu that normally appears (hold CTRL and right-
click to force context menu).
TrayIconDefault: 1
DesktopWorkArea
With multiple monitors, use DesktopWorkArea@N (where N is the number of the monitor) to set the
work area of a specifc monitor. DesktopWorkArea and DesktopWorkArea@0 both represent the
primary monitor.
Note: Moving the taskbar will reset the workarea to Windows' default, as will changing screen
resolution.
DesktopWorkAreaTypeDefault: 0
If set to 1 , DesktopWorkArea will be define margins relative to the edges of the screen.
LoggingDefault: 0
DebugDefault: 0
If set to 1 , logging will be more verbose. Use Debug=1 with caution as it degrades performance.
DisableVersionCheckDefault: 0
DisableDraggingDefault: 0
If set to 1 , sets the draggable state of all active skins to prevent dragging skins with the mouse.
[TrayMeasure] section [home]
The [TrayMeasure] section defines a measure for the notification area icon. To use the default Rainmeter
icon, remove the [TrayMeasure] section completely.
Options
Measure
Type of the measure to be shown as the tray icon. The measure must return values between some
limits.
TrayMeterDefault: Histogram
The manner in which the measure is depicted. This can be either Histogram or Bitmap .
TrayColor1Default: 0,100,0
TrayColor2Default: 0,255,0
TrayBitmap
Path to the tray icon bitmap file for TrayMeter=Bitmap . Defines the name of the bitmap used
when Bitmap is chosen for TrayMeter. The bitmap can have any number of 16x16 frames.
It is possible to use separate icon files as the tray bitmap. %i can be used 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 is like printf.
(e.g. TrayBitmap=tray-%02i.ico will load tray-01.ico, tray-02.ico, ...)
A simple Measure that returns a single value, combined with a TrayBitmap path and name of a
single 16x16 .ico file can be used to replace the default tray icon with a custom one.
Note: The path to a bitmap image or .ico files is a relative path from the main Skins\ folder
(i.e. TrayBitmap=Icons\MyIcon.ico .)
Examples
Show total network activity as a histogram.
[TrayMeasure]
Measure=NetTotal
Interface=0
TrayMeter=Histogram
Select all
[TrayMeasure]
Measure=Calc
Formula=1
TrayMeter=Bitmap
TrayBitmap=Icons\MyIcon.ico
Select all
Skin sections [home]
Skin sections in Rainmeter.ini (e.g. [illustro\Clock] ) define options for how the skin is loaded and
displayed in Rainmeter.
Options
Active
The current active state of the config. If Active is 0 , the config is inactive. If a number other than 0,
the active skin .ini or variant is the file in alphabetical order in the config folder.
WindowX, WindowY
The X and Y position of the skin. A trailing % sign indicates that the value is a percentage of the
screen width. A trailing R will make the position relative to the right edge of the screen instead of the
left. A trailing B will make the position relative to the bottom edge of the screen instead of the top.
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 skin 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.
SavePositionDefault: 1
If set to 1 , changes to the window position will be saved to Rainmeter.ini.
AlwaysOnTopDefault: 0
Defines the Z-position of the skin. Valid values are:
o 2 : Always on top. The skin will be on top of all (including topmost) windows.
o 1 : On top. The skin will be on top of normal windows.
o 0 : Normal. The skin will stay visible when showing the desktop and will be brought to the
foreground on click.
o -1 : Bottom. The skin will stay behind other windows.
o -2 : On desktop. Similar to 0 except that the skin will stick to the desktop and cannot be brought
to the foreground.
DraggableDefault: 1
If set to 1 , the skin can be dragged around with the mouse.
SnapEdgesDefault: 1
If set to 1 , the skin will snap onto screen edges and other skins when moved. To disable snapping
temporarily, hold the CTRL key down while moving the skin.
HideOnMouseOverDefault: 0
If set to 1 , the skin will disappear when the cursor is over it and reappear when the cursor is moved
away. To temporarily disable this behaviour, hold the CTRL down when moving the cursor.
StartHiddenDefault: 0
If set to 1 , the skin will start hidden. The !Show bang must be used to show the skin.
AlphaValueDefault: 255
Sets the transparency of the skin. Valid values range from 0 (fully transparent) to 255 (solid).
FadeDurationDefault: 250
Defines the length of the fade duration in milliseconds when activating/deactivating the skin or when
the fade bangs are used.
ClickThroughDefault: 0
If set to 1 , mouse clicks will pass through the skin. To temporary disable this, hold the CTRL key when
clicking.
KeepOnScreenDefault: 1
If set to 1 , the skin will be kept within the bounds of the screen.
UseD2DDefault: 1
Used to override the global UseD2D rendering setting for an individual skin.
If set to 1 (default), UseD2D is enabled for this skin. If set to 0 , UseD2D is disabled for this skin, and
the older GDI+ rendering engine will be used.
Note: This selection will be disabled if the system does not support Direct2D.
LoadOrderDefault: 0
Determines the order in which the skins are loaded. The value can be any number (even negative).
Skins with the lowest load order are loaded first.
Example: Three skins 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.
Note: The value of LoadOrder has no bearing on the Z-position of the skin. LoadOrder only affects
how skins in the same Z-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.
AutoSelectScreenDefault: 0
If set to 1 , the WindowX/WindowY "@N" settings are made automatically based on the position
of the meter's window. This setting will reset to 0 when a monitor is selected in the Manage window
or on the skins context menu.
Skins [home]
Rainmeter's basic purpose is to run skins. A skin is a movable, dynamic, sometimes-interactive
window that appears over the Windows desktop, and usually gathers and displays information of
some kind.
Skins come with many different sizes, styles, user interfaces, and levels of complexity.
Rainmeter includes utilities for publishing and installing 3rd-party skins. Each skin is generally
stored and loaded as an independent, self-contained module.
If Rainmeter is installed as a portable application, the Skins folder is found in the installation
folder. The Skins folder can also be changed in Rainmeter's settings.
A skin is stored as a file called "SkinName.ini" in its own folder within Skins, as
in: Rainmeter\Skins\SkinName\SkinName.ini .1 (The file and folder names do not need to match.)
All of these folder paths may be referenced in a skin as built-in-variables.
1. "YourName" and "SkinName" are examples.
Variants
If one folder contains multiple SkinName.ini 1 files, they are each considered variants of the same
skin. This means that only one variant can be active at a time, and all variants use the
same settings. Separate skins must be stored in separate folders.
1. "YourName" and "SkinName" are examples.
@Resources
Any supporting files used by the skin, such as images, addon executables, sounds, or Lua scripts,
should also be stored in the skin folder. Complex skins are recommended to store supporting
files in a folder called @Resourcesinside the root config folder. The @Resources folder is
ignored by Rainmeter, except to load custom fonts andcustom cursors.
Config
Each skin is identified with a certain config name. The config name is based on the path from
the main Skins folder to the skin file. For example, if a skin is located at...
C:\Users\YourName\Documents\Rainmeter\Skins\Foo\Bar\SkinName.ini
Because skins may have any number of variants, many Rainmeter features—especially bangs—
refer to a specific skin by its config name, rather than the skin's filename.
Root config
Skins may also be stored in subfolders within the same root config folder. They share the
same @Resourcesfolder, and are packaged and installed together. Otherwise, Rainmeter treats
each subfolder as a separate config.
For example, the following skins belong to the "illustro" suite:
C:\Users\YourName\Documents\Rainmeter\Skins\illustro\Clock\Clock.ini
C:\Users\YourName\Documents\Rainmeter\Skins\illustro\Network\Network.ini
This means that they are both located in the same root config folder, "illustro," in the main Skins
directory.
C:\Users\YourName\Documents\Rainmeter\Skins\illustro\
But since they belong to the same root config, they share the same @Resources folder:
C:\Users\YourName\Documents\Rainmeter\Skins\illustro\@Resources\
A suite is an informal term for skins that are organized together in this manner. Suites are often
used by skin authors to make a set of skins that share a common style, or complement each other
in some way. If a root config folder contains only one SkinName.ini file, then the config and root
config are the same, and the skin can be stored, packaged and installed by itself.
Format
The SkinName.ini file is written as a standard INI file, which uses the following1 format:
[Section]
Key=Value
Select all
Each property of the skin is defined by a section. Each key is an option that modifies that
property. The following sections may be used in skins:
o [Rainmeter]
Defines options that affect the entire skin.
o [Variables]
Defines text strings that can be used throughout the skin.
o Measures
Objects that retrieve (or "measure") information of some kind.
o Meters
Objects that display information and other visual elements.
o MeterStyles
Define options that may be used by several meters.
o [Metadata]
Defines the name, version, license, and other non-functional information about the skin.
A skin must have at least one meter. All other properties are optional, and may not even be
present, depending on what is needed for the skin. For skins that are publicly distributed, the
[Metadata] section is strongly recommended.
There are only a few rules about using the INI format:
Update
When a skin is loaded, it updates on a regular cycle. The length of time between updates is
defined by the Updateoption in the [Rainmeter] section, and defaults to 1 second (or 1000
milliseconds). The update determines when the skin reacts to changes in the values of variables,
measures and options.
Individual meters and measures can be made to update more slowly by "skipping" cycles, using
the UpdateDivideroption. In addition, the !Update bang forces the skin to update immediately,
resetting the timed cycle.
Refresh
When a skin refreshes, all values are reset, and the skin starts over as if it had just been loaded
for the first time. Refreshing also applies any changes that have been made to the code
in SkinName.ini .
A skin can be refreshed from the context menus, or using the !Refresh bang.
[Rainmeter] section [home]
The [Rainmeter] section of a skin defines options for the entire skin.
Note: The [Rainmeter] section does not support Dynamic Variables or changes using the !SetOption bang.
General Options
UpdateDefault: 1000
Defines the update interval of the skin in milliseconds. On each update, meters and measures are
updated.
Using -1 will update the skin only once on load (or on refresh). The skin can then be manually
updated using the !Update bang.
Note: Update is not related to the system clock, and if a computer is busy or a complicated skin
takes longer than the interval to complete a full update of the skin, updates can be unreliable in
relation to elapsed time. Do not use the Update value to drive clocks or other timing sensitive
functions.
AccurateTextDefault: 0
If set to 1 , String meters are measured and rendered using improved padding and character
spacing similar to that provided by Direct2D.
DynamicWindowSizeDefault: 0
If set to 1 , the window size is adjusted on each update to fit the meters.
DragMarginsDefault: 0,0,0,0
Uses 4 values separated by commas to define the area from where the window can be dragged.
The values define a 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
OnUpdateAction
OnFocusAction
Action to execute when the skin recieves focus in Windows (set by clicking the mouse on the
skin).
OnUnfocusAction
OnWakeAction
Action to execute when Windows returns from the sleep or hibernate states.
TransitionUpdateDefault: 100
Defines the update time in milliseconds for meter transitions. While a transition is active the meter
will update at this rate. Currently, only the Bitmap meter supports meter transitions.
ToolTipHiddenDefault: 0
If set to 1 , all tooltips in the skin will be hidden. More information on tooltips.
Background options
General image options
All general image options are valid for Background except Tile , which is handled
with BackgroundMode .
Background
BackgroundModeDefault: 1
Defines the background mode for the skin. Valid values are:
BackgroundMarginsDefault: 0,0,0,0
If BackgroundMode=3 , defines margins of the Background image that are not scaled. The
parameters are left,top,right,bottom .
Example: BackgroundMargins=0,10,0,20 .
10 pixels from the top and 20 pixels from the bottom of the image are not scaled.
This option will specify the background color when BackgroundMode=2 . If SolidColor2 is also
specified, the background is a gradient composed of SolidColor and SolidColor2 .
Hint: SolidColor=0,0,0,1 can be used to make transparent areas of the background clickable.
GradientAngle
Angle of the gradient in degrees (for SolidColor and SolidColor2 ) when BackgroundMode=2 .
BevelTypeDefault: 0
If enabled, draws a bevel around the edges of the entire skin when BackgroundMode=2 . Valid
values are:
o 0 : No bevel
o 1 : Raised
o 2 : Sunken
Context options
ContextTitle, ContextTitle2, ContextTitle3...
If not blank, adds an item to the skin's context menu under "Custom skin actions". Up to
15 ContextTitleNoptions are allowed, with up to 30 characters per option. Additional characters
are truncated with an ellipsis ( ... ). If more than 3 ContextTitleN options are given, "Custom skin
actions" becomes a submenu. If aContextTitleN option is not valid, all
subsequent ContextTitleN options are ignored. In addition, if more than 3 options are given, and
the value of ContextTitleN includes only dashes ( - ), the item is displayed as a separator.
Note: Variables in ContextTitleN are always dynamic. Variable values are read at the time the
context menu is opened.
Note: Variables in ContextActionN are always dynamic. Variable values are read at the time the
context menu item is clicked.
Set to 1 to enable Aero Blur on Windows Vista or Windows 7 operating systems. If no BlurRegions
are specified, the entire skin background is blurred. Note that Windows 8 has removed this
capability.
Defines areas and shapes of the one or more regions of the skin to be blurred. The format of the
option is: BlurRegion=Type, TopX, TopY, BottomX, BottomY ,Radius .
o 0 : Region is disabled
o 1 : Rectangular region
o 2 : Rectangular region with rounded corners (requires Radius )
o 3 : Elliptical region
The parameters following Type define the size and shape of the region. They are, in order:
Example
[Rainmeter]
Update=1000
Blur=1
BlurRegion=1,10,10,190,50
; BlurRegion creates a rectangle starting at 10 pixels from the left, 10 pixels down from the
top, and ending at 190 pixels to the right, 50 pixels from the top.
BlurRegion2=3,10,70,80,110
BlurRegion3=2,10,130,190,170,15
[Background]
Meter=Image
W=200
H=180
SolidColor=0,0,0,50
LeftMouseUpAction=[!AddBlur "1,0,0,200,80"]
Select all
Deprecated options
Author
Note: This option is deprecated. Author should be defined in the [Metadata] section of the skin.
AppVersion
Defines the minimum version of Rainmeter required to use the skin. The formula to calculate the
value is: major * 1000000 + minor1 * 1000 + minor2 .
Note: This option is deprecated. Use the version capabilities in Skin Packager.
Options
Name
Author
Information
A description of the skin, setup and usage instructions, credits, or other documentation elements.
Use | for line breaks.
Version
License
The name of a standard license or explicit permissions and conditions for ports, mods and
derivative works.
Example
[Metadata]
Name=MassToEnergy
Author=Albert Einstein
Information=Skin to calculate the energy potential of a given mass. | Edit the mass of the obj
ect in metric tons in the [Variables] MassOfObject | Do NOT change the SpeedOfLight variable.
Version=1.1905
Select all
Options
@Include, @Include2, @IncludeN
Path to the INI formatted file to include. Is is recommended that include files use the .inc
extension (rather than .ini) and are placed in the @Resources folder.
Remarks
The statement may be placed in any section. When the skin is loaded, all new sections from the included
file are inserted immediately after the section where the statement is placed. Rainmeter treats these
sections - whether they're measures, meters, MeterStyles, etc. - exactly as if they had been written in the
skin .ini itself, and appropriately determines things like layering, relative positions and referenced measure
values.
You may also include files within files. Once again, the ordering is determined by placement: when any file
includes another file, the new contents are added within its own sections, immediately after the section
where the statement is made.
If there is a conflict - that is, if the same section exists in more than one file - Rainmeter will treat
whichever one comes first in the ordering as the "real" section. Any options on the later instances will be
added to the first one, and otherwise the later instances are simply ignored. If there are different values
given for the same key, the last value is taken. Unlike new sections, options on pre-existing sections are
added in their original order, so the calling section may overwrite values from the included file if they are
placed below the @include statement.
Example
IncludeFile.inc:
[Variables]
Color=255,255,255,255
Select all
Skin.ini:
[Variables]
Font=Arial
@Include=IncludeFile.inc
[SomeMeter]
FontFace=#Font#
FontColor=#Color#
Select all
@Resources folder [home]
The @Resources folder in the root folder of a skin is the reccomended location to store and access
images, fonts, sounds, include files, addons or other additional files used by the skin. The @Resources
folder is ignored when scanning for skins, so using it to store images and other resources will improve the
initial load time of Rainmeter.
The @Resources folder must be created at the root config level of the skin
(e.g. Skins\illustro\@Resources ) and the #@# built-in variable can be used as a shortcut to specify it.
Fonts
TrueType (.ttf) fonts in the @Resources\Fonts folder are automatically loaded and can be used with
the FontFaceoption in string meters.
Cursors
Custom cursors (.ani or .cur) in the @Resources\Cursors folder are automatically loaded and can be used
withMouseActionCursorName.
Examples
ImageName=#@#Images\MyImage.png
LeftMouseUpAction=["#@#Addons\MyAddon.exe" "Parameter"]
@Include=#@#Variables.inc
Select all
Meters [home]
A meter is an object that defines a visual element that is displayed in a skin. Meters are one of
the two major kinds of objects in a skin, along with measures.
Usage
A meter does not have a "value" in the way that measures do. Some meters are used to display or
respond to informational values in two ways:
o A meter can be bound to a measure. In this way, the meter will automatically display the
value in a way that is appropriate for the type of meter. For example, a string meter would
display the string value of a measure as a block of text, while a bar meter would display the
same measure's number value as a percentage of its maximum value. Some meter types must
be bound to a specific measure; on others, binding is optional.
o A meter can use variables in any option. This includes section variables, which provide an
alternative way of using measure values. Dynamic variables are allowed in all options on all
meters (other than the Meter option).
Not all meters are used to display information. Some are used to create static elements, such as
background images, frames and labels. Specific options and requirements for each meter type are
detailed in their individual articles.
Format
A meter is written as a section in the skin. All meters use the Meter option to define the section as
a specific type of meter. Most other meter options depend on the type, but there are some general
options that are valid in many or all meters.
Below is an example of a complete working meter:
[MyMeter]
Meter=String
Text=Hello, world!
Select all
Positions
A meter has a certain position, which is given by its X and Y options, and dimensions, which
are given by its W and H options. This means that every meter is actually bounded by a
rectangular block of pixels, even though it may have a transparent background and therefore
appear to be "free-floating."
Meters are positioned within the skin window. This means that when the skin is moved, its
meters move with it. It also means that meter positions are given relative to the top-left corner of
the skin, rather than the desktop. For example, a meter with the option X=15 starts 15 pixels from
the left edge of the skin.
The dimensions of the skin window are determined by the positions and dimensions of all
meters when the skin is loaded. If the skin has DynamicWindowSize enabled, the window will
be "pushed" outward if meters are moved rightward or downward or expand in width or height.
However, meters that move leftward beyond X=0 , or upward beyond Y=0 , will appear either "cut
off" or completely invisible. There is no technical limit to the size of the skin window, but,
practically speaking, skins should be made to fit within the current desktop work area.
Left: a skin with a single meter that appears to be "free-floating." Right: the same skin with colored backgrounds
added, showing how the meter (purple) is actually positioned inside the skin window (green) and "pushes" the
window boundaries to the lower-right.
Order
The order of meters in the skin code is important in two ways:
o "Z" position. Meters are drawn in order. Later meters appear "on top of" or "in front of"
earlier meters. This means that, for example, a background image that appears behind all
other meters must be the first meter that appears in the skin code.
o Relative positions. A meter's X or Y position may be set "relative" to the position of the
previous meter. This is useful for groups of meters that follow a common pattern, such as
lists, tabs or menu items.
MeterStyles
Meters can use option values from other meters. Using the MeterStyle option, one meter
may inherit all options from one or more "parent" sections.
For more, see MeterStyles.
General Meter Options [home]
Options available for use with all meters.
Options
Meter
Type of the meter (e.g. Bar or String ).
MeterStyle
Specifies one or more sections as MeterStyles from which option values are inherited. Multiple
MeterStyles are delimited with pipes ( | ).
X, YDefault: 0
Specify the x and y position of the meter relative to the top-left edge of the skin. If the value is
appended with r , the position is relative to the previous meter x or y position (e.g. 5r or (5 * 2)r ). If
the value is appended with R , the position is relative to the bottom-right edge of the previous meter.
W, H
The width and height of the meter. String meters and Image meters (with an image) can
automatically determine width and height. For all other cases, W and H must be defined.
HiddenDefault: 0
If set to 1 , the meter is hidden. The visibility can also be changed with the !ShowMeter and
!HideMeter bangs.
UpdateDividerDefault: 1
Sets the update frequency of the meter.
Example: If set to 1 , the meter is updated on every update cycle. If set to 5 , the meter is updated on
every fifth update cycle and so forth.
OnUpdateAction
Action to execute on each Update of the meter. This option obeys any UpdateDivider on the meter.
Hint: SolidColor=0,0,0,1 can be used to make transparent areas of the meter clickable.
PaddingFormat: Left,Top,Right,Bottom
Allows adding padding in pixels around any or all sides a meter. The width and height of the meter
will dynamically be adjusted to the new size.
Example: Padding=5,10,5,10
GradientAngle
Angle of the gradient in degrees (for SolidColor and SolidColor2 ).
BevelTypeDefault: 0
If enabled, draws a bevel around the edges of the rectangle specified by H and W . Valid values are:
o 0 : No bevel
o 1 : Raised
o 2 : Sunken
AntiAliasDefault: 0
If set to 1 , antialising is used to display the meter.
DynamicVariablesDefault: 0
If set to 1 , the meter is dynamic.
TransformationMatrixDefault: 1;0;0;1;0;0
Defines a 3x2 matrix which can be used to transform the meter. Transformations include: scaling,
skewing, and translating (ie. moving). There must be exactly 6 values separated by semicolons ; .
Combining these can have drastic effects on the meter it is applied to.
Examples:
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.
General Image Options [home]
Options available for use with all images. These options are to modify the display of an image
file, and do not work with square/rectangle Image meters created entirely with SolidColor.
Note: Valid image file types in Rainmeter are .png, .jpg, .bmp, .gif, .tif and .ico. If no extension
is provided on an image file name, .png is assumed.
Options
ImagePath
Path of the image location.
ImageCrop
Crops the image. The value should be in the form: 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).
GreyscaleDefault: 0
If set to 1 , the image is greyscaled.
ImageTintDefault: 255,255,255,255
Color to tint the image with. If the alpha value is specified, the image can be made semi-
transparent (0 means invisible, 255 mean fully opaque). The default value
( 255,255,255,255 for opaque white) and leaves the image unaltered.
Note: Combining Greyscale and ImageTint recolors the image to the specified color.
Without Greyscale , the specified color is added to the image (i.e. the image is tinted).
ImageAlphaDefault: 255
Opacity of the image ranging from 0 (invisible) to 255 (opaque). If set, overrides the
alpha component specified in ImageTint .
ImageFlipDefault: None
Flips the image. Valid values are None , Horizontal , Vertical or Both .
ImageRotateDefault: 0.0
Rotates the image by the specified angle in degrees. Negative angles can be used for
counter-clockwise rotation.
UseExifOrientationDefault: 0
If set to 1 , the image is rotated based on the EXIF data encoded in the image by a camera.
ColorMatrixN
Defines a 5x5 matrix used to manipulate the color values of the image. It is divided into
five separate options, 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
Select all
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 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 (e.g. 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
(e.g. ColorMatrix5=0.5; 0; 0; 0; 1 adds 50% to the red value).
See also: ColorMatrix Guide.
MeterStyles [home]
Meters can use option values from other meters. Using the MeterStyle option, one meter
may inherit options from one or more "parent" sections.
Usage
If an option is given on both the parent meter and the child meter, the child's setting overrides the
parent's for that meter. If multiple parents are given, separated by pipes ( | ), options on later
parents override those on earlier parents.
Inherited options are used just as if they were explicitly written in the child meter. For example,
if the#CURRENTSECTION# variable is used in an inherited option, it resolves as the name of
the child meter, not the parent. Similarly, if a relative position is used, such as X=5R , the meter
immediately previous to the child meter is used, not the parent's.
The only options that cannot be inherited are:
o Meter. The meter type must be explicitly set in order to identify a section as a meter.
o MeterStyle itself. This means that MeterStyles cannot be inherited through more than one
generation. In other words, meters cannot have "grandparents."
MeterStyle Sections
Meters may inherit options from sections that are not meters. A skin section of any name1 that
does not have the Meter or Measure option is treated as a MeterStyle. A MeterStyle section is
completely ignored by Rainmeter unless it is referenced in the MeterStyle option of a meter.
Options that are not valid for the child meter are also simply ignored, which means that the
parent and child can be different types.
1. Aside from [Rainmeter] and [Variables], which are reserved for special purposes.
Example
[MyFirstParent]
Meter=String
Text=I'm a parent!
X=10
FontColor=255,0,0
FontFace=Segoe UI
FontSize=15
AntiAlias=1
StringStyle=Bold
[MySecondParent]
StringStyle=Italic
FontColor=0,255,0
[MyChild]
Meter=String
MeterStyle=MyFirstParentMeter | MySecondParentMeter
FontColor=0,0,255
Select all
MyChild inherits all options from the MyFirstParent meter and the MySecondParent MeterStyle.
This means it is displayed with all of the same font, color, size and other options given for those
sections. The second parent's StringStyle option overrides the first parent's, which means the
child meter displays italic text. Likewise, the child meter's FontColor option overrides both
parents', so the text displays with a color of 0,0,255 (blue).
Tooltips [home]
Creates a tooltip which appears when the mouse is hovered over the meter.
Options
ToolTipText
Text to display. This option must be specified in order to use the tooltip.
Values from MeasureName from the meter can be used with %1 , %2 etc. as appropriate for
various meter types:
Note: To wrap the text on multiple lines, use the #CRLF# variable.
ToolTipTitle
Title of the tooltip. Only one line of text can be used.
ToolTipIcon
Specifies the icon to use for the tooltip. This can be the path to a .ico file or one of the
following preset icons:
o Info
o Warning
o Error
o Question
o Shield
ToolTipTypeDefault: 0
If set to 1 , a balloon tooltip is displayed. Otherwise a normal tooltip displayed.
ToolTipWidthDefault: 1000
Maximum width for the tooltip. When the width is reached, the text will automatically
wrap.
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.
ToolTipHiddenDefault: 0
If set to 1 , the tooltip is not displayed.
Note: This option can also be used in the [Rainmeter] section to hide all tooltips in the
skin.
Example
[Rainmeter]
Update=1000
[MeasureCPU]
Measure=CPU
[MeasureCPUSpeed]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\0
RegValue=~MHz
UpdateDivider=86400
[MeasureCPUName]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\0
RegValue=ProcessorNameString
UpdateDivider=86400
[MeasureCPUIdentifier]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=HARDWARE\DESCRIPTION\System\CentralProcessor\0
RegValue=Identifier
UpdateDivider=86400
[MeasureCPUText]
Meter=String
X=0
Y=0
FontFace=Segoe UI
FontColor=255,255,255,255
SolidColor=0,0,0,1
FontSize=12
StringStyle=Bold
StringAlign=Left
AntiAlias=1
Text="CPU Usage:"
ToolTipTitle=CPU Information
ToolTipType=1
ToolTipIcon=INFO
DynamicVariables=1
[MeterCPU%]
MeasureName=MeasureCPU
Meter=String
X=140
Y=-2r
FontFace=Segoe UI
FontColor=255,255,255,255
FontSize=14
StringStyle=Bold
StringAlign=Right
AntiAlias=1
NumOfDecimals=0
Percentual=1
Text="%1%"
Select all
Options
General meter options
MeasureName
Name of the measure to use. The measure used must be able to return percentual values.
BarColor
BarImage
BarBorder
If BarImage is specified, defines 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).
BarOrientationDefault: Horizontal
FlipDefault: 0
Example
[Rainmeter]
Update=1000
Author=RainmeterTeam
[MeasureUsedMemory]
Measure=PhysicalMemory
[MeasureUsedDrive]
Measure=FreeDiskSpace
Drive=C:
[MeterMemoryText]
Meter=String
MeasureName=MeasureUsedMemory
FontFace=Segoe UI
FontSize=10
FontColor=255,255,255,255
StringStyle=Bold
AutoScale=1
AntiAlias=1
Text=Used RAM: %1
[MeterUsedMemoryBar]
MeasureName=MeasureUsedMemory
Meter=BAR
Y=3R
W=250
H=30
BarColor=185,250,160,255
SolidColor=150,150,150,255
BarOrientation=Horizontal
[MeterDriveText]
Meter=String
MeasureName=MeasureUsedDrive
Y=10R
FontFace=Segoe UI
FontSize=10
FontColor=255,255,255,255
StringStyle=Bold
AutoScale=1
AntiAlias=1
Text=Free Drive C: %1
[MeterUsedDriveBar]
MeasureName=MeasureUsedDrive
Meter=Bar
Y=3R
W=250
H=30
BarColor=185,250,160,255
SolidColor=150,150,150,255
BarOrientation=Horizontal
Options
General meter options
All general image options are valid for BitmapImage , except ImageCrop , and ImageRotate .
MeasureName
Name of the measure used to determine the frame to display. The measures used must be able
to returnpercentual values.
Example: If the image contains 5 frames, the first frame is displayed when the percentual
measure value is between 0% and 19%, the second frame is shown from 20% to 39% , and so on.
BitmapImage
Path to the image. The frames in the images can be laid out either horizontally or vertically (the
orientation is determined automatically from the height or the width of the image). The size of a
single frame is also determined automatically, so no extra space should surround the frames.
If BitmapExtend is not set to 1 , the measure being used must return values from 0.0 to 1.0 or
must have both MaxValue and MinValue set.
BitmapFramesDefault: 1
BitmapTransitionFrames
The number of transition frames per each actual frame. The transition frames are frames which
are displayed when the measure value changes. The same number of transition frames must be
used after each regular frame. The TransitionUpdate option in the [Rainmeter] section
determines the rate at which the transition frames change during the transition. The total
duration of the transition is therefore TransitionUpdate multiplied by BitmapTransitionFrames .
Note: BitmapFrames always defines the total number of frames in the bitmap, including the
transition frames.
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 .
BitmapZeroFrameDefault: 0
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.
BitmapExtendDefault: 0
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.
BitmapDigitsDefault: 0
Number of digits that are drawn (for BitmapExtend=1 ). The first frame is used if the value doesn't
have as many digits as this defines.
BitmapAlign
Alignment of the bitmap value (for BitmapExtend=1 ). Valid values are Left , Center , and Right .
BitmapSeparationDefault: 0
Positive or negative number used as the separation between digits when BitmapDigits is higher
than one.
Example
[Rainmeter]
Update=1000
[MeasureCPU]
Measure=CPU
[MeterLabel]
Meter=Image
ImageName=#@#Images\CPULabel.png
X=0
Y=0
[MeterCPU]
Meter=Bitmap
MeasureName=MeasureCPU
X=0
Y=5R
BitmapImage=#@#Images\nums.png
BitmapFrames=10
BitmapExtend=1
BitmapDigits=2
[MeterPercentSign]
Meter=Image
ImageName=#@#Images\percent.png
X=70R
Y=r
Options
General meter options
All general image options are valid for ButtonImage , except ImageCrop , and ImageRotate .
ButtonImage
Path to the button image. The image should have 3 frames laid out either either horizontally or
vertically (the orientation is determined by the width and height of the image). The first frame
corresponds to the normal state, the second to the clicked state, and the third to the hover
state.
ButtonCommand
Example
[Rainmeter]
Update=500
DynamicWindowSize=1
[MeterPacman]
Meter=Button
ButtonImage=#@#Images\PacButton.png
ButtonCommand=["Notepad"]
[MeterText]
Meter=String
FontFace=Segoe UI
FontSize=12
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
X=30
Y=90
Options
General meter options
MeasureName, MeasureName2
Name of the primary (required) and secondary (optional) measures to use for the
histogram. The measure(s) used must be able to return percentual values.
AutoscaleDefault: 0
GraphStartDefault: Right
Starting point of the graph. Valid values are Left and Right .
GraphOrientationDefault: Vertical
Orientation of the graph elements. Valid values are Horizontal and Vertical .
FlipDefault: 0
Path to the location of optional image used behind the primary, secondary or both
histograms.
See ImageCrop.
See ImageTint.
See ImageAlpha.
See ImageFlip.
See ImageRotate.
See ColorMatrixN.
Deprecated Features
The following options have been deprecated and should not be used. They are still supported, but
may be removed in future versions.
o SecondaryMeasure
MeasureName2 should be used to define an optional secondary measure for the meter.
Example
[Rainmeter]
DynamicWindowSize=1
Update=500
[MeasureCPU]
Measure=CPU
Processor=0
MinValue=0
MaxValue=100
[MeterCPUBackgroundImage]
Meter=Image
SolidColor=24,102,10
X=0
Y=0
W=220
H=70
[MeterCPUHistogram]
Meter=Histogram
MeasureName=MeasureCPU
X=5
Y=5
W=210
H=60
PrimaryColor=255,255,255,255
SolidColor=0,0,0,100
AntiAlias=1
[MeterText]
Meter=String
MeasureName=MeasureCPU
X=110
Y=10R
FontFace=Segoe UI
FontSize=13
FontColor=255,255,255,255
StringStyle=Bold
StringAlign=Center
AntiAlias=1
Name(s) of the measure(s) to use in ImageName with the %N syntax. This option does not need to
be specified if not needed.
ImageNameDefault: %1.png
Name of the image file. The values of the measure(s) specified with MeasureName can be used
with the %N syntax as follows:
MeasureName=SomeMeasure
MeasureName2=SomeMeasure2
ImageName=%1-%2.png
; SomeMeasure2, respectively.
Select all
Note: If an extension is not provided for the image file, .png is assumed.
PreserveAspectRatioDefault: 0
Controls how W and H scale the image when Tile=0 . Valid values are:
o 0 : The image is scaled to exactly fit the bounds specified by W and H without regard to aspect
ratio.
o 1 : The image is scaled to fit within the bounds specified by W and/or H while preserving the
aspect ratio.
o 2 : The image is scaled and cropped to fill the bounds specified by W and/or H while
preserving the aspect ratio.
ScaleMarginsFormat: Left, Top, Right, Bottom
Margins of the image to exclude from scaling when Tile=0 and PreserveAspectRatio=0 .
TileDefault: 0
If set to 1 , the image is tiled (repeated) within the bounds defined by W and H .
Note: Using the SolidColor option, along with W and H options, an image meter may be used to
draw squares, rectangles or lines without needing any ImageName or MeasureName .
Deprecated Features
The following options have been deprecated and should not be used. They are still supported, but
may be removed in future versions.
o Path
The Path option to define the location of images is replaced by the ImagePath option
in general image options.
Example
[Rainmeter]
Update=1000
[MeterBackground]
Meter=Image
ImageName=#@#Images\Background.jpg
W=200
H=200
GreyScale=1
ImageTint=171,54,3,150
[MeasureMyPictures]
Measure=Plugin
Plugin=QuotePlugin
PathName=#@#\Pictures
Subfolders=0
FileFilter=*.jpg;*.gif;*.bmp;*.png
UpdateDivider=10
[MeterShowPicture]
Meter=Image
MeasureName=MeasureMyPictures
X=25
Y=25
W=150
H=150
PreserveAspectRatio=1
LeftMouseUpAction=!Refresh
Options
General meter options
LineCountDefault: 1
Names of the measures to use as the source for a line. The measure(s) used must be able to
return percentual values.
LineWidthDefault: 1.0
Scales (multiplies) the measure value to use for a line by the specified number.
AutoScaleDefault: 0
If set to 1 , the lines are automatically scaled so that the largest value is visible in the meter.
Otherwise the largest maximum value of the all of the measures used is used as the scale.
HorizontalLinesDefault: 0
HorizontalLineColorDefault: 0,0,0,255
GraphStartDefault: Right
Starting point of the graph. Valid values are Left and Right .
GraphOrientationDefault: Vertical
Orientation of the graph elements. Valid values are Horizontal and Vertical .
FlipDefault: 0
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeterBackground]
Meter=Image
W=220
H=80
SolidColor=150,150,150,255
[MeasureNetIn]
Measure=NetIn
[MeasureNetOut]
Measure=NetOut
[MeterNetworkLine]
Meter=Line
MeasureName=MeasureNetOut
MeasureName2=MeasureNetIn
X=5
Y=5
W=210
H=70
LineCount=2
LineColor=140,252,124,255
LineColor2=254,211,122,255
SolidColor=0,0,0,255
AutoScale=1
AntiAlias=1
Options
General meter options
ImageName
MeasureName
Name of the measure whose percentual value controls the angle of rotation. The measure must
be able to return percentual values.
StartAngleDefault: 0.0
RotationAngleDefault: (2 * pi)
The size of the rotation angle for the line in radians. Positive values result in clockwise rotation
while negative values result in counter-clockwise rotation.
ValueRemainderDefault: 0
Use remainder instead of the actual measured value. This can be used to create an analog clock.
Remarks
The Rotator meter displays an image that rotates around a point where the angle of rotation is
determined by the measure it is attached to. Rotator meters require that the measure being used is
from 0.0 to 1.0 or has both MaxValue and MinValue set.
The center of rotation will be located at the center of the height and width specified for the
meter. If height and width are not specified, the center of rotation will be located at the X and Y
coordinates provided for the meter. It is also important to remember that if the height and width
are not specified, any portion of the meter that lies outside of the skin window will be cut off.
Here is an example of how to Rotate an Image Around its Center.
Example
[Rainmeter]
Update=1000
[MeasureTime]
Measure=Time
[MeterClockFace]
Meter=Image
ImageName=#@#Images\ClockFace.png
W=110
H=116
[MeterHoursHand]
Meter=ROTATOR
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
ImageName=#@#Images\Hours.png
OffsetX=3
OffsetY=3
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=43200
[MeterMinutesHand]
Meter=ROTATOR
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
ImageName=#@#Images\Minutes.png
OffsetX=3
OffsetY=3
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=3600
[MeterSecondsHand]
Meter=ROUNDLINE
MeasureName=MeasureTime
X=0
Y=0
W=110
H=116
LineLength=52
LineColor=247,220,129,255
LineWidth=2
AntiAlias=1
StartAngle=4.7124
RotationAngle=6.2832
ValueRemainder=60
Options
General meter options
Name of the measure whose percentual value controls the angle of rotation. The measure
must be able to return percentual values.
Note: If MeasureName is not specified, then a number value of 1.0 is used by the meter.
LineWidthDefault: 1
LineLength
Length of the line. The length is always measured from the center of rotation (regardless
of the LineStart option).
ControlLength, LengthShift
LineStart
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
ValueRemainder
Use remainder instead of the actual measured value. This can be used to draw an analog
clock.
LineColor
Solid
Remarks
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 at the X and Y position of the meter
and any part of the meter that intersects with the edges of the skin window will be cut off. If
width and height are specified, the center point will be in the middle of the bounding box and the
skin window will include the meter.
If MeasureName is not specified, then a circle may be drawn without requiring any measure in the
skin to create a value.
Example
[Rainmeter]
Update=1000
[MeasureFreeDisk]
Measure=FreeDiskSpace
Drive=C:
[MeasureTotalDisk]
Measure=FreeDiskSpace
Drive=C:
Total=1
[MeterTotalDisk]
Meter=Roundline
MeasureName=MeasureTotalDisk
X=0
Y=0
W=120
H=120
StartAngle=4.712
RotationAngle=6.283
LineLength=60
LineColor=62,140,132,255
Solid=1
AntiAlias=1
[MeterFreeDisk]
Meter=Roundline
MeasureName=MeasureFreeDisk
X=0
Y=0
W=120
H=120
StartAngle=4.712
RotationAngle=6.283
LineLength=56
LineColor=216,242,240,255
Solid=1
AntiAlias=1
[MeterTotalText]
Meter=String
MeasureName=MeasureTotalDisk
X=60
Y=130
FontFace=Segoe UI
FontSize=12
FontColor=62,140,132,255
StringStyle=Bold
StringAlign=Center
AntiAlias=1
AutoScale=1
Text=Total: %1
[MeterFreeText]
Meter=String
MeasureName=MeasureFreeDisk
X=60
Y=R
FontFace=Segoe UI
FontSize=12
FontColor=216,242,240,255
StringStyle=Bold
StringAlign=Center
AntiAlias=1
AutoScale=1
Text=Free: %1
Options
General meter options
All general meter options are valid.
TextDefault: %1
Text to display. If MeasureName is specified, Text will default to the value of the measure.
The values of the measure(s) specified with MeasureName can be used with the %N syntax as
follows:
MeasureName=SomeMeasure
MeasureName2=SomeMeasure2
; SomeMeasure2, respectively.
Select all
The Text option can take any combination of the following forms:
Prefix
Text displayed before Text .
Note: It is preferable to put the entire string in Text instead of using this option.
Postfix
Text displayed after Text .
Note: It is preferable to put the entire string in Text instead of using this option.
FontFaceDefault: Arial
Family name of the font to use for the text. The font must either be installed in Windows
directly or must beloaded at runtime.
See also: Fonts Guide.
FontSizeDefault: 10
Size of the font.
FontColorDefault: 0,0,0,255
Color of the font.
StringAlignDefault: Left
Horizontal and vertical alignment of the string. Valid values are:
The string will be aligned using the values of the X and or Y settings as the anchor point.
So to CenterCenter align a string within a meter with a width and height of 100,
set X=50 , Y=50 and StringAlign=CenterCenter .
StringStyleDefault: Normal
Style of the string. Valid values are Normal , Bold , Italic , and BoldItalic .
StringCaseDefault: None
Converts the string to a case. Valid values are None , Upper , Lower , and Proper .
StringEffectDefault: None
Effect applied to a string. Valid values are None , Shadow , and Border .
FontEffectColorDefault: 0,0,0,255
Color of the StringEffect.
ClipStringDefault: 0
Controls how strings are truncated (clipped) or wrapped to fit in or expand the containing
meter. Valid values are:
Note: The changing size of meters when ClipString=2 can cause truncation issues with
the overall window size of the skin, unless DynamicWindowSize=1 is set in the
[Rainmeter] section of the skin.
ClipStringW
Sets a maximum width that the meter will expand to accommodate the string
when ClipString=2 . This setting is ignored if the W option is set.
ClipStringH
Sets a maximum height that the meter will expand to accommodate the string
when ClipString=2 . This setting is ignored if the H option is set.
AngleDefault: 0.0
Defines the angle of the text in radians.
Note: The size and position of the text are always calculated as if the text is horizontal.
PercentualDefault: 0
If set to 1 , the value of bound measures are converted to a percentage. This is useful if a
measure does not return a percentage value, but either automatically defines a valid
"range" of values (e.g. FreeDiskSpace) or when the MinValue and/or MaxValue options
are manually set on the measure.
NumOfDecimalsDefault: 0
Number of decimals to display with numerical measure values.
ScaleDefault: 1
Scaling factor used for the measure values. The measure value is divided by the specified
value. If the specified value has a decimal point (e.g. 1000.0 ), the result will also display
decimals.
Note: If AutoScale is enabled, this option is ignored.
AutoScaleDefault: 0
Automatically scales the measure values. The scaled result is appended with k, M, G, etc.
as appropriate. Valid values are:
o 0: Disabled.
o 1: Scales by 1024.
o 1k : Scales by 1024 with kilo as the lowest unit.
o 2 : Scales by 1000.
o 2k : Scales by 1000 with kilo as the lowest unit.
Note: Using the SolidColor option, with a value of SolidColor=0,0,0,1 , will give a string meter a
solid but virtually transparent background. This can make executing mouse actions on the text
easier and more reliable.
Example
[Rainmeter]
Update=1000
[MeasureDate]
Measure=Time
Format=%A, %b %#d, %Y
[MeterDate]
Meter=String
MeasureName=MeasureDate
X=0
Y=0
FontColor=255,255,255,255
FontFace=Segoe UI
FontSize=14
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Text=Today is: %1
[MeterText1]
Meter=String
X=0
Y=0R
FontColor=197,239,252,255
FontFace=Segoe UI
FontSize=12
AntiAlias=1
[MeterText2]
Meter=String
X=300
Y=10R
W=300
H=20
StringAlign=Right
FontColor=255,255,255,255
FontFace=Segoe UI
StringStyle=Italic
FontSize=14
AntiAlias=1
[MeterText3]
Meter=String
X=150
Y=5R
W=300
H=20
StringAlign=Center
FontColor=252,245,197,255
FontFace=Segoe UI
StringStyle=Bold
FontSize=14
AntiAlias=1
[MeterText4]
Meter=String
X=0
Y=10R
W=200
H=50
ClipString=1
FontColor=197,252,223,255
FontFace=Segoe UI
StringStyle=Bold
FontSize=14
AntiAlias=1
Usage
Unlike meters, measures do not display anything by themselves. You cannot "see" a measure in a
skin. The measure simply provides the information as a value, which can be used in several
ways:
o A meter can be bound to a measure. In this way, the meter will automatically display the
value in a way that is appropriate for the type of meter. This also takes the measure's range
and scale into account (if applicable).
o The measure value can be referenced as a section variable. In this way, the value can be used
in almost any meter or measure option. As a section variable, the value is used "literally,"
which means it does not automatically account for the range or scale.
o A measure can trigger an action when the value passes into a certain range.
Some measure types may have their own special rules. These are detailed in their individual
articles.
Format
A measure is written as a section in the skin. All measures use the Measure option to define the
section as a specific type of measure. Most other measure options depend on the type, but there
are some general optionsthat are valid in many or all measures.
Below is an example of a complete working measure:
[MeasureFour]
Measure=Calc
Formula=2+2
UpdateDivider=-1
Select all
Values
A measure actually provides two values: a string, or "raw text," and a number, which can be
used in calculation formulas. Depending on the type of measure, these values may be the same,
which means you can use them interchangeably; or, they may be completely different. The
article for each measure type explains what is provided for both the number and string values.
o When a meter is bound to a measure, it automatically uses the correct value for its type.
o When using Section Variables, different syntax is used to refer to a measure's string or
number value.
o The Substitute option affects only the string value of the current measure.
o IfAction options use only the number value of the current measure.
o The Formula option in a Calc measure uses only the number values of other measures, unless
section variables are used instead.
Although a string value is not a "true" number, it can be used like a number in formulas and
options, as long as it contains only numeric characters and valid operators. (Otherwise, it is
treated as zero.) Likewise, a number value can be displayed or stored to a variable as a string of
text, although this may cause the value to lose precision.
Percentage
Some meters require that a measure provide a value that can be used as a percentage. Measures
that provide a actual maximum range value based on the resource being measured (or with the
range of 0.0 to 1.0) are interpreted as a percentage by these meters. Measures which do not
provide a range will require that theMinValue and MaxValue options be set on the measure to
define a low to high range. Setting these options does not effect the actual value of the measure,
but only defines the high and low range used by meters.
Note: The range for a measure can be viewed in the Skins tab of the About window.
Order
Each time the skin updates, all measures in the skin are evaluated in order. This means that if a
measure references the value of another measure that has not been evaluated yet, it will receive
the value from the previous update.
For example:
[MeasureCounterPlusOne]
Measure=Calc
Formula=MeasureCounter + 1
[MeasureCounter]
Measure=Calc
Formula=Counter
Select all
The intent is for [MeasureCounterPlusOne] to add one to the value of [MeasureCounter], so that
it is always greater than [MeasureCounter]. If the measures were in the opposite order, this
would work. However, because [MeasureCounterPlusOne] is evaluated before
[MeasureCounter], it will only add to the old, "outdated" value, and the two measures will
remain equal.
General Measure Options [home]
Options available for use with all measures.
Options
Measure
UpdateDividerDefault: 1
Frequency at which the measure value is updated. If set to -1 , the measure will be updated only
once on load or on refresh. Otherwise, the global Update option is multiplied by the specified
value to determine the update frequency.
Example: If Update=1000 (in the [Rainmeter] section) and UpdateDivider=30 , the measure is
updated every 30 seconds.
OnUpdateAction
Action to execute on each Update of the measure. This option obeys any UpdateDivider on the
measure.
OnChangeAction
Action to execute when the number or string value of the measure changes. The initial change
from "nothing" to a value when the skin is loaded or refreshed is ignored.
Note: With plugins that perform work in the background (e.g. WebParser and FileView), the
action will be executed on the first change when loading or refreshing the skin.
InvertMeasureDefault: 0
Example: With the FreeDiskSpace measure, this option can be used to measure the used disk
space instead of the free disk space.
MaxValueDefault: 1.0
The maximum value of a measure. This is used to set a range of values for use in meters that
require apercentual value. The actual value of the measure will remain unchanged.
MinValueDefault: 0.0
The minimum value of a measure. This is used to set a range of values for use in meters that
require apercentual value. The actual value of the measure will remain unchanged.
AverageSizeDefault: 1
If set, the measure value will be an average of the specified number of past actual values.
DynamicVariablesDefault: 0
DisabledDefault: 0
If set to 1 , the measure value is never updated. A disabled measure always returns 0 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).
PausedDefault: 0
If set to 1 , the measure value is never updated. A paused measure will return its most recent
value.
IfActions [home]
IFActions are action options you add to a measure to execute one or more Bangs or commands when a
defined threshold value is returned by the measure. IfActions are done by using pairs of Above, Equal, and
Below Value and Action statements. You may have one of each kind of IfAction in a single measure.
Options
IfAboveValue
IfAboveAction
Action to be 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.
IfBelowValue
IfBelowAction
Action to be 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.
IfEqualValue
IfEqualAction
Action to be 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 compared value is rounded to
an integer.
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureCPU]
Measure=CPU
Processor=0
IfAboveValue=49
IfBelowValue=50
[MeterCPU]
Meter=String
MeasureName=MeasureCPU
X=0
Y=0
FontSize=15
FontColor=0,255,0,255
AntiAlias=1
Text=CPU: %1%
Select all
Substitute [home]
Substitute replaces some or all of a string value returned by a measure with another string.
Options
Substitute
Note that the order in which the pairs are specified can be important. For example,
with "1":"One","10":"Ten" , all occurences of 1 are replaced with One, but occurences of 10 will
not be replaced with Ten (because the first pair already changed all 1 characters). For correct
behaviour, the order should be reversed (i.e. "10":"Ten","1":"One" ).
Instead of "pattern":"replacement" , single quotes can be used either around the pattern or the
replacement (i.e. 'pattern':"replacement" or "pattern":'replacement' , but
not 'pattern':'replacement' ). This can be useful when either the pattern or the replacement
contains double quotes (e.g. '"':"double quote" replaces all occurences of " with double quote).
RegExpSubstituteDefault: 0
If set to 1 , Perl compatible regular expressions can be used in the pattern part
of Substitute pairs.
If captures are used in the pattern (e.g. (.*) ), they can be referenced in the replacement part
using \1 (first capture), \2 (second capture), etc. The entire match can also be referenced with \0 .
Examples
Normal substitution:
[MeasureYear]
Measure=Time
Format=%Y
; Assuming that the current year is 2012, the string value of [MeasureYear] will
; be "Twenty Twelve" (without quotes). Since Subsitute only affects the string
[MeasureCalc1]
Measure=Calc
Formula=MeasureYear
; Since the number value of MeasureYear is used above, the value of [MeasureCalc1]
[MeasureCalc2]
Measure=Calc
Formula=[MeasureYear]
DynamicVariables=1
; Since the string value of MeasureYear is used above, a syntax error will occur
; (as "Formula=Twenty Twelve" is not a valid formula).
Select all
[MeasureEx1]
Measure=Time
Format=I am Rainy
RegExpSubstitute=1
[MeasureEx2]
Measure=Time
Format=Hello, world!
RegExpSubstitute=1
Substitute="^(.{0,5}).+$":"\1..."
[MeasureEx3]
Measure=Time
Format=192.168.1.101
RegExpSubstitute=1
Substitute="^(\d{1,3}).(\d{1,3}).(\d{1,3}).\d{1,3}$":"\1.\2.\3.***"
Select all
Calc measure [home]
Measure=Calc calculates mathematical formulas.
Note: The formula syntax and operators described for the Calc measure can also be used in
formulas in other measure and meter options. Formulas used outside of a Calc measure must be
enclosed in parentheses.
Options
General measure options
Formula
UpdateRandomDefault: 0
UniqueRandomDefault: 0
If set to 1 , any measure using the random constant and UpdateRandom will not repeat until all
values between and including LowBound and HighBound have been used. Note that any
dynamic change to LowBound orHighBound will reset the tracking of values.
LowBoundDefault: 0.0
HighBoundDefault: 100.0
Formula Syntax
Operators
o + : addition
o - : substraction
o * : multiplication
o / : division
o ** : power
o % : remainder or modulus
o & : bitwise and
o | : bitwise or
o ^ : bitwise xor
o ~ : bitwise not
Logical Operators
Functions
o atan(x) , asin(x) , acos(x) , cos(x) , sin(x) , tan(x) : Standard trigonometric functions. x is in radians.
o rad(x) - Converts x degrees to radians.
o abs(x) - Absolute value of x.
x
o exp(x) - Returns e .
o log(x) - Base 10 logarithm of x.
o ln(x) - Natural logarithm of x.
o sqrt(x) - Square root of x.
o sgn(x) - Return 1 if x is positive, -1 if x is negative.
o frac(x) - Fractional, or decimal, part (e.g. frac(1.234) = 0.234).
o trunc(x) - Integer part (e.g. trunc(1.234) = 1).
o floor(x) - Floor of x.
o ceil(x) - Ceiling of x.
o round(x, precision) - Rounds x to an integer, or to a specified number of decimal
places. precision is optional.
Constants
Conditional Operations
<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
[MeasureOne]
Measure=Calc
Formula=5
[MeasureTwo]
Measure=Calc
Formula=MeasureOne < 6 ? 1 : -1
Select all
This measure would return the number 1 since the condition MeasureOne < 6 evaluates to true.
Conditional operators can be nested. It should be noted that there is a maximum of 30 nested
operators.
[MeasureOne]
Measure=Calc
Formula=2
[MeasureTwo]
Measure=Calc
Select all
This measure would return 97. Since the first statement of MeasureOne < 1 is false, the formula
begins testing the nested formulas in order until the condition becomes true . If none of the
conditions are met, the final false value of 96 would be set.
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:
Options
General measure options
ProcessorDefault: 0
If set to 0 , measures the average of all CPU cores. If set to a number ( 1 , 2 , etc.), measures a
specific CPU core.
Value
The value of a CPU measure is a percentage from 0 to 100.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureAverageCPU]
Measure=CPU
[MeasureCPU1]
Measure=CPU
Processor=1
[MeterText]
Meter=String
MeasureName=MeasureAverageCPU
MeasureName2=MeasureCPU1
X=5
Y=5
W=100
H=35
FontColor=255,255,255,255
NumOfDecimals=1
Select all
FreeDiskSpace measure [home]
Measure=FreeDiskSpace measures disk usage. By default the value will be the amount of free space. To
obtain the used space, add InvertMeasure=1.
The measure will have a range from 0 to the actual total size of the measured disk resource for use by
meters requiring a percentage.
Options
General measure options
DriveDefault: C:
TotalDefault: 0
LabelDefault: 0
If set to 1 , the string value is the drive label. The number value is not altered.
TypeDefault: 0
If set to 1 , provides the drive type as a string and a number.
String Number
Error 0
Removed 1
Removable 3
Fixed 4
Network 5
CDRom 6
Ram 7
Note: FreeDiskSpace does not support CD or DVD drives other than with Type and Label .
IgnoreRemovableDefault: 1
If set to 1, removable drives are ignored. If set to 0, removable drives are measured. Be sure to set
IgnoreRemovable=0 to measure a USB drive.
DiskQuotaDefault: 1
If set to 1, user specific disk quotas in Windows are obeyed. If set to 0, user account specific disk
quotas are ignored when obtaining free or used space on the disk.
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureDiskLabel]
Measure=FreeDiskSpace
Drive=C:
Label=1
UpdateDivider=5
[MeasureTotalDiskSpace]
Measure=FreeDiskSpace
Drive=C:
Total=1
UpdateDivider=5
[MeasureFreeDiskSpace]
Measure=FreeDiskSpace
Drive=C:
UpdateDivider=5
[MeasureUsedDiskSpace]
Measure=FreeDiskSpace
Drive=C:
InvertMeasure=1
UpdateDivider=5
[MeterDriveInfo]
Meter=String
MeasureName=MeasureDiskLabel
MeasureName2=MeasureTotalDiskSpace
MeasureName3=MeasureFreeDiskSpace
MeasureName4=MeasureUsedDiskSpace
X=0
Y=0
FontSize=10
FontColor=255,255,255,255
SolidColor=0,0,0,255
AntiAlias=1
AutoScale=1
Select all
By default the value will be the amount of used memory. To obtain the free memory,
add InvertMeasure=1.
The measures will have a MinValue / MaxValue range from 0 to the actual total size of the measured
memory resource for use by meters requiring a percentage.
Options
General measure options
TotalDefault: 0
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasurePhysMemTotal]
Measure=PhysicalMemory
Total=1
UpdateDivider=3600
[MeasurePhysMemUsed]
Measure=PhysicalMemory
UpdateDivider=2
[MeasurePhysMemFree]
Measure=PhysicalMemory
InvertMeasure=1
UpdateDivider=2
[MeterText]
Meter=String
MeasureName=MeasurePhysMemTotal
MeasureName2=MeasurePhysMemUsed
MeasureName3=MeasurePhysMemFree
FontColor=255,255,255,255
SolidColor=0,0,0,255
NumOfDecimals=1
AutoScale=1
Select all
Notes: The measured value is the number of bytes per second, times the total update rate of the
measure, as defined by the Update option for the skin and any UpdateDivider option on the measure.
The measured value is the network traffic in and out of the network interface controller (NIC) of the
computer running the skin. If the computer is on a network connected to a router (LAN), the traffic will
include all interaction between the computer and both the router and any other devices on the LAN. It will
not include traffic directly to and from other devices and the internet (WAN), and cannot be used to
determine the amount of internet traffic.
Options
General measure options
InterfaceDefault: 0
Index of the network interface controller (NIC) to measure. If set to 0 , all interfaces are measured.
CumulativeDefault: 0
If set to 1 , measures the cumulative network traffic. This can be used to measure the total
consumed bandwidth during certain interval.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureNetIn]
Measure=NetIn
[MeasureNetOut]
Measure=NetOut
[MeterText]
Meter=String
MeasureName=MeasureNetIn
MeasureName2=MeasureNetOut
X=5
Y=5
W=100
H=20
FontColor=255,255,255,255
NumOfDecimals=1
AutoScale=1
Select all
Options
General measure options
All general measure options are valid.
Plugins have their own specific options that must be placed in the measure section. For more
information, refer to the Plugins entry for each.
Plugin
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureUserName]
Measure=Plugin
Plugin=SysInfo
SysInfoType=USER_NAME
[MeterText]
Meter=String
MeasureName=MeasureUserName
X=5
Y=5
W=100
H=25
FontColor=255,255,255,255
Text="User: %1"
Select all
Registry measure [home]
Measure=Registry measures the value of a key in the Windows Registry.
Options
General measure options
All general measure options are valid.
RegHKey
Name of the root key. Valid 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
Name of the subkey.
RegValue
Name of the value. If not specified, the default value is retrieved.
Note: The two registry key value types supported are REG_SZ (string) and REG_DWORD (number). If
a REG_SZ string value is numeric, both the string and number measure values will be set.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureWindowsVersion]
Measure=Registry
RegHKey=HKEY_LOCAL_MACHINE
RegKey=Software\Microsoft\Windows NT\CurrentVersion
RegValue=ProductName
UpdateDivider=-1
[MeterText]
Meter=String
MeasureName=MeasureWindowsVersion
X=5
Y=5
W=100
H=25
FontColor=255,255,255,255
Text="Version: %1"
Select all
See also: Lua Scripting for details on using Lua with Rainmeter.
Options
General measure options
ScriptFile
Bangs
Script measure can be controlled with the !CommandMeasure bang. See Lua Scripting for more
information.
Example
[Rainmeter]
Update=1000
[MeasureScript]
Measure=Script
ScriptFile=MyScript.lua
MyStringOption=Hello World
MyNumberOption=27
Select all
Options
General measure options
All general measure options are valid.
FormatDefault: %H:%M:%S
Format for the measure value. This can be a combination of text and Format codes.
Note: If a Format is not given, the string value returned is in the format %H:%M:%S , however
the number valuewill be a Windows timestamp. If a Format is given, the number value will be the
value defined by the format, or zero if the format does not define a numerical value.
TimeStamp
Windows timestamp or formula defining a timestamp. If defined, the measure will use this date/time
instead of the current system values.
TimeZoneDefault: local
If specified, GMT time is used, modified with the specified positive or negative offset number.
E.g. TimeZone=-5 would measure the time as GMT -5.0 . If not specified, or set to local , local time for
the computer is used.
DaylightSavingTimeDefault: 1
If DaylightSavingTime is set to 0 and TimeZone is supplied, the current local offset for daylight
saving time is not applied to the value.
Note: All locations do not follow the same daylight saving schedule, if any. If a Time measure is
intended to provide the time in a specific location, and that location follows a different schedule from
the user's local system, the default value will be wrong on certain dates over the course of the year. In
order to provide an accurate time, DaylightSavingTime must be set to 0 , and TimeZone must be set
in a way that accounts for the current daylight savings rules for that location.
Format codes
The following formatting codes can be used in the Format option.
locale-time and locale-date will use the format that is set currently in Windows.
Note: To remove leading zeros in numerical format codes use # after % (e.g. %#d instead of %d ).
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureDate]
Measure=Time
Format=%A, %B %#d, %Y
[Measure12HrTime]
Measure=Time
Format=%#I:%M %p
[Measure24HrTime]
Measure=Time
Format=%H:%M
[MeterText]
Meter=String
MeasureName=MeasureDate
MeasureName2=Measure12HrTime
MeasureName3=Measure24HrTime
X=5
Y=5
W=200
H=25
FontColor=255,255,255,255
Select all
The string value of the measure is defined by the Format option. The number value will be the amount of
time since the last restart in seconds.
Options
General measure options
All general measure options are valid.
o %4 : Days.
o %3 : Hours.
o %2 : Minutes.
o %1 : Seconds.
AddDaysToHoursDefault: 1
If set to 1 and if %4 (days) is not used in the Format option, %3 (hours) is incremented by days * 24.
Set to 0 to disable this behaviour.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureUptime]
Measure=Uptime
[MeterText]
Meter=String
MeasureName=MeasureUptime
X=5
Y=5
W=200
H=25
FontColor=255,255,255,255
Text="Uptime: %1"
Select all
Plugins [home]
Plugins are dynamic link library (.dll) programs specifically written to provide additional
functionality not built into Rainmeter.
Usage
Plugins are used with a Plugin measure in the skin. All of the general measure options are valid
with the measure, as well as additional options which are specific to each plugin.
Click on any of the plugins listed to learn more about the purpose and options for each.
Custom Plugins
3rd-party plugins developed for Rainmeter but not included with the installation may be used.
Normally these would be distributed with a skin and installed using the Rainmeter Skin Installer,
but may be manually installed by placing the .dll file in the Plugins folder under the settings
path for the Rainmeter installation.
Note: Any 3rd-party plugin .dll must have been compiled for the same 32bit or 64bit architecture
as the version of Rainmeter it is used with.
Those interested in creating 3rd-party plugins for Rainmeter can find more information and
source code templates for both C++ and C# at Developers.
AdvancedCPU measure [home]
Plugin=AdvancedCPU measures CPU usage by processes.
Note: The value is a calculation of process CPU time scaled by the number of CPU cores. In order to use
the value as a percentage in meters, it must have the MaxValue of the measure dynamically set to the
current value of an AdvancedCPU measure which has no CPUInclude or CPUExclude options. See
the Example below.
Options
General measure options
All general measure options are valid.
CPUInclude
List of process names separated by ; (semicolon) to use in measurements . If
specified, CPUExclude is ignored.
CPUExclude
List of processes separated by ; (semicolon) to ignore in measurements.
Note: The process Idle is a placeholder process used to manage unused CPU, therefore it should be
excluded with CPUExclude=Idle to obtain CPU or TopProcess usage.
TopProcessDefault: 0
Measures the process that is currently using the most CPU. Valid values are:
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
BackGroundMode=2
SolidColor=0,0,0,255
[MeasureCPUMax]
Measure=Plugin
Plugin=AdvancedCPU
[MeasureCPU]
Measure=Plugin
Plugin=AdvancedCPU
CPUExclude=Idle
MaxValue=[MeasureCPUMax]
DynamicVariables=1
[MeasureTopName]
Measure=Plugin
Plugin=AdvancedCPU
CPUExclude=Idle
TopProcess=2
;Measure CPU usage of top process with MaxValue set
[MeasureTop%]
Measure=Plugin
Plugin=AdvancedCPU
CPUExclude=Idle
TopProcess=1
MaxValue=[MeasureCPUMax]
DynamicVariables=1
[MeterCPU]
Meter=String
MeasureName=MeasureCPU
Y=2R
FontColor=255,255,255,255
FontSize=12
AntiAlias=1
Percentual=1
NumOfDecimals=2
DynamicVariables=1
Text=CPU Usage: %1
[MeterTopName]
Meter=String
MeasureName=MeasureTopName
Y=2R
FontColor=255,255,255,255
FontSize=12
AntiAlias=1
[MeterTop%]
Meter=String
MeasureName=MeasureTop%
X=2R
Y=0r
FontColor=255,255,255,255
FontSize=12
AntiAlias=1
Percentual=1
NumOfDecimals=2
Text=(%1)
Select all
CoreTemp plugin [home]
Plugin=CoreTemp retrieves infromation from the CoreTemp application. The CoreTemp
application must be running in the background.
Note: If the value of the measure is to be used in a meter which requires a percentage, then
appropriate MinValueand/or MaxValue options must be added to the measure.
Options
General measure options
All general measure options are valid.
CoreTempType
Defines the information to measure. Valid values are:
CoreTempIndex
Zero-based index of the core to measure. The first core is 0 , the second core is 1 , etc.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureMaxTemp]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=MaxTemperature
[MeasureCore1Temp]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=Temperature
CoreTempIndex=0
[MeasureCpuSpeed]
Measure=Plugin
Plugin=CoreTemp
CoreTempType=CpuSpeed
[MeterMaxTemp]
Meter=String
MeasureName=MeasureMaxTemp
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
[MeterCore1Temp]
Meter=String
MeasureName=MeasureCore1Temp
X=5
Y=25
W=200
H=20
FontColor=255,255,255,255
[MeterCpuSpeed]
Meter=String
MeasureName=MeasureCpuSpeed
X=5
Y=45
W=200
H=20
FontColor=255,255,255,255
Text="Frequency: %1 MHz"
Select all
The plugin gathers all the folder and file names, sizes, dates and icons in the selected folder. It counts the
number of files and folders and obtains the combined size. It can also search recursively through all the
subfolders of the selected folder to obtain the totals for count and size.
FileView operates with a "parent / child" approach. A main "parent" FileView measure is used to obtain all
the information for a selected folder, and then "child" measures are used to read individual entries from
the parent using the Path= option.
Usage
FileView measures take the form:
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureFolder]
Measure=Plugin
Plugin=FileView
Path="C:\Program Files\Rainmeter"
ShowDotDot=0
ShowFolder=0
Count=3
Select all
In this example, this "parent" measure will obtain name, size, date and icon information about all files in
the selected folder, then create three Index values for the first three files. The information is used in
subsequent "child" FileView measures:
[MeasureChild1]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileName
Index=1
[MeasureChild2]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileName
Index=2
[MeasureChild3]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileName
Index=3
Select all
The values of the three child measures are now the FileName information parsed into Indexes 1 through 3
by theparent measure. These can then be used with MeasureName and other options in meters.
[MeasureChild1]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileName
Index=1
[MeasureChild2]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileSize
Index=1
[MeasureChild3]
Measure=Plugin
Plugin=FileView
Path=[MeasureFolder]
Type=FileDate
Index=1
Select all
The values of the three child measures are now the FileName, FileSize and FileDate information from the
first file (Index 1) of the parent measure.
In these examples, three indexes are created due to the Count=3 option on the parent measure. However,
the information for all files and / or folders are obtained by the plugin, and subsequent or previous entries
can be assigned to the three indexes by using !CommandMeasure statements described below. This will
allow a skin to "scroll" through the files and / or folders in a dynamic way.
Important Note: A FileView measure will not re-read the disk information on a normal update cycle or
usingUpdateDivider on the measure, nor when the !Update / !UpdateMeasure bangs are used. If the
options on the parent measure are changed dynamically with !SetVariable or !SetOption, the Update
plugin command will need to be used to update the values.
[MeasureFolder]
Measure=Plugin
Plugin=FileView
Path="C:\ImageFolder"
Count=3
[MeterChangeFolder]
Meter=Image
W=26
H=25
SolidColor=0,0,0,255
Select all
If it is desired that a folder be monitored for new or changed files, the Update plugin command should be
used in conjunction with an OnUpdateAction statement to keep the measure current with changing disk
information. Be aware that having the plugin physically access the disk has a performance cost, and care
should be taken to use an approriate UpdateDivider.
[MeasureFolder]
Measure=Plugin
Plugin=FileView
Path="C:\ImageFolder"
Count=3
UpdateDivider=5
Select all
Options
General measure options
Path
In a parent measure, defines the path of the folder to read. By default, the My Computer folder
is used.
In a child measure, defines the parent measure [MeasureName] to read values from.
Action to execute when the plugin has completed reading the folders and files. This can be used
to ensure that a large folder structure is fully read before other actions are taken.
RecursiveDefault: 0
If set to 1 , the plugin searches all sub-folders updating only the file count, folder count and
overall folder size. This option does not index specific files in sub-folders.
If set to 2 , the plugin indexes all files in the folder tree defined in Path. Folders are not
indexed. Plugin commands FollowPath and PreviousFolder are disabled,
and ShowFile, ShowFolder, and ShowDotDot options have no effect.
CountDefault: 1
ShowDotDotDefault: 1
If set to 1 , the .. folder (representing the previous folder) will be included. Otherwise the .. folder
is ignored.
ShowFolderDefault: 1
ShowFileDefault: 1
ShowHiddenDefault: 1
ShowSystemDefault: 0
HideExtensionsDefault: 0
Extensions
Semi-colon separated list of file extensions that limits the type of files to be included.
SortTypeDefault: Name
Type of information to sort the entries by. Valid values are: Name , Size , Type , Date .
SortDateTypeDefault: Modified
File and folder date entry to use for sorting when SortType=Date . Valid values
are: Modified , Created , Accessed .
SortAscendingDefault: 1
If set to 1 , the entries are sorted in ascending order. Otherwise a descending order is used.
WildcardSearchDefault: *
Wildcards used to filter included files and/or folders. Standard * and ? characters can be used.
Index of the file or folder from the parent measure. This should not exceed the Count number in
the parent measure. If it does, the items will wrap around. For example, if Count=8 , Index=9 will be
treated as Index=1 .
IgnoreCountDefault: 0
If set to 1 , the Index will represent the actual index of the file or folder in the list. This is useful to
display a particular file or folder at all times (like the .. folder).
TypeDefault: FolderPath
Note: If Type=Icon , the full path of the icon file is returned. See IconPath below. This can be used
with MeasureName or ImageName in an Image meter to display the icon.
DateTypeDefault: Modified
The date entry to retrieve from the parent measure when Type=Date . Valid values
are: Modified , Created , Accessed .
IconPath
Path of the folder to save icons when Type=Icon . If no path is given, the icons are saved in the
skin folder and are named "iconX.ico", where "X" is the index number.
IconSizeDefault: Medium
Size of the icon to save. Valid values are: Small (for 16x16), Medium (for 32x32), Large (for
48x48), ExtraLarge (for 256x256).
Plugin Commands
Updates the measure, reading the disk and recreating all values in the parent measure.
PageUp
For example, if Count=8 , and there are 25 files in the list, there is a total of 4 pages. If items 8-15
(page 2) are being displayed, the PageUp will decrease the page count by one changing the
displayed items to items 0-7 (page 1).
PageDown
IndexUp
IndexDown
PreviousFolder
This will change the path to the folder one higher in the folder structure. Behaves like clicking on
the .. folder.
If the index referenced in the child measure is currently a folder, then the parent
measure's Path is updated to the new path. If it is a file, then it is opened with the default
Windows associated application. In order to better simulate Windows behavior, it is
recommended that this command be used with a double-click action.
Open
This will open the file or folder that the index represents. If it is a folder, the folder is opened in
Windows Explorer. If it is a file, then it is opened with the default Windows associated application.
In order to better simulate Windows behavior, it is recommended that this command be used
with a double-click action.
Example
[Rainmeter]
Update=1000
[Variables]
IconSize=Large
;----------------------------------------------------
; Styles
;----------------------------------------------------
[TextStyle]
FontColor=255,255,255,255
AntiAlias=1
[TextHighlight]
FontColor=150,150,255,255
[IconStyle]
X=5
Y=r
AntiAlias=1
[HighlightStyle]
SolidColor=0,0,0,1
X=5
Y=5R
W=380
DynamicVariables=1
[InfoStyle]
X=5R
Y=r
AutoScale=1
AntiAlias=1
;----------------------------------------------------
; Measures
;----------------------------------------------------
[mPath]
Measure=Plugin
Plugin=FileView
Path="C:\"
Count=8
[mFolderCount]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FolderCount
Group=Children
[mFileCount]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileCount
Group=Children
[mFolderSize]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FolderSize
Group=Children
;----------------------------------------------------
; Index 1
[mIndex1Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=1
Group=Children
[mIndex1Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=1
Group=Children
[mIndex1Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=1
Group=Children
[mIndex1Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=1
Group=Children
;----------------------------------------------------
; Index 2
[mIndex2Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=2
Group=Children
[mIndex2Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=2
Group=Children
[mIndex2Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=2
Group=Children
[mIndex2Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=2
Group=Children
;----------------------------------------------------
; Index 3
[mIndex3Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=3
Group=Children
[mIndex3Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=3
Group=Children
[mIndex3Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=3
Group=Children
[mIndex3Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=3
Group=Children
;----------------------------------------------------
; Index 4
[mIndex4Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=4
Group=Children
[mIndex4Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=4
Group=Children
[mIndex4Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=4
Group=Children
[mIndex4Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=4
Group=Children
;----------------------------------------------------
; Index 5
[mIndex5Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=5
Group=Children
[mIndex5Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=5
Group=Children
[mIndex5Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=5
Group=Children
[mIndex5Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=5
Group=Children
;----------------------------------------------------
; Index 6
[mIndex6Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=6
Group=Children
[mIndex6Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=6
Group=Children
[mIndex6Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=6
Group=Children
[mIndex6Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=6
Group=Children
;----------------------------------------------------
; Index 7
[mIndex7Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=7
Group=Children
[mIndex7Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=7
Group=Children
[mIndex7Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=7
Group=Children
[mIndex7Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=7
Group=Children
;----------------------------------------------------
; Index 8
[mIndex8Name]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileName
Index=8
Group=Children
[mIndex8Size]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileSize
Index=8
Group=Children
[mIndex8Date]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=FileDate
Index=8
Group=Children
[mIndex8Icon]
Measure=Plugin
Plugin=FileView
Path=[mPath]
Type=Icon
IconSize=#IconSize#
Index=8
Group=Children
;----------------------------------------------------
; Meters
;----------------------------------------------------
[Background]
Meter=Image
SolidColor=0,0,0,200
W=400
H=500
[PathTitle]
Meter=String
MeterStyle=TextStyle
Text=Path:
[Path]
Meter=String
MeasureName=mPath
MeterStyle=TextStyle | TextHighlight
Text="%1 "
X=R
[FolderCountTitle]
Meter=String
MeterStyle=TextStyle
X=0
Y=R
Text=Folders:
[FolderCount]
Meter=String
MeasureName=mFolderCount
MeterStyle=TextStyle | TextHighlight
X=R
Y=r
[FileCountTitle]
Meter=String
MeterStyle=TextStyle
X=10R
Y=r
Text=Files:
[FileCount]
Meter=String
MeasureName=mFileCount
MeterStyle=TextStyle | TextHighlight
X=R
Y=r
[FolderSizeTitle]
Meter=String
MeterStyle=TextStyle
X=10R
Y=r
Text=Size:
[FolderSize]
Meter=String
MeasureName=mFolderSize
MeterStyle=TextStyle | TextHighlight
X=R
Y=r
AutoScale=1
[Index1]
Meter=Image
MeterStyle=HighlightStyle
[Index1Icon]
Meter=Image
MeasureName=mIndex1Icon
MeterStyle=IconStyle
[Index1Info]
Meter=String
MeasureName=mIndex1Name
MeasureName2=mIndex1Size
MeasureName3=mIndex1Date
MeterStyle=TextStyle | InfoStyle
[Index2]
Meter=Image
MeterStyle=HighlightStyle
[Index2Icon]
Meter=Image
MeasureName=mIndex2Icon
MeterStyle=IconStyle
[Index2Info]
Meter=String
MeasureName=mIndex2Name
MeasureName2=mIndex2Size
MeasureName3=mIndex2Date
MeterStyle=TextStyle | InfoStyle
[Index3]
Meter=Image
MeterStyle=HighlightStyle
[Index3Icon]
Meter=Image
MeasureName=mIndex3Icon
MeterStyle=IconStyle
[Index3Info]
Meter=String
MeasureName=mIndex3Name
MeasureName2=mIndex3Size
MeasureName3=mIndex3Date
MeterStyle=TextStyle | InfoStyle
[Index4]
Meter=Image
MeterStyle=HighlightStyle
[Index4Icon]
Meter=Image
MeasureName=mIndex4Icon
MeterStyle=IconStyle
[Index4Info]
Meter=String
MeasureName=mIndex4Name
MeasureName2=mIndex4Size
MeasureName3=mIndex4Date
MeterStyle=TextStyle | InfoStyle
[Index5]
Meter=Image
MeterStyle=HighlightStyle
[Index5Icon]
Meter=Image
MeasureName=mIndex5Icon
MeterStyle=IconStyle
[Index5Info]
Meter=String
MeasureName=mIndex5Name
MeasureName2=mIndex5Size
MeasureName3=mIndex5Date
MeterStyle=TextStyle | InfoStyle
[Index6]
Meter=Image
MeterStyle=HighlightStyle
[Index6Icon]
Meter=Image
MeasureName=mIndex6Icon
MeterStyle=IconStyle
[Index6Info]
Meter=String
MeasureName=mIndex6Name
MeasureName2=mIndex6Size
MeasureName3=mIndex6Date
MeterStyle=TextStyle | InfoStyle
[Index7]
Meter=Image
MeterStyle=HighlightStyle
[Index7Icon]
Meter=Image
MeasureName=mIndex7Icon
MeterStyle=IconStyle
[Index7Info]
Meter=String
MeasureName=mIndex7Name
MeasureName2=mIndex7Size
MeasureName3=mIndex7Date
MeterStyle=TextStyle | InfoStyle
[Index8]
Meter=Image
MeterStyle=HighlightStyle
Meter=Image
MeasureName=mIndex8Icon
MeterStyle=IconStyle
[Index8Info]
Meter=String
MeasureName=mIndex8Name
MeasureName2=mIndex8Size
MeasureName3=mIndex8Date
MeterStyle=TextStyle | InfoStyle
[PageUp]
Meter=String
MeterStyle=TextStyle
FontSize=15
X=5
Y=10R
Text=Page Up
[PageDown]
Meter=String
MeterStyle=TextStyle
FontSize=15
X=10R
Y=r
Text=Page Down
[PreviousFolder]
Meter=String
MeterStyle=TextStyle
FontSize=15
X=10R
Y=r
Text=Previous Folder
Select all
Note: Measuring a folder with a very large number of folders and files (e.g. My Documents) can cause
Rainmeter to have erratic or even unstable behavior.
Options
General measure options
All general measure options are valid.
Folder
Must be either:
Important: If multiple measures use the same folder, specify the actual path on the first FolderInfo
measure and specify the name of the first measure in subsequent measures. See example below for
proper usage.
InfoType
Defines the type of information. Valid values are:
RegExpFilter
Regular expression used to include or exclude counted files.
IncludeSubFoldersDefault: 0
If set to 1 , subfolders are included.
IncludeHiddenFilesDefault: 0
If set to 1 , hidden files are included.
IncludeSystemFilesDefault: 0
If set to 1 , system files are included.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureFolder]
Measure=Plugin
Plugin=FolderInfo
Folder=#SKINSPATH#
InfoType=FolderSize
IncludeHiddenFiles=1
IncludeSubFolders=1
IncludeSystemFiles=1
RegExpFilter=.*
UpdateDivider=10
[MeasureFileCount]
Measure=Plugin
Plugin=FolderInfo
Folder=[MeasureFolder]
InfoType=FileCount
UpdateDivider=10
[MeterSize]
Meter=String
MeasureName=MeasureFolder
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
AutoScale=1
[MeterCount]
Meter=String
MeasureName=MeasureFileCount
X=5
Y=25
W=200
H=20
FontColor=255,255,255,255
Select all
InputText 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, ..., CommandN
Actions to execute 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. Note: The value must be placed in
quotation marks if it contains spaces.
DefaultValue
PasswordDefault: 0
X, Y
W, H
SolidColor
Note: The alpha channel changes the opacity of the entire input box, not just its background.
FontColor
FontSize
StringStyle
Style of the input text. Valid values are Normal , Bold , Italic , and BoldItalic .
StringAlignDefault: Left
Alignment of the input text. Valid values are Left , Right , Center .
Note: With right-aligned text, the cursor will move from left to right as text is typed. This is
advised for skins using languages such as Arabic, which read right-to-left.
FocusDismissDefault: 0
If set to 1 , clicking anywhere other than on the input field will close the input without taking
action. Otherwise, the mouse is disabled until Enter or Esc is pressed.
OnDismissActionDefault: 0
A bang or action that is executed when an open InputText field is dismissed without hitting Enter
to execute the plugin commmands.
Bangs
Select all
Notes
o Press Enter to submit user input. Press Escape to dismiss the input box without executing the script.
o 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
[Rainmeter]
Update=1000
DynamicWindowSize=1
[Variables]
FirstVar=!WriteKeyValue
SecondVar=!SetVariable
FontSize=14
[MeterBackground]
Meter=Image
SolidColor=1E3A69FF
W=250
H=105
[MeasureInput]
Measure=Plugin
Plugin=InputText
SolidColor=76A0E8FF
FontColor=255,255,255,255
FontFace=Seqoe UI
StringStyle=Italic
FontSize=#FontSize#
X=5
Y=5
H=25
W=240
DefaultValue="Change Me!"
Command2=!Refresh #CURRENTCONFIG#
[MeterWriteKeyValue]
Meter=String
X=5
Y=5
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
Text=#FirstVar#
[MeterSetVariable]
Meter=String
X=5
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
DynamicVariables=1
Text=#SecondVar#
Meter=String
X=5
Y=10R
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
DynamicVariables=1
Select all
Options
General measure options
All general measure options are valid.
Command
Defines the information to measure. Valid values are:
o GetSoundVolume :
Player volume between 0 - 100.
o GetPlayerPosition : Player position in seconds.
o GetPlayerPositionPercent : Player position as a percentage.
o GetCurrentTrackAlbum : Album.
o GetCurrentTrackArtist : Artist.
o GetCurrentTrackBitrate Bitrate.
o GetCurrentTrackBPM : Beats per minute.
o GetCurrentTrackComment : Track comment.
o GetCurrentTrackComposer : Track composer.
o GetCurrentTrackEQ : EQ preset name.
o GetCurrentTrackGenre : Genre (category).
o GetCurrentTrackKindAsString : File description.
o GetCurrentTrackName : Track name.
o GetCurrentTrackRating : Rating from 0 - 100.
o GetCurrentTrackSampleRate : Sample rate.
o GetCurrentTrackSize : File size.
o GetCurrentTrackTime : Length of the track.
o GetCurrentTrackTrackCount : Number of tracks on the album.
o GetCurrentTrackTrackNumber : Track number or index.
o GetCurrentTrackYear : Track year.
o GetCurrentTrackArtwork : Artwork file path. Use in combination with DefaultArtwork .
DefaultArtwork
Path of the artwork folder relative to the skin folder. Used
with Command=GetCurrentTrackArtwork .
Bangs
iTunes measures can be controlled with the !CommandMeasure bang with the argument
parameter being:
o Backtrack : Reposition to the beginning of the current track, or go to the previous track if
already at start of current track.
o FastForward : Skip forward in a playing track.
o NextTrack : Advance to the next track in the current playlist.
o Pause : Pause playback.
o Play : Play the currently targeted track.
o PlayPause : Toggle the playing/paused state of the current track.
o PreviousTrack : Return to the previous track in the current playlist.
o Resume : Disable fast forward/rewind and resume playback if playing.
o Rewind : Skip backwards in a playing track.
o Stop : Stop playback.
o Power : Open/close iTunes application.
o Quit : Exit the iTunes application.
o SoundVolumeUp : Turn the volume up 5%.
o SoundVolumeDown : Turn the volume down 5%.
o ToggleiTunes : Show/hide iTunes window.
Options
General measure options
All general measure options are valid.
Bangs
To control keystrokes on multimedia keyboards, use the !CommandMeasure bang. In the examples
below MeasureMediaKey is the section name for the MediaKey measure. Your section name may differ.
Stop playback.
Plays/Pause playback.
Decreases volume.
Increases volume.
Example
[MeasureMediaKey]
Measure=Plugin
Plugin=MediaKey
[MeterMute]
Meter=String
SolidColor=0,0,0,255
FontColor=255,255,255,255
Text=Mute
Select all
Options
General measure options
All general measure options are valid.
PlayerName
Can be either:
Important: If multiple measures use the same player, specify the player interface name on the first
NowPlaying measure and specify the name of the first measure in subsequent measures. See
example below for proper usage.
PlayerType
Type of the measure value. Valid values are:
Note: With measures of type Duration or Position , the string value is in the form MM:SS and the
number value is the actual number of seconds.
PlayerPath
If defined, used to launch the player with the OpenPlayer command. If not defined, the plugin will
attempt to automatically detect the path.
TrackChangeAction
Action to execute when the track changes.
DisableLeadingZeroDefault: 0
If set to 1 , the format of Duration and Position is M:SS instead of MM:SS . This option must be set on
the main measure.
Bangs
NowPlaying measures can be controlled with the !CommandMeasure bang with the argument parameter
being:
o AIMP: PlayerName=AIMP
Fully supported. Tested with AIMP 2.61.
o foobar2000: PlayerName=CAD
Fully supported. The foo_cad plugin (download) needs to be installed.
o iTunes: PlayerName=iTunes
Fully supported. Tested with iTunes 10.2.
o J. River Media Center and Media Jukebox: PlayerName=CAD
Fully supported through the CAD interface. The intcad plugin needs to be installed.
o MediaMonkey: PlayerName=MediaMonkey
Fully supported. Tested with MediaMonkey 3.2.5.
o MusicBee: PlayerName=CAD
Fully supported. MusicBee 1.2 (or higher) is required.
o Winamp: PlayerName=Winamp
Fully supported.
o VLC: PlayerName=CAD
Fully supported. The libcad plugin for VLC must be installed.
o WMP: PlayerName=WMP
Fully supported, except for the Repeat / Shuffle types.
o Spotify: PlayerName=Spotify
Partially supported. Only the types Artist , Track and the bangs Play , PlayPause , Stop , Next ,
and Previous are available.
o Last.fm Client, Media Player Classic, TTPlayer, OpenPandora, Zune: PlayerName=WLM
Partially supported. Even in the best case, only the types Title , Artist , Album and the
bangs Play , Pause , PlayPause , Next , Previous , Stop are supported.
Note: In Media Player Classic, 'Send Now Playing information to MSN Messenger' option must be
enabled in the player's settings (View -> Options -> Tweaks).
Example
For a more complete example, check the Soita skin.
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasurePlayer]
Measure=Plugin
Plugin=NowPlaying
; The main measure specifies the media player on PlayerName.
PlayerName=iTunes
PlayerType=TITLE
[MeasureArtist]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=ARTIST
[MeasureAlbum]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=ALBUM
[MeterPrev]
Meter=String
X=5
Y=5
FontColor=FFFF00
Text="Prev"
[MeterNext]
Meter=String
X=20R
Y=5
FontColor=FFFF00
Text="Next"
[MeterTitle]
Meter=String
MeasureName=MeasurePlayer
X=5
Y=35
W=400
H=20
FontColor=255,255,255,255
Text="Title: %1"
[MeterArtist]
Meter=String
MeasureName=MeasureArtist
X=5
Y=55
W=400
H=20
FontColor=255,255,255,255
Text="Artist: %1"
[MeterAlbum]
Meter=String
MeasureName=MeasureAlbum
X=5
Y=75
W=400
H=20
FontColor=255,255,255,255
Text="Album: %1"
Select all
The Performance Monitor exposes several counters, which track various information. All available counters
can be viewed using the Performance Monitor application. To open it, either run PerfMon.msc or type it in
the Start menu.
Note: The names of the objects, counters and instances must be in English.
Options
General measure options
PerfMonCounter
PerfMonInstance
Name of the counter instance. Can be left unspecified if the counter does not have any instances.
Example: _Total
PerfMonDifferenceDefault: 1
If set to 0 , the current value of the counter is used as the measure value. If set to 1 , the difference
between the current and previous counter value is used instead. 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.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureProcessCount]
Measure=Plugin
Plugin=PerfMon
PerfMonObject=System
PerfMonCounter=Processes
PerfMonDifference=0
[MeasureDiskAccess]
Measure=Plugin
Plugin=PerfMon
PerfMonObject=LogicalDisk
PerfMonCounter=Disk Bytes/sec
PerfMonInstance=C:
[MeterProcessCount]
Meter=String
MeasureName=MeasureProcessCount
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text=Total processes: %1
[MeterDiskAccess]
Meter=String
MeasureName=MeasureDiskAccess
X=5
Y=25
W=200
H=20
FontColor=255,255,255,255
AutoScale=1
Options
General measure options
DestAddress
UpdateRateDefault: 32
Frequency at which the ping is measured. This is relative to the measure update frequency.
TimeoutDefault: 30000
Maximum time in milliseconds to wait for a reply from the server.
TimeoutValueDefault: 30000
FinishAction
Action to execute as soon as a successful value is returned, or when the number of milliseconds
set in theTimeout option is reached.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasurePing]
Measure=Plugin
Plugin=PingPlugin
DestAddress=www.google.com
[MeterPing]
Meter=String
MeasureName=MeasurePing
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text=google.com: %1ms
Select all
Power plugin [home]
Plugin=PowerPlugin measures power related information.
Options
General measure options
All general measure options are valid.
PowerState
Type of information to measure. Valid values are:
FormatDefault: %H:%M
Format of the time with PowerState=Lifetime . The syntax is the same as Time measures.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureBatteryPercent]
Measure=Plugin
Plugin=PowerPlugin
PowerState=Percent
[MeterBatteryPercent]
Meter=String
MeasureName=MeasureBatteryPercent
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text=Battery left: %1
Select all
Process plugin [home]
Plugin=Process measures the running state of a process.
Options
General measure options
All general measure options are valid.
ProcessName
Name of the process (e.g. Firefox.exe ).
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureProcess]
Measure=Plugin
Plugin=Process
ProcessName=Notepad.exe
Substitute="-1":"not running","1":"running"
[MeterProcess]
Meter=String
MeasureName=MeasureProcess
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
Text=Notepad.exe is %1.
Select all
Quote plugin [home]
Plugin=QuotePlugin Retrieves a random value from one of two kinds of resources:
o A random string value (by default a single line) from a text file.
o A random file path and and name selected from a folder.
Options
General measure options
All general measure options are valid.
PathName
Path of a folder or a file.
o If the specified path is a file, the measure value is a random part of a text file and
the Separator option is valid for use.
o If the specified path is a folder, the measure value is a the path and name of a random file in the
folder and the Subfolders and FileFilter options are valid for use.
SeparatorDefault: #CRLF#
Delimiter used to separate text. By default, the delimiter is a newline.
SubfoldersDefault: 1
If set to 1 , subfolders are taken into account.
FileFilter
If specified, only file names matching a semicolon ; delimited list of filters are taken into account.
The standard wildcard characters * and ? can be used.
Example: *.jpg;*.gif
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureQuote]
Measure=Plugin
Plugin=QuotePlugin
Subfolders=1
FileFilter=*.jpg;*.gif
[MeterQuote]
Meter=Image
MeasureName=MeasureQuote
X=0
Y=0
W=200
H=200
Select all
RecycleManager plugin [home]
Plugin=RecycleManager monitors the state of the recycle bin.
Options
General measure options
All general measure options are valid.
RecycleTypeDefault: Count
Type of information to measure. Valid values are:
Bangs
RecycleManager measures can be controlled with the !CommandMeasure bang with the argument
parameter being:
o OpenBin
o EmptyBin : Empties the bin after confirmation.
o EmptyBinSilent : Empties the bin silently without confirmation.
Example
[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureBinSize]
Measure=Plugin
Plugin=RecycleManager
RecycleType=Size
UpdateDivider=5
[MeterBinSize]
Meter=String
MeasureName=MeasureBinSize
X=5
Y=5
W=200
H=20
FontColor=255,255,255,255
SolidColor=0,0,0,1
AutoScale=1
Select all
ResMon plugin [home]
Plugin=ResMon monitors the use of resources.
Options
General measure options
All general measure options are valid.
ResCountTypeDefault: GDI
Type of resource to measure. Valid values are:
ProcessName
If specified, the resource use of the specified process is measured.
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureSystemGDI]
Measure=Plugin
Plugin=Resmon
ResCountType=GDI
[MeasureRainmeterGDI]
Measure=Plugin
Plugin=Resmon
ResCountType=GDI
ProcessName="Rainmeter.exe"
[MeterOne]
Meter=String
MeasureName=MeasureSystemGDI
MeasureName2=MeasureRainmeterGDI
FontSize=12
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Select all
SpeedFan plugin [home]
Plugin=SpeedFanPlugin retrieves information from the SpeedFan application. The SpeedFan
application mustbe running in the background.
Note: If the value of the measure is to be used in a meter which requires a percentage, then
appropriate MinValueand/or MaxValue options must be added to the measure.
Options
General measure options
All general measure options are valid.
SpeedFanTypeDefault: Temperature
Type of information to measure. Valid values are:
SpeedFanNumberDefault: 0
The index retrieved from the Speedfan application starting with 0 . It is easiest to obtain these
numbers from the Configure tab of the Speedfan application.
SpeedFanScaleDefault: C
Temperature unit for SpeedFanType=Temperature . Valid values are:
o C : Celsius.
o F : Fahrenheit.
o K : Kelvin.
Note: The unit in the SpeedFan application itself must be set to Celsius to obtain the correct value.
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureGPUTemp]
Measure=Plugin
Plugin=SpeedFanPlugin
SpeedFanType=Temperature
SpeedFanNumber=0
SpeedFanScale=C
[MeasureFanSpeed]
Measure=Plugin
Plugin=SpeedFanPlugin
SpeedFanType=Fan
SpeedFanNumber=3
[MeterSpeedFan]
Meter=String
MeasureName=MeasureGPUTemp
MeasureName2=MeasureFanSpeed
FontSize=12
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Select all
Options
General measure options
All general measure options are valid.
SysInfoType
Piece of system information to retrieve.
String values (Can only be used with String meters):
o SCREEN_WIDTH : The width, in pixels, of the monitor. SysInfoData specifies which monitor if there
are multiple.
o SCREEN_HEIGHT : The height, in pixels, of the monitor. SysInfoData specifies which monitor if there
are multiple.
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.
Example
[Rainmeter]
Update=1000
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureOSVersion]
Measure=Plugin
Plugin=SysInfo
SysInfoType=OS_VERSION
UpdateDivider=-1
[MeasureScreenWidth]
Measure=Plugin
Plugin=SysInfo
SysInfoType=SCREEN_WIDTH
SysInfoData=1
[MeasureScreenHeight]
Measure=Plugin
Plugin=SysInfo
SysInfoType=SCREEN_HEIGHT
SysInfoData=1
[MeterOSVersion]
Meter=String
MeasureName=MeasureOSVersion
FontSize=12
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Text=OS Version: %1
[MeterScreenSize]
Meter=String
MeasureName=MeasureScreenWidth
MeasureName2=MeasureScreenHeight
Y=2R
FontSize=12
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
Text=Screen Size: %1 x %2
Select all
Virtual Desktops plugin [home]
Plugin=VirtualDesktops gives access to information from different Virtual Desktop Managers
(VDMs) for Windows and can be used to trigger desktop switches.
Options
General measure options
Must be set to the name of a supported VDM. Only Dexpot and VirtuaWin are currently supported.
VDMeasureType
Specifies what information to return. These options are supported by all VDMs:
VDDesktopCount
When VDMeasureType=DesktopCount , this setting can be set to either X or Y to return the number of
columns or rows, respectively, in a desktop grid layout. See the example below for more information.
Bangs
!CommandMeasure "DexpotSwitchDesktop" "2" where DexpotSwitchDesktop is the section
name containing VDMeasureType=SwitchDesktop . See the example below for more information.
Example
[VirtuaWinCurrentDesktop]
Measure=Plugin
Plugin=VirtualDesktops
VDManager=VirtuaWin
VDMeasureType=CurrentDesktop
[VirtuaWinDesktopCountX]
Measure=Plugin
Plugin=VirtualDesktops
VDManager=VirtuaWin
VDMeasureType=DesktopCount
VDDesktopCount=X
[DexpotSwitchDesktop]
Measure=Plugin
Plugin=VirtualDesktops
VDManager=Dexpot
VDMeasureType=SwitchDesktop
Select all
VDOnActivate
VDOnDeactivate
VDOnChange
A bang that is executed when the current desktop changes (when used
with VDMeasureType=CurrentDesktop ), or when the number of desktops changes (when used
with VDMeasureType=DesktopCount ).
VDMeasureType
o Command : Can be used to send commands to Dexpot through bands. Possible commands are the
Dexpot command line options, listed here.
o DesktopName : The name of the active desktop. (Can be forced to a specific desktop by
using VDDesktop.)
o DesktopWallpaper : The file path of the active desktop. (Can be forced to a specific desktop by
using VDDesktop .)
o Screenshot : Writes a .bmp screenshot of the current desktop to the file specified
by VDOutputFile after each desktop switch. (Can be forced to a specific desktop by using VDDesktop .)
VDDesktop
Set to the number of the desktop which should be used in place of the active one for
the DesktopName , DesktopWallpaper and Screenshot MeasureTypes.
VDOutputFile
VDWidth
Defines the width of the screenshot in pixels. Will autoscale if only height is given.
VDHeight
Defines the height of the screenshot in pixels. Will autoscale if only width is given.
VDRefreshOnUpdate
If VDRefreshOnUpdate=1 and VDDesktop denotes the currently active desktop, creates a new screenshot
every time the measure is updated.
Bangs
DexpotCommand is the section name containing VDMeasureType=Command . See the example below for more
information.
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
Select all
WebParser plugin [home]
Plugin=WebParser reads and parses information from web pages.
The plugin uses Perl Compatible Regular Expressions to extract information from any web page or local
file.
Usage
WebParser measures take the form:
[MeasureParent]
Measure=Plugin
Plugin=WebParser
URL=http://SomeSite.com
RegExp="(?siU)<Item>(.*)</Item>.*<Item>(.*)</Item>"
Select all
This example creates two StringIndex values in what is referred to as the "parent" WebParser measure.
The information is generally used in subsequent "child" WebParser measures:
[MeasureChild1]
Measure=Plugin
Plugin=WebParser
URL=[MeasureParent]
StringIndex=1
[MeasureChild2]
Measure=Plugin
Plugin=WebParser
URL=[MeasureParent]
StringIndex=2
Select all
The values of the two child measures are now the information parsed into StringIndexes 1 and 2 by
the parentmeasure. These can then be used with MeasureName and other options in meters.
Note: More information and examples for WebParser can be found at WebParser Tutorial and RSS/Atom
Feed Tutorial.
Options
General measure options
All general measure options are valid.
URL
URL to the site or file to be downloaded and parsed. If the name of another WebParser measure is
used, e.g. URL=[SomeMeasure] , then the value of the parent measure is used, generally by referring to
a specificStringIndex number.
WebParser can read and parse local files on your computer by using the file:// URI scheme.
E.g. URL=file://#CURRENTPATH#SomeFile.txt .
If you want to use the current value of a measure in a dynamic way as a Section Variable, rather than
as a reference to a "parent" WebParser measure, you must prefix the name of the measure with
the & character.
URL=http://SomeSite.com\[&WebMeasure]
RegExp
The Perl compatible regular expression used in parsing.
FinishAction
A bang or action that is executed when the page has been downloaded and the parsing is done. This
option is only valid on measures that connect to a site or file with URL , and not on child measures.
StringIndex
Defines which captured string from the RegExp this measure returns. This option is generally used in
a childmeasure to determine which of the caputured values in a parent measure to use.
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 parent measure. In this case the StringIndex defines
the index of the result of the parent measure's RegExp and the StringIndex2 defines the index of
this measure's RegExp (i.e. it defines the string that the measure returns).
Note: If the RegExp is not defined in this measure, the StringIndex2 has no effect.
UpdateRateDefault: 600
The rate in milliseconds determining how often the webpage is downloaded. This is relative to the
config's mainUpdate rate and any UpdateDivider on the measure. So the formula would
be Update X UpdateDivider X UpdateRate = "how often the measure connects to the site".
Notes: Some caution should be used in determining how often to connect to a site with WebParser.
Excessively accessing a site can cause your computer to be seen as an "attack" and result in being
blocked. The UpdateRate option defaults to 600 as a safety measure. This should not be changed
unless there is some reason to connect more or less often to the site.
In order to override the UpdateRate set on a WebParser measure, to have it connect to the site and
download the data "right now", the !CommandMeasure bang must be used, with the name of the
"parent" measure as the first parameter, and "Update" as the second.
DecodeCharacterReferenceDefault: 0
Automatically decodes HTML Character References. This will eliminate the need to use
a Substitute statement to translate character references like " , & , < , and > to the
actual character. Valid values are:
DebugDefault: 0
Logs DEBUG messages to the Rainmeter log or to a file. Valid values are:
Debug2File
If the Debug option is set to 2 , this option can be set to the path and name of the file to use for the
downloaded webpage instead of WebParserDump.txt in the current skin folder.
DownloadDefault: 0
If Download=1 , the URL is downloaded to Window's TEMP folder and the name to the file is returned
as string value. The measure can then be used with MeasureName on an Image meter to download
images from a site and display them.
DownloadFile
If the Download option is set to 1 , this option defines a relative path and file name where the
downloaded file will be saved instead of in Windows TEMP .
A folder DownloadFile will be created in the current folder, and the defined relative path and file
name will be created under that. It is not possible to specify an absolute path.
Note: This file is not a temporary file so it is not deleted after unloading a skin or exiting Rainmeter.
ErrorString
The value of the measure will be set to the string defined in this option if the RegExp results in a
regular expression parsing error.
ForceReloadDefault: 0
WebParser reads the resource only if it has been modified since last read. This can be overridden
with ForceReload=1 .
ProxyServerDefault: /auto
Proxy server to use with the plugin. The following settings are valid:
o /auto
This will use the proxy settings contained in the options for Internet Explorer. (default)
o /none
This will make a direct connection, and will not use any proxy setting.
o ServerName:Port
This will connect to the proxy server hostname or ip address and port defined. Port is often
optional with proxy servers.
This option can also be set in the Rainmeter.data file. If set there, it will be used as the global setting
for all WebParser measures unless overridden in an individual measure(s).
Note: The plugin doesn't support any authentication, so only use proxy settings that do not require
it.
CodePageDefault: 0
Defines the code page of the downloaded URL=http:// web page or external file read with
URL=file://.
Most web sites on the web today are encoded with the Unicode UTF-8 standard. This is the default
for WebParser, and it will seamlessly handle the site. No CodePage option is needed.
However, there may be some older web sites that are encoded in a language / character set specific
way. On a web site, the encoding used can generally be determined by viewing the raw HTML source
and checking the "charset" meta value in the "head" section of the page. (i.e. meta charset="UTF-8")
In addition, there are times when an external local file to be parsed with URL=file:// will be encoded
in other than the ANSI (really ASCII plus "extended ASCII" specific to the locale of the computer)
encoding used as the default in most Windows-based text editors. Primarily this will be in Unicode
UFT-16 LE. In this case, the CodePage=1200 option must be used to tell WebParer how to interpret the
resource being read.
Codepage definitions and more information can be found at Windows code pages.
Additional general help with Unicode encoding in Rainmeter can be found at Character Encoding in
Rainmeter.
WebParser uses UpdateRate to determine how often the plugin should actually access the site or file.
While you can dynamically change any option on a WebParser measure, the plugin will not use the
changes and access the site again until the next UpdateRate is reached. Just
using !Update or !UpdateMeasure will NOT override the UpdateRate.
In order to have a dynamic change make WebParser parse the site "right now", you will use
the!CommandMeasure bang with the "parent" WebParser measure as the first parameter, and "Update"
as the second.
If you dynamically change an option on a "child" WebParser measure that depends on a "parent"
measure, (like StringIndex for instance) you MUST use !CommandMeasure with "Update", targeting the
"parent" WebParser measure. The values of child WebParser measures are a function of the parent
measure, and are only updated when the parent is. You should never use !CommandMeasure on a "child"
measure.
If you want to use the current value of a measure in a dynamic way as a Section Variable, rather than as a
reference to a "parent" WebParser measure, you must prefix the name of the measure with
the & character.
URL=http://SomeSite.com\[&WebMeasure]
Examples
Retrieve the site title, first item and link from Slashdot's RSS feed.
[Rainmeter]
Update=1000
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,255
[MeasureRSSParent]
Measure=Plugin
Plugin=WebParser
URL=http://slashdot.org/slashdot.rdf
RegExp="(?siU)<title>(.*)</title>.*<item>.*<title>(.*)</title>.*
<link>(.*)</link>"
[MeasureRSSTitle]
Measure=Plugin
Plugin=WebParser
URL=[MeasureRSSParent]
StringIndex=1
[MeasureRSSItemTitle]
Measure=Plugin
Plugin=WebParser
URL=[MeasureRSSParent]
StringIndex=2
[MeasureRSSItemLink]
Measure=Plugin
Plugin=WebParser
URL=[MeasureRSSParent]
StringIndex=3
[MeterRSSTitle]
Meter=String
MeasureName=MeasureRSSTitle
FontSize=14
FontColor=222,255,227,255
StringStyle=Bold
AntiAlias=1
[MeterRSSItemTitle]
Meter=String
MeasureName=MeasureRSSItemTitle
Y=2R
FontSize=11
FontColor=255,255,255,255
StringStyle=Bold
AntiAlias=1
LeftMouseUpAction=["[MeasureRSSItemLink]"]
DynamicVariables=1
Select all
Retrieve the title, download and display an image for the first item in the Customize.org RSS feed.
[Rainmeter]
Update=1000
DynamicWindowSize=1
[MeasureCustoParent]
Measure=Plugin
Plugin=WebParser.dll
URL=http://customize.org/feeds/submissions
RegExp="(?siU).*<item>.*<title>(.*)</title>.*<description>.*src="(.*)"
.*</description>.*<link>(.*)</link>"
[MeasureTitle]
Measure=Plugin
Plugin=WebParser.dll
URL=[MeasureCustoParent]
StringIndex=1
[MeasureImage]
Measure=Plugin
Plugin=WebParser.dll
URL=[MeasureCustoParent]
StringIndex=2
Download=1
[MeasureLink]
Measure=Plugin
Plugin=WebParser.dll
URL=[MeasureCustoParent]
StringIndex=3
[MeterTitle]
Meter=String
MeasureName=MeasureTitle
FontSize=12
FontColor=255,255,255,255
SolidColor=0,0,0,255
AntiAlias=1
[MeterImage]
Meter=Image
MeasureName=MeasureImage
Y=2R
W=80
H=60
PreserveAspectRatio=2
LeftMouseUpAction=["[MeasureLink]"]
DynamicVariables=1
Select all
WiFiStatus plugin [home]
Plugin=WiFiStatus 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
General measure options
All general measure options are valid.
WiFiInfoType
This defines what is measured. This option is required. Valid values are:
o SSID : The broadcast name for your current connection. When trying to connect, you may see a
'connecting...' or 'authorizing...' next to the name, but only if your update speed is around 2
seconds.
o Quality : 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 , and WEP . An unknown algorithm will return ??? .
o AUTH : The authentication algorithm being used for your current connection. Possible values
are: Open , Shared , WPA-NONE , WPA-Enterprise , WPA-Personal , WPA2-Enterprise , and WPA2-
Personal . An unknown algorithm will return ??? .
o PHY : The supported bands for your connection (not your adapter). Possible values
are 802.11a , 802.11b , 802.11g , 802.11n , DSSS , FHSSS , and IR-Band . An unknown band will
return ??? . Note:The PHY option is only supported in Windows Vista and higher.
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 PHY , Encryption ,
and AUTH algorithms next the the network SSID .
WiFiIntfIDDefault: 0
Only use this if you have more than 1 wireless interface adapter (which may include any bluetooth or
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.
WiFiListStyleDefault: 0
This allows you to control what information appears along with the names of all visible networks
when WiFiInfoType=List . Valid values are:
o 0 : SSID.
o 1 : SSID @band.
o 2 : SSID (Encryption:Authentication).
o 3 : SSID @band (Encryption:Authentication).
WiFiListLimitDefault: 5
Allows you to control the number of networks that are will be displayed when used
with WiFiInfoType=List .
Note: The list is sorted in descending order based on the signal quality of each network (i.e.
strongest first, weakest last).
Example
[MeasureSSID]
Measure=Plugin
Plugin=WiFiStatus
WiFiInfoType=SSID
WiFiIntfID=0
[MeasureNetworks]
Measure=Plugin
Plugin=WiFiStatus
WiFiInfoType=LIST
WiFiIntfID=0
WiFiListStyle=3
Select all
Returns the name of the current sound device (when used in a String meter) and the percentage (0-100)
of current volume level (when used in a meter which requires a percentage).
Options
General measure options
Usage:
[MeasureWin7Audio]
Measure=Plugin
Plugin=Win7AudioPlugin
Select all
Bangs
To control the sound device or volume, use the !CommandMeasure bang. In the examples
below MeasureWin7Audio is the section name for the Win7Audio measure. Your section name may differ.
Set a specific device with index . This depends on your system setup and number of output
devices.
Change the volume by x percent. Use negative numbers to lower volume. This disables mute.
Example
[Rainmeter]
BackgroundMode=2
SolidColor=0,0,0,150
Update=1000
; Returns the name of the current sound device and percent volume level
[MeasureWin7Audio]
Measure=Plugin
Plugin=Win7AudioPlugin
[MeterDeviceName]
Meter=String
MeasureName=MeasureWin7Audio
X=5
Y=0
W=200
H=20
FontFace=Trebuchet MS
FontSize=11
FontColor=255,255,255,255
StringAlign=LEFT
AntiAlias=1
ClipString=1
[MeterChangeDevice]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=220
Y=-3
Text="+"
[MeterVolumeDown]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=0
Y=20
Text="<<"
[MeasureVolBarBackground]
Measure=Calc
Formula=1
[MeterVolBarBackground]
Meter=Bar
MeasureName=MeasureVolBarBackground
BarOrientation=Horizontal
BarColor=150,150,150,255
W=60
H=6
X=25
Y=29
[MeterCurrentVolumeBar]
Meter=Bar
MeasureName=MeasureWin7Audio
BarOrientation=Horizontal
W=60
H=6
X=25
Y=29
[MeterVolumeUp]
Meter=String
FontFace=Trebuchet MS
FontSize=15
FontColor=255,255,255,255
AntiAlias=1
X=83
Y=20
Text=">>"
Measure=Calc
Formula=MeasureWin7Audio
[MeterVolPercent]
Meter=String
MeasureName=MeasureVolPercent
X=55
Y=40
W=110
H=15
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Center
AntiAlias=1
Text=%1%
[MeterVolToggleMute]
Meter=String
X=5
Y=60
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Left
AntiAlias=1
Text=MUTE
[MeterVolSet50%]
Meter=String
X=78
Y=60
FontFace=Trebuchet MS
FontSize=10
FontColor=255,255,255,255
StringAlign=Left
AntiAlias=1
Text=50%
Select all
Options
General measure options
All general measure options are valid.
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 . Both wParam and lParam 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
The following example returns the name of the song that is playing in WinAmp.
[MeasureWinamp]
Measure=Plugin
Plugin=WindowMessagePlugin
WindowClass=Winamp v1.x
Substitute="[Paused]":""," - Winamp":""
Select all
Check if Winamp is playing, or not. The following example 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
Select all
Show song progress. In the following example, the [MeasureWinampDuration] will return the current song
position as a value between 0 and 1 . Then you can use 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))
Select all
Options [home]
While Rainmeter has hundreds of options in total for all the measures, meters, and plugins, many
of them can be categorized into types. For example, some options represent colors while others
are used to specify a path.
Color options
Color options such as SolidColor and FontColor should use the RGBA (red-green-blue-alpha)
notation in either the hexadecimal or decimal form. The color results from a mixing of the red,
green and blue components of the option, with the transparency (alpha channel) of the element
set by the fourth component.
Decimal colors are specified as RRR,GGG,BBB,AAA , where RRR , GGG , BBB , and AAA are decimal
numbers from 0 to 255. Formulas can also be used in place of the numbers.
Hexadecimal colors are specified as RRGGBBAA , where RR , GG , BB , and AA are hexadecimal
numbers from 00 to FF.
Note: The alpha component is optional. As with the other components it is a value from 0 to 255
(00 to FF), with 0 being completely invisible (and the meter will not react to the mouse) to 255,
which is completely opaque. The default is 255 (or FF).
SolidColor=255,0,0,255
SolidColor=255,0,0
SolidColor=FF0000FF
SolidColor=FF0000
Select all
One of many ways to obtain a desired color code is Rainmeter Online Color Picker.
Path options
Path options specify the relative or absolute path of either a file or a folder (depending on the
option). For example, the path of an image file is expected with ImageName .
ImageName=lolcat.png
ImageName=..\lolcat.png
; Absolute path:
ImageName=C:\lolcats\lolcat.png
Select all
Number options
Number options specify either a number or a formula enclosed in parentheses.
FontSize=42
FontSize=(40 + 2)
Select all
Action options
Options in a skin which cause Rainmeter to take some action. Actions may be triggered by user
input such asmouse actions, or system events and changing values within the skin, such as if
actions.
Normally the value of an action option is going to be one or more bangs, or the execution of
external commmands in Windows.
; Single bang:
LeftMouseUpAction=!HideMeter SomeMeter
LeftMouseUpAction=[!HideMeter SomeMeter]
; Multiple bangs:
Select all
For bangs that take parameters, the arguments should be separated by a space. Parameters that
contain spaces must use quotes around the parameter.
LeftMouseUpAction=[!HideMeter SomeMeter]
LeftMouseUpAction=[!HideMeter "SomeMeter"]
; These two are NOT equivalent. The first line will cause an error due to the spaces
; in the parameters while the second will properly set the value of SomeVariable
; These two may or may not be equivalent depending on the value of the #ImageFile#
; variable. If #ImageFile# contains spaces, the first line will fail. In uncertain
LeftMouseUpAction=[!SetWallpaper #ImageFile#]
LeftMouseUpAction=[!SetWallpaper "#ImageFile#"]
Select all
External Windows commands can be executed by specifying the path to the executable and any
parameters. Enclose any values with spaces in quotes.
LeftMouseUpAction=["C:\Windows\Notepad.exe" MyFile.txt]
LeftMouseUpAction=["http://rainmeter.net/forums"]
Select all
A parameter containing quotes should be surrounded by a pair of triple quotes.
; The first line will fail due to extra quotes. The second line will properly log
Select all
When using #VarName# or [MeasureName] in an action option, the current value of the variable or
measure will be used. To have the literal string "#VarName#" or "[MeasureName]" used, in a
!SetOption value for instance, use the "*" char as in #*VarName*# or [*MeasureName*] to tell
Rainmeter you do not want the value resolved, but rather used as a literal string.
; The FontSize option for SomeMeter will be set to the current value of the variable.
; The FontSize option for SomeMeter will be set to the the string "#VarName#"
Select all
Bangs [home]
Bangs are commands that control various aspects of skins and Rainmeter. They are executed when used
withaction options in the skin.
Bangs can also be used from the Windows command line as a parameter to the Rainmeter.exe executable.
Example: "C:\Program Files\Rainmeter\Rainmeter.exe" !RefreshApp .
Note: Many bangs have a Config parameter. Unless otherwise specified, valid values are the config
name of a currently loaded skin to be acted upon or * (asterisk) to act on all currently loaded skins. When
optional and not supplied, the parameter defaults to the current config. If executing a bang with a
"config" parameter from the Windows command line, the parameter is always required.
Operating System bangs
!SetClipParameter: String
Copies the specified string to the Windows clipboard. If the string contains spaces, use quotes
around the parameter.
o File (required): The file to be set as the desktop background. The following formats are
supported: .bmp , .jpg , .png , .gif , and .tiff . If the filename contains spaces, you must
enclose the filename in quotes.
o Position (optional): Sets the position of the wallpaper. Valid values
are: Center , Tile , Stretch . Windows 7 (and above) also have the values: Fit and Fill .
Application bangs
!AboutParameter: TabName
o TabName (optional): Name of the tab to open. Valid values are: Log (default), Skins , Plugins ,
and Version . The value Measures is deprecated and will open the Skins tab.
!TrayMenu
o String (required): The string to be written to the log. If the string contains spaces, enclose the
string in quotes.
o ErrorType (optional): Specifies the type of error. Valid values
are: Notice (default), Error , Warning , and Debug .
!ResetStats
!LoadLayoutParameters: LayoutName
Loads the named layout. A layout can also be loaded from the Windows command line:
!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.
PlayParameter: SoundFile
PlayLoopParameter: SoundFile
PlayStop
Sets a new value for a variable. The meter or measure where the variable is used must
enableDynamicVariables. !SetVariable can create a new variable in memory, even if it is not pre-
defined in the[Variables] section.
Permanently writes a Key=Value pair below a section in a INI formatted file (such as .ini or .inc
files). A skin must be refreshed for a new value written to the skin's .ini or .inc files to be re-read
and used.
o Section (required): If the section does not exist in the file, a new section will be written at the
end of the file.
o Key (required): If the key does not exist under the section, a new key will be written at the end
of the section.
o Value (required): Value to be written. Any previous value will be overwritten.
o FilePath (optional): If not specified, the current skin file is used. The file must exist and must
be located under either #SKINSPATH# or #SETTINGSPATH# .
Sets an option (ie. FontSize, Text, Formula, etc.) of meters and measures in the specified group.
Skin bangs
!Show, !Hide, !ToggleParameter: Config
o Config (optional)
o Config (optional)
o Config (optional)
!MoveParameters: X, Y, Config
Sets the position of a skin.
Activates a skin.
!DeactivateConfigParameter: Config
Deactivates a skin.
!UpdateParameter: Config
Overrides the setting of the Update option in [Rainmeter] and immediately updates the entire
skin, all measuresand meters. This does not override any UpdateDivider options
on measures or meters.
o Config (optional)
!RedrawParameter: Config
Overrides the setting of the Update option in [Rainmeter] and immediately redraws all visible
elements of the entire skin. Meters will use the last value obtained for any measures or variables
referenced.
o Config (optional)
!RefreshParameter: Config
Reads the skin file and recreates the skin.
o Config (optional)
!SkinMenuParameter: Config
Opens the skin context menu at the current mouse position.
o Config (optional)
o Position (required): -2 for On desktop, -1 for Bottom, 0 for Normal, 1 for On top, or 2 for
Always on top.
o Config (optional)
!DeactivateConfigGroupParameter: Group
Deactivates a group of skins.
!UpdategroupParameter: Group
Overrides the setting of the Update option in [Rainmeter] and immediately updates the skins in
the specified group, all measures and meters. This does not override any UpdateDivider options
on measures or meters.
!RedrawGroupParameter: Group
Overrides the setting of the Update option in [Rainmeter] and immediately redraws all visible
elements of the specified group of skins. Meters will use the last value obtained for any measures
or variables referenced.
!RefreshGroupParameter: Group
Reads the skin file and recreates a group of skins.
Sets the Draggable option for each config in the specified group.
o Position (required): -2 for On desktop, -1 for Bottom, 0 for Normal, 1 for On top, or 2 for
Always on top.
o Group (required): Name of the group.
Meter bangs
!ShowMeter, !HideMeter, !ToggleMeterParameters: Meter, Config
Shows or hides the given meter.
Overrides the setting of the Update option in [Rainmeter] or any UpdateDivider on the meter, and
immediately updates the meter, obtaining new current values for any measures or variables
referenced. Note that the meter is not redrawn with any new values until the next update, or if
a !Redraw bang is used.
o Meter (required): Name of the meter to update. Use * to update all meters.
o Config (optional)
Moves the given meter (not the window) to the specified position. The new position is relative to
the top left corner of the skin.
Measure bangs
!EnableMeasure, !DisableMeasure, !ToggleMeasureParameters: Measure, Config
This behavior can also be controlled with the Disabled general measure option. Numeric values in
measures will be set to zero when the measure is disabled.
This is similar to !DisableMeasure / !EnableMeasure, however the numeric value of the measure
will contain the most recent value, rather than being set to zero.
Deprecated bangs
!Execute
The !Execute bang, used both to indicate multiple bangs in one statement and to execute external
applications has been made optional. Do not use it in new skins.
!Rainmeter...
Bangs names can optionally be preceded by the "Rainmeter" keyword. For example,
!RainmeterShowMeter and !ShowMeter are both equal. New skins should not use the Rainmeter
prefix.
This bang has been deprecated in favor of !CommandMeasure and should not be used in any
new skins.
Variables [home]
A variable is a string of text that is associated with a short, memorable name. Variable names
can be used in mostoptions throughout the skin, in place of the associated text.
Variables are helpful when a certain string is repeated many times throughout the skin. By
referencing the variable name instead of the full string, the amount of "redundant" code is
reduced, as is the overall size of the skin. Variables also simplify the task of changing values. A
variable string can be modified in a single location, and without recreating the entire option in
which it is used.
[Variables] section
Each skin may have a special section called [Variables]. Each option in [Variables] defines a
variable name. Unlike most other option names in Rainmeter, variable names are not limited to a
specific list. They can have any valid name, as long as they do not conflict with
Rainmeter's built-in variables.
[Variables]
Foo=This is a string!
Bar=So is this!
Select all
Using Variables
Variable names are referenced in other options by surrounding the name with pound signs ( # ), as
in #Foo# . When the skin is loaded, Rainmeter replaces the variable reference with the
corresponding string. Variables are inserted "literally," which means they can be mixed with
other variables or regular text.
[MeterFoo]
Meter=String
FontColor=#Red#,#Green#,#Blue#,#Alpha#
[MeterBar]
Meter=String
FontColor=#Red#,#Green#,#Blue#,#Alpha#
Select all
[Variables]
Foo=rainmeter
Bar=http://www.#Foo#.net/
Select all
Changing Variables
The !WriteKeyValue bang can be used to rewrite values in [Variables]. The skin must be refreshed to apply
changes made by !WriteKeyValue.
Alternatively, the !SetVariable bang can be used to change variable values dynamically. !SetVariable can
be used to create a variable that does not already exist in the [Variables] section.
Dynamic Variables
A variable whose value changes while the skin is active is called a dynamic variable. Dynamic variables
allow a skin to store, retrieve and display ever-changing information without refreshing the skin.
Dynamic variables can only be used in a measure or meter with the option DynamicVariables=1 .
Any [MeasureName] used in a bang as a Section Variable is automatically dynamic,
and DynamicVariables=1 is not required.
In addition, there are some plugins which do not support dynamic variables at this time. The following are
sections where dynamic variables cannot be used:
o [Rainmeter]
o [Variables]
o [Metadata]
o iTunes
o MediaKey
o Power
o VirtualDesktops
o 3rd-party plugins are not guaranteed to support dynamic variables.
When a meter or measure has dynamic variables enabled, Rainmeter uses marginally more processor
power. This difference is negligible for most skins, but it may be noticeable in very large, complex skins
with many dynamic variables, or on image meters with very large images. For this reason, it is
recommended to use dynamic variables only when necessary, and use alternatives such as !SetOption in
other cases.
Built-In Variables
Rainmeter automatically creates a number of helpful variables for each skin. These variables do not need
to be defined in the [Variables] section. Some built-in variables are dynamic.
Section Variables
Some measure and meter properties can also be referenced as dynamic variables by using the section
name in brackets ( [] ), as in [SectionName] . These section variables can also be modified by certain
parameters, as in [SectionName:P1,P2] .
Event Variables
Some action options allow the use of special variables that are related to the specific event that triggers
the action. These variables are referenced by surrounding the name with dollar signs ( $ ), as in $Foo$ .
Event variables are evaluated at the time the action is triggered, used to execute the action, and then
immediately discarded. For example, when using a command with the InputText plugin, the event
variable $UserInput$ refers to the string that was entered into a text input box by the user.
Environment Variables
Windows environment variables can be referenced as variables in Rainmeter by using the variable name
contained between percent signs ( % ), such as %APPDATA% or %SystemDrive% . To see a complete list of
environment variables available on your system, open a Windows command prompt (cmd.exe) and
type set .
Escaping Variables
Rainmeter always attempts to replace #Name# or [Name] with a value, if "Name" refers to an existing
variable, meter or measure. To prevent a variable reference from being replaced, place asterisks ( * ) inside
the containers, as in:
o #*Foo*#
o [*Bar*]
These are replaced with #Foo# and #Bar# , respectively. The !SetOption bang can use these escape
characters to protect variable references when setting options on dynamic meters or measures.
o Path variables
o Skin variables
o Miscellaneous variables
o Monitor variables
Path variables
#PROGRAMDRIVE#Example: C: or \\server\Users\
#SETTINGSPATH#Example: C:\Users\YourName\Appdata\Roaming\Rainmeter\
Path to the folder containing Rainmeter.ini and other settings files and folders.
#ADDONSPATH#Example: C:\Users\YourName\Appdata\Roaming\Rainmeter\Addons\
Path to the addons folder.
Note: #ADDONSPATH# should be avoided when possible. Addons should be kept in the @Resources
folderinstead.
Skin variables
#@#Example: C:\Users\YourName\Documents\Rainmeter\Skins\illustro\@Resources\
#CURRENTPATH#Example: C:\Users\YourName\Documents\Rainmeter\Skins\illustro\Clock\
#CURRENTFILE#Example: Clock.ini
#ROOTCONFIGPATH#Example: C:\Users\YourName\Documents\Rainmeter\Skins\illustro\
Path to Root config - Highest-level folder under the skins folder for the current skin.
#ROOTCONFIG#Example: illustro
Name of Root config - Highest-level folder under the skins folder for the current skin.
#CURRENTCONFIG#Example: illustro\Clock
Miscellaneous variables
#CRLF#
The name of the section in which the variable is used. Provides a blank string if used in another
context, such asGetVariable in a Lua script.
Monitor variables
Usage
A meter or measure is referenced as a section variable by placing the section name in brackets ( [] ). The
value provided by a section variable can be changed by adding parameters after a colon ( : ). Multiple
parameters are separated by commas ( , ). Spaces are allowed after a comma.
[SectionName:P1,P2]
Normal or built-in variables take priority over section variables, which means they can be used within
section variables. For example: [#Foo#:#Bar#] . (The reverse, such as #[Foo][Bar]# , is not valid.)
Dynamic Variables
Section variables are always dynamic. DynamicVariables=1 is only needed in the section where the
variable is being used, not the section that is being referenced.
Meter Parameters
None.
Note: This provides the "real" X or Y value, which is the position of the top-left corner of the
meter area. This is always an integer, even if the meter has no X and Y options set, or if the
options use formulas, variables or relative positions.
This also means that for a string meter with StringAlign options, the value
of [MeterName:X] and [MeterName:Y] may not be the same as the option values.
Note: This provides the "real" W or H value. This is always an integer, even if the meter has no W
and Hoptions set, or if the options use formulas or variables.
Measure Parameters
None.Example: [MeasureName]
:Example: [MeasureName:]
If a blank parameter is given, the measure's number value is provided, with up to ten decimal
places of precision.
:nExample: [MeasureName:10]
The measure's number value, with the number of decimal places given.
Multiple Parameters: This parameter may be combined with Scale and Percentual.
:/nExample: [MeasureName:/1024]
Multiple Parameters: This parameter may be combined with Decimals and Percentual.
:%Example: [MeasureName:%]
Multiple Parameters: This parameter may be combined with Decimals and Scale.
Multiple Parameters: This parameter may be combined with Decimals and Scale.
Mouse Variables [home]
Mouse variables are a special function to return the X and Y position of the mouse cursor when a mouse
action takes place.
The position is relative to the meter that has the mouse click action, or the skin if used in the [Rainmeter]
section.
Usage
The variables are only created and used in the context of a mouse click action. Primarily, they will be used
as a parameter to a Bang. For instance:
Notes: The values returned are not the mouse position on the screen, but are pixels or a percentage
relative to the meter or skin with the mouse action. They are also not general purpose variables, and when
used outside the context of a mouse action on a meter or the skin, will not contain a value.
$MouseX$
X position of the mouse cursor as a number of pixels relative to the meter or skin with the mouse
action.
$MouseY$
Y position of the mouse cursor as a number of pixels relative to the meter or skin with the mouse
action.
$MouseX:%$
X position of the mouse cursor as a percentage relative to the meter or skin with the mouse action.
$MouseY:%$
Y position of the mouse cursor as a percentage relative to the meter or skin with the mouse action.
Example
[Rainmeter]
[Background]
Meter=Image
SolidColor=0,0,150
W=150
H=225
[CoordinateA]
Meter=String
FontColor=255,255,255
Group=Coordinates
[RedSquare]
Meter=Image
SolidColor=255,0,0
X=25
Y=30
W=100
H=100
MouseActionCursorName=Cross
[CoordinateB]
Meter=String
FontColor=255,255,255
Group=Coordinates
Y=20R
[GreenSquare]
Meter=Image
SolidColor=0,255,0
X=25
Y=180
W=100
H=25
MouseActionCursorName=Cross
Select all
Groups [home]
Skins, meters, and measures can be categorized into groups to allow easier control with group bangs. For
example, the !HideMeterGroup bang may be used to hide multiple meters in a single bang (compared
to !HideMeter statements for each meter).
Options
Group
Defines the group(s). Multiple groups can be specified using | as the delimiter.
o Skin groups are defined under the [Rainmeter] section of a skin or the
individual [ConfigName] sections of Rainmeter.ini, and are used by the skin group bangs.
o Meter groups are defined in the meter section and are used by the meter group bangs.
o Measure groups are defined in the Measure section and are used by the measure group bangs.
Usage
o On any meter. The target area detected by the mouse will be any non-tranparent areas of the meter, or
any part of the meter which has a non-transparent meter or skin background behind it.
o In the [Rainmeter] section of the skin if Background is defined.
Note: Actions defined for a meter will override actions defined in the [Rainmeter] section.
LeftMouseDownAction
Action to execute when the left mouse button is pressed.
RightMouseDownAction
Action to execute when the right mouse button is pressed.
MiddleMouseDownAction
Action to execute when the middle mouse button is pressed.
LeftMouseUpAction
Action to execute when the left mouse button is released.
Note: This will generally be the desired option for a left mouse click. LeftMouseDownAction should
be avoided unless there is a specific need to trap the downward press, as it will disable the ability to
drag the skin.
RightMouseUpAction
Action to execute when the right mouse button is released.
MiddleMouseUpAction
Action to execute when the middle mouse button is released.
LeftMouseDoubleClickAction
Action to execute when the left mouse button is double clicked.
RightMouseDoubleClickAction
Action to execute when the right mouse button is double clicked.
MiddleMouseDoubleClickAction
Action to execute when the middle mouse button is double clicked.
X1MouseDownAction, X2MouseDownAction
Action to execute when a supported extra mouse button is pressed.
Note: Some manufacturers and/or software have the ability to change what each extra button can
do, therefore these actions may not work for everyone. It is not recommended to distribute skins that
rely on these actions.
X1MouseUpAction, X2MouseUpAction
Action to execute when a supported extra mouse button is released.
X1MouseDoubleClickAction, X2MouseDoubleClickAction
Action to execute when a supported extra mouse button is double clicked.
MouseLeaveAction
Action to execute when the mouse cursor leaves the meter or skin.
MouseScrollDownAction
Action to execute when the mouse wheel is rotated down.
MouseScrollUpAction
Action to execute when the mouse wheel is rotated up.
MouseScrollLeftAction
Action to execute when the mouse wheel is tilted or rotated to the left. Not all mice have this
capability.
MouseScrollRightAction
Action to execute when the mouse wheel is tilted or rotated to the right. Not all mice have this
capability.
The default for the entire 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 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).
MouseActionCursorName
If a custom cursor file (i.e. .cur or .ani) is found in @Resources\Cursors in the root config folder of a
skin, it will be automatically loaded and available as an alternative for the standard "hand" pointer for
meters or skins with a mouse action.
A script refers to a set of Lua functions that is associated with a script measure. These functions may be
executed when the skin loads, when it updates, or on command.
This page details the Rainmeter-specific modifications and new functions that have been added to
Rainmeter's built-in Lua environment. More documentation for Lua itself is available at:
The rest of this page assumes a basic knowledge of the Lua language.
Script Measure
The script measure is used to load a Lua script from a file and interface with the script. The script file must
be a text file, and typically has the extension .lua .
Much like plugin measures, each script measure creates a separate instance of its script. This means that a
skin can have any number of scripts loaded simultaneously—even from the same script file. (The order in
which scripts are executed is determined by the measure order.) "Global" variables are not shared
between instances.
[MeasureName]
Measure=Script
ScriptFile=MyScript.lua
Select all
Options
In addition to general measure options and ScriptFile, scripts also allow user-defined options. These
options may have any name and value, and may be changed with !SetOption. The script can read and use
its own option values using the SELF object functions. This allows the same script file to be used with
different parameters depending on the context.
[MeasureName]
Measure=Script
ScriptFile=MyScript.lua
MyOption=Hello, world!
Select all
Dynamic Variables
Dynamic variables are generally not needed with script measures. This is because functions are provided
to get the current values of variables, measures and options within Lua. If these functions are used in
the Update function, they will return the current values at the time the function is called.
!CommandMeasure
The !CommandMeasure bang can be used to execute Lua code in the context of a particular script
instance:
All statements must be passed as a single parameter in the bang. Because single-quotes ( ' ) and double-
quotes ( " ) are both valid string containers in Lua, while only double-quotes are recognized in Rainmeter,
single quotes are recommended when passing strings with !CommandMeasure.
Initialize
If the Initialize function is defined in any script, the function is called one time (without parameters) when
the skin is activated or refreshed. This happens even if the script measure is disabled. If the script file is
changed by a!SetOption bang, the new script's Initialize function is called as well.
function Initialize()
end
Select all
Actions that are needed to "set up" the script, such as declaring global variables, should be done in the
Initialize function.
Update
If the Update function is defined in any script, the function is called (without parameters) whenever the
script measure updates. The script measure responds normally to the Disabled option,
the UpdateDivider option, and allmeasure bangs.
function Update()
MyVariable = 'Hello, world!'
return MyVariable
end
Select all
The Update function's return value determines what values are provided by the script measure. Strings
and numbers in Lua are analogous to string values and number values in Rainmeter measures. Examples:
o return
Provides 0 as the number value, and '' (blank) as the string value. The same is true if no return is
stated.
o return 'Ninety-Nine'
Provides 0 as the number value (because the string cannot be converted to a number), and 'Ninety-
Nine' as the string value.
The values provided by the script measure can be used in the same way as other measure values.
(Note: the values only update when the measure itself updates. Calling Update() within Lua does not
update the measure values.)
Log
Lua errors are logged in the About window. The print function may also be used to write strings to the
log. This can provide helpful feedback when writing or troubleshooting a script.
Functions
Lua functions are provided to identify a meter, a measure, or the current skin as a Lua object. Additional
functions are provided for manipulating each type of object in specific ways.
SKIN object
GetMeasureParameter: MeasureName
Creates an object for the named measure. Returns nil if the measure is not found.
GetMeterParameter: MeterName
Creates an object for the named meter. Returns nil if the meter is not found.
Returns the current value of the named variable as a string. If the variable does not exist, returns
the given default value, or nil if no default is given.
MakePathAbsoluteParameter: File/Folder
Converts a relative filepath into an absolute filepath, in the same manner as a path option.
ReplaceVariablesParameter: String
Returns the given string, with all valid variable values properly replaced. Section variables are
valid.
ParseFormulaParameter: FormulaString
If the given string is a valid formula, evaluates the formula and returns the result as the number.
Otherwise, returns nil .
A Measure object is created using GetMeasure. It is linked to a specific measure in the skin.
GetValue
GetStringValue
Returns the current value of the named option as a string. If the option does not exist, returns the
given default value, or '' if no default is given.
Returns the current value of the named option as a number. If the option does not exist, or is not
a valid number or formula, returns the given default value, or 0 if no default is given.
GetName
GetMinValue
GetMaxValue
Returns the current maximum value of the measure as a number.
GetRelativeValue
Returns the measure's current number percentage value as a number, scaled from 0.0 to 1.0 .
GetValueRange
Disable
Example: MyMeasure:Disable()
Enable
Example: MyMeasure:Enable()
SELF object
The SELF object is created automatically. SELF is a measure object linked to the current script measure.
Allmeasure object functions are valid for SELF .
MyScriptMeasureName = SELF:GetName()
Meter object
A Meter object is created using GetMeter. It is linked to a specific meter in the skin.
Returns the current value of the named option as a string. If the option does not exist, returns the
given default value, or '' if no default is given.
GetXParameters: Absolute
Returns the current X position of the meter as a number. If the optional Absolute parameter
is true , returns the absolute (or "real") X position.
GetYParameters: Absolute
Returns the current Y position of the meter as a number. If the optional Absolute parameter
is true , returns the absolute (or "real") Y position.
GetW
GetH
SetX
Example: MyMeter:SetX()
SetY
Example: MyMeter:SetY()
SetW
Sets the width of the meter.
Example: MyMeter:SetW()
SetH
Example: MyMeter:SetH()
Hide
Example: MyMeter:Hide()
Show
Example: MyMeter:Show()
Restrictions
The following Lua features are not available in Rainmeter at this time:
Deprecated Features
The following Rainmeter-specific features have been deprecated and should not be used. They are still
supported, but may be removed in future versions.
o PROPERTIES = { ... }
This table was previously used to read options on the script measure. Instead, use:
SELF:GetOption('MyOption') or SELF:GetNumberOption('MyOption')
o MyMeter:SetText('...')
This function was used to change a string meter's text. Instead, use:
SKIN:Bang('!SetOption', 'MeterName', 'Text', '...')
o function GetStringValue()
This function was used to set the script measure's value. Instead, use:
function Update() return ... end