Welp, 1.0.3 was a total fubar. Loaded it at work and it hung straight away. Fixed the hanging issue, put more diagnostics. Hopefully I’ll get closer and closer to making it work just right.
So I’ve updated yet another version of the PersistentWindows app, but this update is literally nothing but better logging, so that I can figure out what’s going on in various instances. I would love the logging output to help isolate the root cause and then I could move on to the convenience features.
Also, I’ve publish the code on CodePlex if anyone would like to contribute or are just generally interested.
I would love to make a video on this, but man it’s hard being a Dad, a Husband and a workaholic. I’ve missed this month, but maybe during my Thanksgiving break I can squeeze out a random coding video.
Made a few changes that you can find in the release notes. What’s pretty awesome is that I posted this app as a solution in StackExchange’s Super user and it was well received by the OP. Enough, in fact where not only did he mark it as a solution, he also wanted to contribute in resolving the other edge case issues. So I’ll eventually plop on CodePlex and hopefully solve one of the world’s tiny problems 🙂
So I’ve been using the utility at work and it sometimes works and sometimes doesn’t. I’ve noticed a few issues
- Occasional race conditions occur when the monitor changes so I’ve improve the logic on resolution detection.
- I’ve also modified the little GUI to provide a bit more informative feedback.
- Improved the handler on maximized windows
Finally, I’ve also noticed that sometimes it doesn’t move a few windows and I was spinning the wheel a while to figure out why. Turns out those processes were running in admin, so if you want those restored, you have to run the utility as admin as well.
Slowly and surely, I’ll continue to improve the product.
Good night world!
It is lean and nasty…. but it does the job. I’ve already got a few ideas to make it more convenient, but Diablo 3 calls my name.
Check it out @ http://www.ninjacrab.com/persistent-windows/
So, I’m having an issue at work with my display setup. I have three monitors connected to my workstation, two via DisplayPort and one via DVI. Every time the monitors go to sleep it does the following:
- Windows gets a signal that the monitor has been disconnected
- Windows then re-arranges the windows that I had on the display port monitors to a desktop that it considers active(The DVI monitor)
When the monitor wakes up, I have to re-arrange my windows back to where I want them and this is an incredibly annoying task, especially as I take numerous coffee and bio breaks daily.
This is not special to any graphics card and there are numerous posts on this issue. This is the behavior of display port as it’s supposed to be “Plug and Play”. if I pull out the cable, that makes sense. However, powering off shouldn’t exhibit the same behavior as unplugging. Nvidia has a solution implemented in their drivers, that basically stores the monitor information and brute forces the state of the screen. However, I’ve got an AMD card on my workstation and it currently has no solutions.
So what’s my solution? I’m going to write one for a Random Coding project. I’ll have it freely available to download and will have a little bit of a video on the usage of it. While it may be interesting recording writing it from scratch and the dev journal, my schedule is insanely fragmented these days with two little boys and it would be hard to record as most of the days I’ll work on the project, lighting and my voice has to be low to let those guys sleep.
So MVP specs to get something out the door. Begin by building a polling implementation application that’s manually started with a window. Later we’ll try to find the right windows events, make it event driven and modify it to be a task tray application.
- Create a hash of the desktop display metrics as the key and a list of the window display metrics as a value
- Poll Number of monitors and screen resolutions and store as desktop display metrics
- Every second scan all windows and store window display metrics
- If the desktop display metrics change, check if the desktop hash key exists
- If it exists restore window positions.
- If it doesn’t store new positions of all windows