Wallpaper Engine

Wallpaper Engine

View Stats:
Cariboudjan Oct 28, 2019 @ 8:57pm
[Suggestion] Automatically save JPEG screenshot of current wallpaper to application directory
Other applications such as Rainmeter utilize plugins to pull color information from the desktop wallpaper, for example, setting a black background with yellow text for a macro photo of a bumblebee. As you know, wallpaper engine doesn't replace the desktop wallpaper image. Instead it overlays it. The Windows wallpaper does not change, and therefor applications will continue to gather black and yellow color information as if nothing has changed, meanwhile Wallpaper Engine is displaying an animated green tree with a blue background.

Here is a compilation of images on imgur demonstrating the difference this would make:

Link: https://imgur.com/a/F43qJOd

Original, without Wallpaper Engine, using Windows Background
After, with Wallpaper Engine, using still-frame jpeg for color reference
Before, with Wallpaper Engine, without color reference

If Wallpaper Engine saved a still jpeg screencap to a defined directory with a consistent filename of the first frame of the any newly loaded wallpaper, it would allow other applications to use this jpeg to easily pull any necessary color information to match Wallpaper Engine.

Currently Windows desktop images are saved to %USERPROFILE%\AppData\Local\Microsoft\Windows\Themes\RoamedThemeFiles\DesktopBackground. I would love it if Wallpaper Engine similarly placed a jpeg image in its own directory for this purpose!

As you know, Wallpaper Engine is popular among Rainmeter users, with a large percentage of its user base using the program. See: https://www.reddit.com/r/Rainmeter/
Last edited by Cariboudjan; Oct 28, 2019 @ 9:56pm
< >
Showing 1-14 of 14 comments
Socks the Fox Oct 28, 2019 @ 9:22pm 
The way most media player Rainmeter skins do it is by using the media player's API to get the currently playing track's album art. All WPE really needs is a way for a Rainmeter plugin to ask "hey, I need a preview of what you currently have." Some basic on-demand API call should be good enough, as the Rainmeter plugins get update calls periodically from Rainmeter, depending on the skin's settings.
Cariboudjan Oct 29, 2019 @ 12:14am 
The plugins can use any specified file path as a reference for color schemes. Any jpeg will do. Some plugins are designed for use with desktop images or album art in mind, but all also have the capability to pull data from any image on the PC, regardless of what it is or where it came from, so long as it's in a format it can understand.
Biohazard  [developer] Oct 29, 2019 @ 8:51am 
The issue is that I can't reliably read the image of web or application wallpapers to produce a static image and for video wallpapers it often might not make sense to use the first frame either.

Then there is also the problem that some users will enable this and lose their static desktop wallpaper, because they never made a copy or didn't keep the original. Making a backup isn't a definitive solution either because it just moves the issue elsewhere. This is already a huge deal with the built-in accent color changing although it shows an 'unmistakable' warning the first time.
Cariboudjan Oct 30, 2019 @ 9:52am 
@Biohazard

Thanks for responding. I don't think that WPE should at all change the Windows desktop image. The desktop wallpaper shouldn't be changed, only create a separate jpeg screenshot of the first frame and save it to the WPE directory. I definitely wouldn't suggest WPE change the Windows desktop wallpaper for the same reasons you mentioned.

What about the preview image when browsing skins? Even if the image is low-res, it contains color information. If whatever wallpaper is selected has its preview image saved to the WPE directory, that image would be enough to gather data from. Say, save the tiny thumbnail preview to the WPE directory as PreviewImage0.jpeg

If it's difficult to get a screenshot, would it be possible for WPE to write an INI file each time a new animated wallpaper is set, that takes color accent information and sets them as variables for other programs, such as Rainmeter, to read?

For example, auto-generate an INI that has a few variables in decimal such as:

;Accent Color Info [Variables] WPE.Background1=66,144,3 WPE.Foreground1=206,163,105 WPE.Background2=237,196,85 WPE.Foreground2=240,39,28 WPE.Light1=83,33,120 WPE.Light2=238,252,219 WPE.Light3=61,90,39 WPE.Light4=87,35,24 WPE.Dark1=17,173,218 WPE.Dark2=117,36,108 WPE.Dark3=66,222,251 WPE.Dark4=21,93,77 WPE.Average=238,252,219 WPE.Luminance=117,36,108

Rainmeter would be able to read the INI and use color info that way.
Last edited by Cariboudjan; Oct 30, 2019 @ 10:08am
Biohazard  [developer] Oct 30, 2019 @ 10:20am 
The issue is that I cannot read the actual image output of those types of wallpapers as they are set on the desktop.

The accent color that Wallpaper Engine sets in Windows partly requires users to pick a good one while uploading it to Workshop, it's not automated for all wallpapers for the same reason. That color could be read by Rainmeter though, perhaps that's at least better than nothing?
Cariboudjan Oct 30, 2019 @ 10:26am 
@Biohazard

Forgive me. I don't know exactly how the code you've written works, but what about the thumbnail image? Is it a jpeg/png/etc? Rainmeter wouldn't need a full image. Even the small thumbnails would do. If they are still images set by the wallpaper author, would it be possible to, when the user selects an image, to save its thumbnail to the WPE directory? That way, whichever wallpaper is currently being used, Rainmeter can point to that specific image as a reference for color data.
Biohazard  [developer] Oct 30, 2019 @ 10:45am 
That would work, yes, I haven't considered the preview image.

My preferable way would be using the plugin system to get the current wallpaper and reading the existing preview image from its path. The plugin system isn't finalized yet though and I have no ETA, but it's currently being used to drive Corsair's RGBs devices already.

It would be possible to read the config file though and get to the preview image that way.
Last edited by Biohazard; Oct 30, 2019 @ 10:46am
Cariboudjan Oct 30, 2019 @ 5:10pm 
Can we make this happen?
Biohazard  [developer] Nov 1, 2019 @ 4:59pm 
The next update will get support for some command line arguments to control the program while it's running and I think I could also add some query commands.

The way that this would work is that you specify a window handle which will receive the response via WM_COPYDATA. So one of them could return the current wallpapers in JSON format from which you could get the path to the project and preview files to read.
Cariboudjan Nov 2, 2019 @ 9:57am 
That would be helpful. Thank you. Command lines would make it very easy to interface with WPE and get data for other apps. What are some of the command line options you're currently working on?
Last edited by Cariboudjan; Nov 2, 2019 @ 9:58am
Biohazard  [developer] Nov 2, 2019 @ 10:13am 
This is what I currently have:
- pause
- stop
- play
- mute
- unmute
- openwallpaper (path, monitor or playinwindow, dimensions, apply preset)
- closewallpaper (monitor or window or all)

What I still want to do at least:
- apply partial settings from a json object dynamically
- play next wallpaper from playlist for specific monitor or all monitors


Then I could also build query parameters like:
- is paused/stopped etc
- get list of known monitors/open playinwindow instances
- get wallpaper path for specific monitor/window (edit: or perhaps get the whole project info which would make it simpler to access the preview file too)
- get all opened wallpapers

The query parameters would all work via a response over WM_COPYDATA to whatever window gets specified when calling them.
Last edited by Biohazard; Nov 2, 2019 @ 3:49pm
shifterest Mar 3, 2022 @ 6:57pm 
any updates to this?
Biohazard  [developer] Mar 3, 2022 @ 7:08pm 
Yes, you can enable "override wallpaper image" in the general settings for this.
Cariboudjan Nov 23, 2022 @ 6:00pm 
Thanks Biohazard. I've implemented this into my program and it works great with the Override settings enabled.

I did notice that when changing wallpaper using the Next Wallpaper function in a playlist, the WallpaperEngineOverride.jpg image does not update in %APPDATA%\Microsoft\Windows\Themes\. Is this a known issue?

Toggling Override Wallpaper Image on/off fixes the issue temporarily.
Last edited by Cariboudjan; Nov 23, 2022 @ 6:07pm
< >
Showing 1-14 of 14 comments
Per page: 1530 50

Date Posted: Oct 28, 2019 @ 8:57pm
Posts: 14