A rainmeter skin that will automatically switch to a specific layout on resolution changes. I often need to connect / disconnect multiple monitors, and Rainmeter seems doesn't provide a way to auto switch the layout when that happens, I will need to manually switch layout everytime that happens, which is annoying.
So far I only found a tool named RainRez that offers similar functionality, but it only checks the default monitor's resolution, and requires running a separate .exe file, therefore I decided to make my own...
As shown, the skin will automatically switch to 3 different layouts based on the connected display resolutions.
RainMeterAutoLayout_Demo.mp4
- Download the
.rmskinfile from the Releases section. - Double click the
.rmskinfile to install the skin.
- To utilize AutoLayout, you must first load the
AutoLayout/Main.inifor each layout you want to switch to, and then save the layout.

- Find the configuration file
Variables.inclocated at~YourRainMeterSkinFolder\AutoLayout\@Resources\(In Rainmeter, right-click on the folder, then selectOpen folder)
- Edit the file using any text editor, specifically the
LayoutMapvariable. Refer to section LayoutMap for detail.
- Refresh the layout, it will now monitor any resolution changes, and auto switch to the associated layout in
LayoutMapif provided.
| Variables | Description | Default |
|---|---|---|
EnableMonitoring |
Determines whether resolution monitoring is enabled (0 to disable, 1 to enable). | 1 |
EnableDebugString |
Determines whether the debug string meter is displayed at the center of the screen (0 to disable, 1 to enable). | 0 |
OnLoadDelayTime |
Delay time (in seconds) after the skin is loaded before starting the resolution monitoring. | 5 |
EnableDefaultLayout |
Determines whether to fallback to the DefaultLayout if no resolution layout is found after a resolution change (0 to disable, 1 to enable). |
0 |
DefaultLayout |
Specifies the default layout name to fallback to. This is only used if EnableDefaultLayout is set to 1. |
|
LayoutMap |
Associates resolutions with layouts. Format: {virtual screen width}x{virtual screen height}={layout name}, separated by LayoutMapDelimiter. |
|
LayoutMapDelimiter |
The delimiter used in LayoutMap. |
"|" |
- The term "virtual screen" refers to the screen that encompasses all display monitors. For example, if two horizontally aligned monitors with resolutions of
2560x1440and1920x1080, the virtual screen size would be4480x1440. Refer to Rainmeter documentation for info. - In the
LayoutMapvariable, if for example value"4480x1440=Layout 1|2560x1440=Layout 2|1920x1080=Layout 3"is provided:- Both the 1440p and 1080p monitors are connected → switch to
Layout 1 - Only the 1440p monitor is connected → switch to
Layout 2 - Only the 1080p monitor is connected → switch to
Layout 3
- Both the 1440p and 1080p monitors are connected → switch to
- The skin will check resolution changes every second, modify the skin's update rate if needed.
- Check Rainmeter's log for log messages from the skin.