I had a need/want to be able to receive webhook data and pass it directly to Rainmeter without the need for polling or intermediate files. Since I couldn't find anything that really did that, I created my own and made it pretty universal so it should work with anything. So I present...
It's an open-source, lightweight background application that monitors incoming webhook messages on a specified port and updates Rainmeter skins with the received data. It’s fully headless, but can show an optional system tray icon, and uses a JSON config file for command configuration.
How It Works
It basically takes the value from a particular parameter in the webhook data, then runs a 'bang' command such as !SetOption to pass that value to a particular skin. You configure the name of the parameter it looks for and the options in the command.
Example Use Case
In my case, I use it with the outgoing webhook feature in F.lux to show any changes in the screen's color temperature setting and have it instantly appear in my Rainmeter skin.
Features
How to Download
Visit the GitHub Releases page and find the latest release. Under “Assets,” download the .exe file.
Detailed Usage Tutorial
I have a Wiki article here on GitHub with a detailed walkthrough.
Basic Usage
1. Place the .exe where you like, possibly alongside your Rainmeter skins.
2. Run it once to create a JSON config file (with example commands) in the same directory.
3. Set up your external service to send webhooks to http://127.0.0.1:9999/rainmeter (by default) or your chosen port/path.
4. Edit the JSON config:
In the JSON, each entry in Commands defines a trigger and associated Rainmeter command.
Available fields:
See the Rainmeter documentation here under the section "Option and Variable bangs" for specifics about the bang commands.
I also have an actual configuration example you can see here in the GitHub readme
System Tray Options
If enabled, the tray icon appears and provides quick options from a right-click menu, but no other GUI elements.
Command Line Arguments
Other JSON Config Options
Rainmeter Webhook Monitor
It's an open-source, lightweight background application that monitors incoming webhook messages on a specified port and updates Rainmeter skins with the received data. It’s fully headless, but can show an optional system tray icon, and uses a JSON config file for command configuration.
GitHub page: https://github.com/ThioJoe/Rainmeter-Webhook-Monitor
Detailed usage tutorial: On This GitHub Wiki Page
How It Works
It basically takes the value from a particular parameter in the webhook data, then runs a 'bang' command such as !SetOption to pass that value to a particular skin. You configure the name of the parameter it looks for and the options in the command.
Example Use Case
In my case, I use it with the outgoing webhook feature in F.lux to show any changes in the screen's color temperature setting and have it instantly appear in my Rainmeter skin.
App that sends webhooks:
Rainmeter skin updates in real time:
Features
- Fully headless, with optional system tray icon
- Uses a JSON config to allow multiple command sets, each triggered by different webhook parameters
- Optional debug mode with console output
- Executables signed with an EV code signing certificate (no Windows “untrusted software” warnings)
- Minimal resource usage (about ~10 MB RAM)
Minimal resource usage
How to Download
Visit the GitHub Releases page and find the latest release. Under “Assets,” download the .exe file.
Detailed Usage Tutorial
I have a Wiki article here on GitHub with a detailed walkthrough.
Basic Usage
1. Place the .exe where you like, possibly alongside your Rainmeter skins.
2. Run it once to create a JSON config file (with example commands) in the same directory.
3. Set up your external service to send webhooks to http://127.0.0.1:9999/rainmeter (by default) or your chosen port/path.
4. Edit the JSON config:
- Under WebhookSettings: Adjust Port and URL_Path if you change where the webhook is sent.
- Under RainmeterSettings: Set the path to your Rainmeter.exe file. (Remember to escape backslashes with double slashes.)
- Under Commands: Define your command sets. Each corresponds to a different webhook parameter and Rainmeter bang command.
In the JSON, each entry in Commands defines a trigger and associated Rainmeter command.
Available fields:
- WebhookParameterToUseAsValue: The webhook parameter name used as the value for the Rainmeter command.
- BangCommand: The Rainmeter bang command to run (commonly !SetOption or !SetVariable).
- MeasureName: If using !SetOption, this is the measure to update.
- OptionName: If using !SetOption, the option in the measure to set.
- SkinConfigName: The Rainmeter skin config name to apply the change to.
See the Rainmeter documentation here under the section "Option and Variable bangs" for specifics about the bang commands.
I also have an actual configuration example you can see here in the GitHub readme
System Tray Options
If enabled, the tray icon appears and provides quick options from a right-click menu, but no other GUI elements.
Command Line Arguments
- /debug: Displays a console window with logging output and enables debug file logs.
- /template: Forces creation of a new template JSON file (existing one is not overwritten, new one renamed).
Other JSON Config Options
- DebugMode: Enables detailed logging of incoming webhook requests and general debug info.
- Delay_Between_Multiple_Commands_ms: If multiple parameters trigger commands from a single webhook, sets a delay in milliseconds between each command.
- ShowSystemTrayIcon: Enables or disables the tray icon.
Statistics: Posted by ThioJoe — Yesterday, 10:19 pm — Replies 0 — Views 64