A sleek, dark-themed calendar skin for Rainmeter that integrates with Google Calendar to display your events directly on your desktop.
- Full month view with 6 weeks Γ 7 days layout
- Blue dates for current month, grey dates for previous/next month
- Cyan circle highlighting today's date
- White circle highlighting selected date (with black text)
- Previous/Next month navigation buttons
- TODAY button to quickly return to current date
- All 42 calendar cells are clickable
- Grey dates automatically flip the calendar to show the previous/next month
- Selected date is tracked and displayed throughout the interface
- Visual feedback with white circles and black text
- Fetches events from Google Calendar via ICS feed
- Proper UTC to IST timezone conversion
- Supports both all-day events and timed events
- Real-time event filtering based on selected date
- TODAY EVENTS section displays events for the selected date
- Header dynamically changes to show selected date (e.g., "2025-10-21 EVENTS")
- Each event shows the event name and time
- UPCOMING EVENTS section displays future events relative to selection
- Clean, organized layout with proper spacing
- Cyber/dark theme with cyan and white accents
- Color-coded dates (cyan for current month, grey for other months)
- Dark text on cyan/white circles for optimal readability
- Smooth animations and hover effects
- Professional typography and spacing
- Rainmeter (latest version)
- Google Calendar with a valid ICS feed URL
-
Extract Files
- Extract the CyberCalendar folder to your Rainmeter Skins directory:
C:\Users\[YourUsername]\Documents\Rainmeter\Skins\
- Extract the CyberCalendar folder to your Rainmeter Skins directory:
-
Configure Google Calendar ICS URL
- Open
Calendar.ini - Find the line:
GoogleCalendarICS=https://... - Replace with your Google Calendar ICS feed URL
- To get your ICS URL:
- Go to Google Calendar settings
- Select your calendar
- Scroll to "Calendar Address"
- Click on the ICS link to copy the URL
- Open
-
Load the Skin
- Open Rainmeter
- Find "CyberCalendar" in the skins list
- Click "Load" to display the calendar
- Left Arrow (<): Go to previous month
- Right Arrow (>): Go to next month
- TODAY Button: Return to current date and show today's events
- Click any date: Select that date to view its events
- Click grey dates: Automatically navigates to that month
- Selected date: Shown with a white circle and black text
- Events for the selected date appear in the "TODAY EVENTS" section
- The header changes to show the selected date (e.g., "2025-10-21 EVENTS")
- Each event shows the time and event name
- All-day events display as "All day"
CyberCalender/
βββ Calendar.ini # Main skin configuration
βββ @Resources/
β βββ Calendar.lua # Calendar grid logic and event parsing
β βββ Parser.lua # Reference ICS parser (not used)
βββ README.md # This file
- GetDay(index): Returns the day number for a calendar cell (0-41)
- IsInCurrentMonth(index): Checks if a date is in the current month
- IsToday(index): Checks if a date is today
- SetSelectedDate(index): Sets the selected date and handles month navigation
- parseIcs(): Parses RFC 5545 ICS format
- filterEvents(): Filters events by date
- convertUtcToIst(): Converts UTC times to IST with date offset tracking
- GetParsedResultJson(selectedDate): Returns events for a specific date
- Automatically converts UTC times to IST (India Standard Time)
- Handles date changes due to timezone conversion
- Properly filters events by local date after conversion
Edit the [Variables] section in Calendar.ini:
ColorWhite=255,255,255,255
ColorCyan=0,200,255,255
ColorEvent=100,200,255,200FontFace=Segoe UI Light
FontFaceTitle=Segoe UI
FontFaceDays=Segoe UIEdit [MeterBG] to change the size and position of the calendar window.
- Verify your Google Calendar ICS URL is correct
- Check that your calendar is shared publicly
- Make sure the calendar has events for the selected date
- Reload the skin: Right-click β Reload
- Verify your system timezone is set to IST
- Check that the calendar events are stored in UTC
- Manually adjust the timezone offset in the Lua script if needed
- Increase the UpdateRate in
[MeasureEventParser](currently 300 seconds) - Manually refresh: Right-click β Refresh all
- Calendar caches parsed events to reduce processing
- ICS feed is fetched every 300 seconds (configurable)
- Supports up to 5 upcoming events display
- Smooth performance even with large calendars
Potential features for future versions:
- Event details modal on click
- Multi-calendar support
- Event color coding by category
- Weather integration
- Quick event creation
- Event notifications
- Limited to displaying 5 upcoming events (configurable in code)
- ICS feed must be publicly accessible
- Timezone conversion supports UTC β IST (can be adapted for other timezones)
- No recurring event expansion (shows as single entries)
Built with:
- Rainmeter: Desktop customization platform
- Lua: Scripting language for calendar logic
- Google Calendar: Event data source
Free to use and modify for personal use.
For issues or suggestions:
- Check the troubleshooting section above
- Verify all configuration steps are complete
- Review the Rainmeter error log for detailed messages
Version: 1.0 Last Updated: October 2025 Tested on: Rainmeter 4.5+
