LuaCalendar is a Calendar skin designed for use with the Rainmeter program. By using the power of the Lua scripting language, the skin loads instantly and is exrtremely flexible. The skin itself is designed to use Style Sheets, allowing for complete customiztion of the look and feel of the skin while retaining all of the functionality of the script.

One of the major features of the skin is the abiltiy to display events that are defined by the user. This was a long requested feature of the existing calendar skins. All of the easily configured settings and features are listed below.

Release Notes

Download from DeviantArt.
Version 5.0
  • Added the Options skin.
  • Added the ability to define Event File Variables.
  • Added the ability to change the string case of Event names.
  • Added the Skip option to repeating events.
  • Added the Timestamp option to Event files.
  • Formulas are now allowed in all Event File number options.
  • Variables can now be used in all Event File options.
  • Added Custom repeating events.
  • Fixed an issue with Week range where current day style was not being applied.
  • Fixed an issue where custom month names would break the calendar.
See more changes

Calendar Settings

All settings can be found in

Skin Actions

LuaCalendar has the ability to show different months while using the Month range. While some styles may have visual elements for this, not all do. This is where the Skin Actions come in.

Scroll Actions

When hoving over the skin, scroll using the scrollwheel on the mouse up to move back and down to move forward. This action is based on the update speed of the skin. It groups multiple scrolls during on update into a single scroll action.

Context Menu Actions

Under the submenu named "Custom skin actions" in the context menu several options have been made available. These options include editing of the calendar options, moving through the months, and returning to the current month.

Using Event Files

To use Event Files set EventFile to the path of a text file on the calendar measure. Multiple files can be aggregated together using a pipe delimiter and all files must be in the same folder which is the first item in the list.

There is no limit to the number of Events used. Event files must be formatted in the following XML style format, indents not required.

<EventFile Title="Holidays" Repeat="Year">
	<Variable Name="Variable Name" Case="Variable Value"/>
	<Event Month="1" Day="10" Description="Event Description"/>
	<Set Month="2">
		<Event Day="12" Description="Some Other Event"/>
<!--This is a comment.-->

The complete contents of the Event file must be enclosed in <EventFile></EventFile> tags. The following settings may be set on each EventFile, Event, or Set tag and are overridden by those nested within them.

*This field is optional.

Variables can be created that are specific to the the Event File that it is created in. The variable can then be used in all options in the event file. The format is as follows:
<Variable Name="Variable Name" Case="Variable Value"/>


There are a few instances when certain Variables can be used with LuaCalendar settings. The first being LabelText and the others being in the options of the Holiday Files. Variables are surrounded by {$Curly Brackets} with the dollar sign in front of the variable name, and are case insensitive.

Static Variables
Variable Days

Variable Days are used to calculate holidays that occur on days like the Second Tuesday of the month. They are defined using the following keywords.

Starts with: First, Second, Third, Fourth, Last

Ends with: Sun, Mon, Tue, Wed, Thu, Fri, Sat

<Event Month="11" Day="{$FourthThu}" .../>

Built-In Event Variables

In order to support events that require complex calculations, LuaCalendar supports certain Built-In events. These events create both a {$EventNameMonth} and an {$EventNameDay} variable. The value of these variables are recalculated for each year so that they are kept up to date.

Currently the supported Built-In Events are Easter, GoodFriday, AshWednesday, and MardiGras.

Style Sheets

LuaCalendar uses style sheets in order to allow for complete customization of the look and feel of the skin. Style sheets are files with individual MeterStyles and Variables used to define the meter properties of the skin. These files in located in the Styles folder, under another folder whose name defines the name of the style sheet.

There are three style sheets included with LuaCalendar. The Default style is very basic and is based on the old Enigma calendar. Default2 shows a little bit of what the style sheets can actually do. The third style sheet is made to match the Enigma 3.1 calendar.

Creating Style Sheets

There are two files used to create a style sheet. contains all of the meter styles required as well as any special meters. is used to create any variables specifically used by the style sheet.


5.0 (11/27/2013) 4.1 (11/27/2012) 4.0 (11/4/2012) 3.5 (7/20/2012) 3.4 (5/22/2012) 3.3 (4/18/2012) 3.2.2 (3/26/2012) 3.2.1 (3/12/2012) 3.2 (3/11/2012) 3.1.3 (3/1/2012) 3.1.2 (2/24/2012) 3.1.1 (2/7/2012) 3.1 (2/5/2012) 3.0.1 (1/2/2012) 3.0 (1/21/2012) 2.2.3 (1/15/2012) 2.2.2 (8/22/2011) 2.2.1 (8/14/2011) 2.2 (8/13/2011) 2.1 (8/8/2011) 2.0 (8/8/2011)