Help - Search - Members - Calendar
Full Version: DSExposer
Desktop Sidebar Forums > Customizations > Panel Announcements
Pages: 1, 2
eitaneko
DSExposer - Expose clone for Desktop Sidebar
This is only an Alpha release, and not a finished product!

Alpha:
3 options: All windows, Same Process, Hide All Windows
All Windows - shows all windows on the screen (except minimized windows, for now)
Same Process - shows all windows of the same process as the topmost process.
Hide Windows - moves all windows offscreen for you to see the desktop.

*These use Win32 API calls to work, so I don't know how guaranteed they are to work on every machine. They work fine on my XP SP2 computer.


NOTES (IMPORTANT):
- This has high memory usage. I have attempted to clean up all unused items and have them collected out of memory, but for every window on the screen, a bitmap is stored in memory, so the more windows you have open, the more memory used.

- This program gets faster via a cache. It initially paints all windows into memory on the first use. Then it keeps those images in memory, till when you select an options, it can't find the window anymore and then the image is released. Since it holds all the data in memory, it isn't constantly drawing, unlike other Expose clones. It is very quick after it learns what is open, EXCEPT, it only repaints the top window to update it each time. The title's are updated, the images are not. A lowercase 'i' appears next to every title to indicate the image is "invalid".

- This panel doesn't use the algorithm used by Apple to "animate" window movements. I have a way to do the animation as soon as I figure out a good way to do figure out where to put each window. Right now, they just line up on the screen as the same size. This will most likely change when I have a chance to fix it.

- Finally, when clicking All Windows or Same Process, a form is shown with pictureboxes representing the window images. If for some reason you find a bug where you get an open window, but you can't click anything, just select the background of the form, and hit Alt-F4 to close the window.


Please let me know if you find any bugs or have any suggestions.
yyy
Wow - great panel laugh.gif fun_08.gif cool.gif Always wanted such panel biggrin.gif But why using a form with picutreboxes? Can you pleaqse do the same on the sidebar itself? What I realy wanted to do (but finally decided to do other panels) is a panel which shows all open windows on DS - it's so useful. I'll be really happy if you do it that way.

I also like the hide windows idea, but it doesn't seem to work - I click it and I still see the window which is currently opened huh.gif

But that's a good idea - thanks smile.gif

About the resources problem - I would do this:
Capture all windows and transfer them into small images thumbnails - if you decided to put them on the sidebar you'll also be able to use smaller images which takes less resources. You really don't need to keep the large images on memory.
Prism
Great idea, but it's so slow.
I might have misunderstood the hide windows function, but it doesn't hide all the open windows - at least it doesn't hide my Maxthon browser window.

But after all, it's a great idea for a panel. I'm sure you'll get to fix most of the problems in your final release.
eitaneko
Thanks for the feedback, yyy.

1) I used the pictureboxes, b/c I was originally interested in cloning Expose functionality. What you suggested was a kind of TaskBar manager, only with screenshots. My fear is, the pictures might be too small, but it's not a terrible option.

2) Hide windows works on my computer. They should slide to the nearest side of the screen that they are closest too. If you click it once, the caption should change to "Show Windows" on the panel. If you click Hide Windows and then open up a new window, you have to unhide the others first, and then hide them again. I'll have to wait and see if others have that problem before I can get enough info to figure out why it's not working.

3) I may be able to use smaller images. I'm looking into other options. I'm trying to make it fast, while not having bad overhead like the other Expose clones I've seen for windows. Unfortunately, my overhead is in memory.

4) I know you didn't mention this, but I assume you'd like to have SkinButtons instead of text links, and perhaps keyboard hotkeys. I'm thining of putting in both. What do you think?
eitaneko
QUOTE(Prism @ Jul 1 2005, 08:58 AM)
Great idea, but it's so slow.
I might have misunderstood the hide windows function, but it doesn't hide all the open windows - at least it doesn't hide my Maxthon browser window.

But after all, it's a great idea for a panel. I'm sure you'll get to fix most of the problems in your final release.
*




I know it isn't as fast as anything. The more windows you have, the slower it is at first. But the longer you leave windows open, it should be fast to show you the windows after the first few times. Without overhead, I'm stuck doing my processing when you click something. It should hide Maxthon. I use Maxthon some of the time as well and it definitely moves away on my computer. The more windows you have on the desktop, the slower the hide task will be as it animates the moving. I could just move them and have them appear offscreen, but they won't animate sliding....The API's aren't designed for what I'm using them for.
yyy
I still think that you should add an option to show the images on DS. I don't think they'll be too small - it's enough for me. And if you are concerned about memory - smaller images is what you need.

Now the Show/Hide windows works - it's cool. But for some reason it didn't work before.

Yes - you might want to use a "toolbar" instead of the text links. Like in the File Browser does - use Skin Buttons on the top. Hotkeys is another good idea fun_08.gif
eitaneko
I might make it an option. I'm looking into it all. Just haven't had time to make progress yet. It's funny, I use a mac all day at work, and I have Expose there, and it just is so fast. I'm lost without it at home now.
yyy
It's fast enough for me. I opened more than 10 windows and it works in about 1-2 seconds. But I've just bought a new computer this year so it's quite fast.
KeithI
Great work eitaneko fun_08.gif fun_08.gif.

It is reasonably fast on my system - certainly fast enough to use.

I think yyy's idea of thumbnails in the DS panel is good - but I would prefer that as an option.

Hide Window doesn't work for me either.

The more major problems I had were:
- it didn't show all windows, and "Same Process" doesn't show all instances. I had 3 VS.NET instances open but it only showed 2.

- I have lots of windows open maximised and DS set to auto-hide. I hovered over DS and clicked on "All Windows". All of the maximised windows had DS over the top of them.

Keep up the good work biggrin.gif.
eitaneko
I'm using the old Win32 APIs to enumerate the windows. As found in the taskbar panels, it is difficult to figure out which styles a programmer has set for his window to be shown. Additionally, there are even ppl who have windows of size 0,0 which is kind of annoying. Also, I have DS docked on the rigth with autohide off. I didn't even test it with autohide on. What is the z-order of your DS, Kieth? I will look into these bugs when I get home from work.

BTW, my computer is about 3 years old, and it is relatively fast ( a little choppy), so I'm hoping other people will have a little more success. I don't know why the Hide Windows doesn't work for some. Keep at it KiethI, it was fixed for yyy. It might be my imagination, but there might have been an issue with how that worked. I will look into it.

Tip: If you want to free some memory of the images, minimize the window and hit the function again. If it doesn't see a visible window, it clears that bitmap from the list.
yyy
It seems to always work when the windows aren't maximized. But the maximized windows doesn't always hide. I removed the panel and add it again and now it doesn't work again. Maybe you should restore windows which are maximized and then hide them.

BTW, I've tried it now and it hides even the MSN Messenger alert window laugh.gif Nice.
eitaneko
It hides everything. All it does is move the windows, so if it was on the screen, it is moved off. However, if it disappers while it is hidden, it disappers offscreen. Maximized was hard. If I restore them, it will take longer b/c it is slow to repaint. I don't have trouble with maximized apps. Which ones are you having trouble with?
yyy
All windows which are maximized don't hide. It worked for a few minutes after I installed the panel, but then I removed it and add it again so now it doesn't work. I huess I have to play with it a little in order to get it to work fine.
eitaneko
You might have to click All Windows or Same Process first to get it to work. I'm not sure. I haven't reviewed that part of the code in a while, so I don't remember off the top of my head what the problem could be. See if that helps you. Also, open some random apps, and see if they are displayed properly in the dialog. I found AdAware gave me some problems. Let me know.

KiethI, all the VS instances have the same process name correct?
yyy
Doesn't work even if I click All Windows or Same Process. Maybe you should do it without animation, the way it's done if you click Win key + D.
eitaneko
It should work regardless. You said that it worked for a short time, so it must be a bug. I can put properties into this panel, so you can turn off the animation.
yyy
I like the animation - that's not the problem. I thought that since moving the windows doesn't always work, you might want to do it another way. But nevermind.
eitaneko
Hmm. I dunno if it's the moving algorithm, or just a problem with the code. I'll have to get back to you on that. It works for me every time, though.
KeithI
QUOTE(eitaneko @ Jul 1 2005, 03:58 PM)
KiethI, all the VS instances have the same process name correct?
*


Yes - each with a different title of course.

It definitely isn't enumerating the windows correctly. Even with 3 windows open (all different) it failed to show 1 (Windows Explorer).

Also, with 2 Maxthon's open it only found 1.
eitaneko
I must have changed something. I've been testing it with Windows Explorer. Actually...I might have used WinXP PowerToys to make all my Explorer windows run in a seperate process. I wonder if that is why I didn't think there was a problem.
GoMa
First of all, great job! If it would be polished a bit more I'd love to use it. Execution speed is not that bad on my not so good machine. fun_08.gif

All Windows does not show minimized windows. Is that intentional?
I'm having problems with Hide Windows too - windows are flashing, kind of animating out of the screen but still staying where they are. This is with maximized windows. It works fine with restored windows, except that the edges of the hidden windows (the borders) are still visible. Again, is this intentional?
eitaneko
Yeah, the panel doesn't work on any window that is minimized. It's how it works on an Apple. And yes, the borders of the windows always show so that you remember that they are hidden. I'm almost positive I made it so if you try to close DS while the windows are off screen, they move back as well.

What do you mean windows flash and animate, but stay where they are?
yyy
They just flash while some others moves out of the screen. But not all are hidden.
GoMa
QUOTE
What do you mean windows flash and animate, but stay where they are?

They animate out of the screen but in a split second return to where they were. You want a video?
Prism
QUOTE(eitaneko @ Jul 1 2005, 09:32 PM)
I'm almost positive I made it so if you try to close DS while the windows are off screen, they move back as well.
*


Not in my computer.
eitaneko
So for yyy, some move but not all, and for goma, they start to move but snap back into place? You don't double click on the panel do you?
eitaneko
Wow. I thought I had it. Probably why ppl don't use Win32 APIs anymore. I'll look into all of this when I get home. I'm sorry if it causes anyone problems. It works nicely on my machine. I will look into it. Thank you for testing. Let me know if you can find a correlation as to what things work and what doesnt.
GoMa
QUOTE
goma, they start to move but snap back into place? You don't double click on the panel do you?

Exactly. I'm having trouble capturing it in video (apparently it's too fast for the Camtasia trial I'm using...).
Oh and another bug - a window's title is actually "WmiWatcher - Microsoft Visual C# .NET [run] - WmiViews\ListView.cs*" however the panel displays it as "ListView.cs*" in the All Windows view.
yyy
Use Avi Screen then. It's a freeware and allows you to set the number of frames per minute wink.gif
eitaneko
GoMa, are you double clicking? I didn't think you were, but I don't think you can. Also, yeah, I added a feature that it only shows the filename if it looks like a directory. I can shut that off if you want. I only did it b/c on a Mac, it only shows the dir name instead of the full path.
KeithI
QUOTE
Yeah, the panel doesn't work on any window that is minimized
Ahhh...I hadn't realised that. That's almost certainly what my problem is.

For me it would be much better if it worked with all windows.
eitaneko
I can make it an option. I should note that for now, but yeah, I was trying to mimic Apple, so if an app is minimized to the dock, it isn't included in any Expose function. I can do that for minimized windows if you want to wait a few miliseconds for it to be restored and drawn at least the first time. Maybe I'll do it so it will minimize it back when you don't select it.
GoMa
Yeah I'd like it to work for minimized windows too. The windows workflow is a bit different than that of the Mac in this area, I think.
I'm not double clicking the panel. The proof for it is that I see the Hide Windows change to Show Windows.
yyy - thanks for the link. Might help me in another thing. However it doesn't capture the flickering as well, even in 20 fps (!), which should be well over what's needed because the length of the "effect" is a second more or less.
eitaneko - do you think the thumbnails could be scaled as opposed to resized to a fixed size (i.e. leaving the width:height aspect ratio of the original window) - it shouldn't be too hard I think.
And yeah, please (add an option to) shut off the directory stripping feature.
eitaneko
Yeah. This was just an alpha for the functionality. There are a bunch of featrues I want to add. I'm going to do the scaling when I figure out an algorithm to make them all fit on the screen. In regard to the stripping of the directory feature, what do you think about only doing it if the process name is "explorer.exe"? I will include minimized windows in the "All" and "Same" commands, but not "Hide". Most of you are OK with the images not being up to date, but the titles being up to date and the topmost window getting updated?
GoMa
QUOTE
In regard to the stripping of the directory feature, what do you think about only doing it if the process name is "explorer.exe"?

Seems ok to me.
QUOTE
Most of you are OK with the images not being up to date, but the titles being up to date and the topmost window getting updated?

I think that's fine. Unless you could find a speedy alternative of course. tongue.gif
eitaneko
Well the other clones use a hook to update the image of a window so it has a certain overhead, which I wanted to avoid. If you don't mind the wait, I can have them update every time, but that is your call. Also, it's unfortunate, but the paint message is handled slowly so I have to pause my program or the image stuff gets messed up. You can see it for yourself if you try to run a command while a large slow window gets updated.
eitaneko
OK. This is going to be long. Please bear with me:
I must have made changes to the code that I gave to you. I think I'm using a different DLL than you all.

QUOTE
I have lots of windows open maximised and DS set to auto-hide. I hovered over DS and clicked on "All Windows". All of the maximised windows had DS over the top of them.

* I know what the problem is, but I'm not sure how to fix it. The panel draws the window based on its reported height and width. Since it is reporting full screen, it is drawing full screen, even if DS is on top of it. That is why you see DS in all the images. It is b/c it can only show what is on top of the windows device context. I don't know if the DS API lets me make DS hide from under your cursor. Anyone know what I can do about it? Maybe only draw up to the width of DS? Suggestions?

QUOTE
I also like the hide windows idea, but it doesn't seem to work - I click it and I still see the window which is currently opened

Upon looking at the code, it seems that I was in the middle of fixing the Hide/Show feature, and never finished. I apologize about that. I'm going to get back into the development of this, so I will always be testing the latest build.

* I just built it and tested it, and the Show/Hide stuff works. I will take it off the bug list when everyone who had these problems has confirmed they now work.

QUOTE
it didn't show all windows, and "Same Process" doesn't show all instances. I had 3 VS.NET instances open but it only showed 2.

QUOTE
Also, with 2 Maxthon's open it only found 1.

Was this answered by:
QUOTE
Ahhh...I hadn't realised that. That's almost certainly what my problem is.

i.e. - was the reason the one instance of VS (and Maxthon) b/c they were minimized??
* I will add an option to include minimized windows in execution.

QUOTE
Oh and another bug - a window's title is actually "WmiWatcher - Microsoft Visual C# .NET [run] - WmiViews\ListView.cs*" however the panel displays it as "ListView.cs*" in the All Windows view.

* Easily fixable. I will make this an option too, or I can limit it to explorer.exe
eitaneko
I put out Alpha 2. I went through to see if I can fix the Show/Hide bug. For those of you who had problems, can you see if they are fixed. Also, if it worked for you, can you please see that it still works.
yyy
Same problems like before, even with alpha 2 sad.gif
eitaneko
Uch. Hmm...Is is only certain apps, or all? Still no maximized windows moving?
yyy
I've tried only with explorer and IE windows. I don't think it's the type of windows but something in the code. If you don't find what's wrong try to hide them another way.
GoMa
Same as yyy, maximized windows not hidden at all.
DSExposer.dll reports version 4.0.0.0 (description - "DSExposer v1.0").
FYI the Skype window, even if it's restored , is only moved to the edge of the screen (so all of it is visible) and is not hidden completely. I think this is done by the Skype developers to prevent the user from hiding the window and you can't do anything to solve it (except hiding the window completely).
eitaneko
I'm confused. All windows don't work, or just maximized ones??
yyy
Only maximized in my case.
eitaneko
yyy, what are your DS display settings?
yyy
Display settings? huh.gif What display settings?
eitaneko
Sorry. Auto-hide (on or off), Z-order, docked position etc.
yyy
Oh, Ok - I didn't understand before rolleyes.gif
Auto-hide: off
Z-order: Always on top
Dock: to the right side of the screen

Anything more?
eitaneko
Nope. That is exactly how I have my DS set up. Trying to see what might be different on your computer. My windows that are maximized all move....
GoMa
Again, same problem and displa settings as yyy. WinXP SP2 (themed with patched uxtheme.dll). DS build 92.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.