While I agree with your stance since I also need to "manually" refresh all skins to restore my desktop work area settings, this behavior has a reason. Refreshing all skins can be a resource intensive operation given that all skin folders are re-read from the disk in that moment.I have a two monitor setup, with Rainmeter skins placed on my secondary monitor on the left. When I disable secondary monitor, all skins from it move to the main monitor (which is expected behavior).
However, when I enable secondary monitor again, skins stay on the main monitor until I click "Refresh all skins" from the Rainmeter's tray icon context menu. It would be much more intuitive if they all automatically refreshed whenever new monitor is added or removed (I do it by changing the share screen mode with Win+P shortcut).
That being said, when changes in the screen properties occur, some messages are written and displayed in the About > Log tab, so one way of dealing with this and automatically refresh all skins would be to enable writing the log to a file, use a WebParser measure to parse that log file from the skin, then, when such a message occurs as the last line in the log, execute a !RefreshApp bang to refresh all skins:
https://docs.rainmeter.net/manual/bangs/#RefreshApp
There are a couple of issues with the above approach though:
- writing the log to a file is required, which is a bit expensive
- periodically reading the file say each second is expensive too
- those log messages are generic and not that detailed
- those log messages can occur multiple times for the same change
- again, refreshing all skins is expensive, but the changes can occur quickly
Statistics: Posted by Yincognito — 16 minutes ago