Hi.
WallpaperSSPro has worked brilliantly for me, for many years across various versions of Windows 10 and Windows 11, with one primary and one secondary monitor. I have a fixed wallpaper on my primary and a slideshow on the secondary.
But I recently exchanged my secondary monitor for a different type, and now every few resumes from sleep -- about once a week -- the Monitor IDs in WallpaperSS Pro get swapped around so the primary becomes the slideshow and the secondary becomes fixed.
My first thought was that this must be down to slight timing variations in the order in which the monitors come out of their own sleep mode (or possibly the order in which they go to sleep) but there seems to be no way to adjust this. But then I tried putting the secondary monitor on one of those automatic power strips controlled by the PC's power draw, so it's always the second one to power up, but WallpaperSSPro's Monitor IDs still randomly swap over occasionally.
Windows' own IDs have never changed.
I can go into WallpaperSSPro's Filter settings and swap the monitors around, but obviously this is annoying and takes many mouse clicks. I have exported two copies of the settings, one with the filters set one way and one with them set the other, and it is slightly faster to re-import these but still annoying.
I thought I could be clever by using the command line to copy these exported settings over the .wgs file stored in %appdata%/wallpapersspro/wallpapersspro.wgs but this requires a manual Exit and restart of WallpaperSSPro before the replaced settings are actually loaded.
Before I go to the trouble of writing a script to kill and re-start the WallpaperSSPro process, are there any command-line switches or similar that I might have missed? Something to automatically import exported settings, or to re-read the default .wgs file?
On a broader note, does anyone know why WallpaperSSPro might be getting its Monitor IDs mixed up occasionally like this? I would have assume it just read them from the Registry or another system location, but Windows itself never swaps them around.
Currently running Windows 11 24H2.
Thanks.
Monitor IDs randomly swap - workaround is clunky
Re: Monitor IDs randomly swap - workaround is clunky
Hello,
Wallpaper Slideshow uses EnumDisplayMonitors to enumerate monitors, the order displayed by WallpaperSS is the order returned by that function. Unfortunately I have no idea why Windows changes that order.
If the monitor is physically powered off (I mean there is switch that turns off power) maybe that is the reason, if the monitor is in sleep mode windows should not change the order.
I am thinking about to use monitor name to associate filter settings but at the moment I can't say when I will be able to implement this feature.
I'm still not sure how to implement this, what happens when a monitor is no longer found or when a new monitor is found.
As for command line parameters, unfortunately there are no useful ones.
The best thing is to close WallpaperSS, rename the wgs file and restart it.
Wallpaper Slideshow uses EnumDisplayMonitors to enumerate monitors, the order displayed by WallpaperSS is the order returned by that function. Unfortunately I have no idea why Windows changes that order.
If the monitor is physically powered off (I mean there is switch that turns off power) maybe that is the reason, if the monitor is in sleep mode windows should not change the order.
I am thinking about to use monitor name to associate filter settings but at the moment I can't say when I will be able to implement this feature.
I'm still not sure how to implement this, what happens when a monitor is no longer found or when a new monitor is found.
As for command line parameters, unfortunately there are no useful ones.
The best thing is to close WallpaperSS, rename the wgs file and restart it.
Gianpaolo Bottin
gPhotoShow.com
gPhotoShow.com
Re: Monitor IDs randomly swap - workaround is clunky
Thanks for the detailed response.
I didn't realise it was enumerating using a Windows function. It makes it even more bizarre that Windows itself never swaps the IDs on the multiple display selection screen even when they swap in WallpaperSSPro. It's as though Windows isn't using its own function, or is compensating in ways that third-party programs can't.
In fact sometimes I wish I could get Windows to swap them because Windows insists on calling my main display #2 and my secondary display #1 even though the UEFI/BIOS has the main as #1. The only way I can get them to align is to swap cables around on the GPU, but then the secondary monitor has boot priority and gets used for UEFI changes and the Bitlocker screen and it just looks odd.
For now I've gone ahead and written a batch file to toggle between two saved .wgs files, copying each over the main .wgs as required then using TaskKill and Start to stop and restart WallpaperSSPro. The script is assigned to a DOpus button, so if the system wakes in the wrong state I can correct everything with one click.
Of course Windows being Windows even this wasn't straightforward, and I've had to use a run-on-demand scheduled task to bypass the UAC prompt and a loop to check that TaskKill has completed before trying to start the fresh copy of WallpaperSSPro.
To be honest I still enjoy constructing these sorts of kludges. I just wanted to check beforehand that I wasn't missing an obvious command line switch or similar.
Thanks again for a great program!
I didn't realise it was enumerating using a Windows function. It makes it even more bizarre that Windows itself never swaps the IDs on the multiple display selection screen even when they swap in WallpaperSSPro. It's as though Windows isn't using its own function, or is compensating in ways that third-party programs can't.
In fact sometimes I wish I could get Windows to swap them because Windows insists on calling my main display #2 and my secondary display #1 even though the UEFI/BIOS has the main as #1. The only way I can get them to align is to swap cables around on the GPU, but then the secondary monitor has boot priority and gets used for UEFI changes and the Bitlocker screen and it just looks odd.
For now I've gone ahead and written a batch file to toggle between two saved .wgs files, copying each over the main .wgs as required then using TaskKill and Start to stop and restart WallpaperSSPro. The script is assigned to a DOpus button, so if the system wakes in the wrong state I can correct everything with one click.
Of course Windows being Windows even this wasn't straightforward, and I've had to use a run-on-demand scheduled task to bypass the UAC prompt and a loop to check that TaskKill has completed before trying to start the fresh copy of WallpaperSSPro.
To be honest I still enjoy constructing these sorts of kludges. I just wanted to check beforehand that I wasn't missing an obvious command line switch or similar.
Thanks again for a great program!
Re: Monitor IDs randomly swap - workaround is clunky
In the end I thought that it is not really the name of the monitor that is important but its position, so I tried to sort the monitors by position, from top to bottom and from left to right (primary monitor always 1).
Try this version, enable sorting in the filters page. Then close the settings, from that point on you will find the filters always in the same order, 1 the primary, then the secondaries starting from the left.
https://www.gphotoshow.com/files/wpsprosetup64_550.exe
Try this version, enable sorting in the filters page. Then close the settings, from that point on you will find the filters always in the same order, 1 the primary, then the secondaries starting from the left.
https://www.gphotoshow.com/files/wpsprosetup64_550.exe
Gianpaolo Bottin
gPhotoShow.com
gPhotoShow.com
Re: Monitor IDs randomly swap - workaround is clunky
Apologies for not seeing this reply sooner. Not the first time that's happened. I'm not sure whether I was forgetting to check the "notify on reply" box or if the notifications are being filtered into my spam folders. I'll have to keep an eye on that.
Obviously I missed the chance to download the custom version but I noticed that feature is now in the latest release so I've set everything up appropriately. Hopefully this will solve the problem without the need to run my "swapmonitors.bat" script every couple of days.
Thanks!
Obviously I missed the chance to download the custom version but I noticed that feature is now in the latest release so I've set everything up appropriately. Hopefully this will solve the problem without the need to run my "swapmonitors.bat" script every couple of days.
Thanks!