SDK Download -vs- RainMeter Included header

Plugin development, plugin requests, support for third party plugins, ...
Thell
Posts: 2
Joined: 01.12.2010 17:44:31

SDK Download -vs- RainMeter Included header

Postby Thell » 01.12.2010 18:46:30

Hello!

I downloaded the SDK yesterday to try out an idea for a plugin and didn't see a message or notification that I think should be in there based on what the API documentation and what is in the RainMeter SVN trunk constants.h. The RainMeter included headers has:

Code: Select all

#define DEX_DESKTOPCONTENTCHANGED      (WM_HOOXPOTRUFT + 111)
#define DEX_DESKTOPCONFIGURATIONCHANGED   (WM_HOOXPOTRUFT + 112)
#define DEX_DEXPOTSETTINGSCHANGED      (WM_HOOXPOTRUFT + 113)


and the API documentation shows both of the following (without any details):

Code: Select all

GetNumberOfWindowsOnDesktop(INT32)   Returns the number of windows managed by Dexpot on a particular desktop.
GetWindowsOnDesktop(INT32, HWND*, UINT32)   Retrieves the handles of all windows managed by Dexpot on a particular desktop.


I do not see an implementation of those in the SDK download, so I am wondering the following:

  1. Is the download of the SDK from the pinned link in this forum really the most up to date?
  2. Is there a public repository for the SDK available (perhaps Git)?
  3. Could someone take a few minutes and either post the implementation of these notifications/messages here or to the API documentation page?

My goal is to create a plugin that will work from the Desktop Preview views. Just like a person can see a Live Update (which totally rocks!) in that view, and can press [space] or [middle mouse button] to enlarge that view, I want to make it possible to press [ctrl+space] or [ctrl+middle mouse button] to bring up a 'Pin Preview' menu allowing the live update image to be either pinned to a particular desktop or to all desktops. This would give the ability to monitor Windows on other desktops without altering those windows. Much in the same way that OnTopReplica and other applications currently allow to do this on a single desktop (and with mixed results).

I think a feature like this could add some exciting possibilities to Dexpot.

Sometimes when multitasking I have need to just 'see' that a process is still writing out output, or that no output has been written, while still being able to interact with another app. I can do this if I use a single desktop and OnTopReplica. But I like Dexpot too much! So right now (thank you for the live update 'Desktop Preview'!) I have my dual monitor setup so that the one off to the side is the 'Primary' and have the 'Desktop Preview' up when I need to monitor windows. Like right now! I'm typing this in FF on the display directly in front of me (defined as the secondary display) and am watching a Visual Studio 'Output' pane from Desktop 2 and two KVIRC chat windows from Desktop 3. Unfortunately, I can't read them, and I can't 'zoom' in to read them because 'zoom' doesn't work where the target window is on the second monitor. (But that is beyond the scope of this post.) But,I can easily see when one of those windows requires my attention and a single click opens that Desktop and App.

Now, imagine being able to have a 'pinned' or 'docked' previewer of select windows from different Desktops with the zoom capability.

I'm looking forward to such a feature, and am ready to see if I can make something happen using the SDK.

---
Thell


- Edit:: Change OnTopPreview to OnTopReplica.

Thell
Posts: 2
Joined: 01.12.2010 17:44:31

Re: SDK Download -vs- RainMeter Included header

Postby Thell » 03.12.2010 06:52:04

Just a little more detailing of what (possibly) may need to be done in order to get this working...

First some findings:
  • When Dexpot switches away from a desktop the windows on that desktop seem to be minimized and the window properties altered so they don't appear in the task-bar or switcher. This is a challenge to a live preview since minimized windows do not typically get updated.
  • When the 'Desktop Preview (all desktops)' is activated the non-minimized application windows (top-level) from all desktops are moved to the current desktop so that the live preview image can be updated.

In order to make this feature a reality the windows that are to be previewed will need to be moved off screen instead of minimized. I'm not sure of the internal setup for tracking which windows are visible on each desktop but I imagine that there could easily be an additional check for a 'preview' flag.

I used a couple of utility apps to test out if this idea could work and it does look positive, yet integrating via a plugin using the API or building it into the core seems like the way to go here. And this idea also kind of works for being able to monitor the whole desktop via SevenDex. (ie: start SevenDex and get the handle for one of the SevenDex desktop images, then use that with ontopreplica --windowId; it will update when SevenDex updates, then use the Dexpot Window Catalog to copy that window to all desktops.)

Some refining ideas:
  • The new feature (or plugin) should make available a new menu item in the Dexpot system menu named 'Preview' that should be placed under the 'Copy' menu item. The sub-menu should have the same options as the 'Move' and 'Copy' sub-menus.
  • A 'Pin preview to desktop' should also be added that would make the preview behave as a gadget... Visible with [Win + D] and [Win + Space]. I can do that for the Aero Peek, but actually doing a conversion to a gadget hasn't been tried yet.

User avatar
Patrick
Developer
Posts: 7380
Joined: 04.03.2003 14:51:26

Re: SDK Download -vs- RainMeter Included header

Postby Patrick » 05.12.2010 12:53:52

:dex:

Thell wrote:Is the download of the SDK from the pinned link in this forum really the most up to date?

No, it really was a few versions behind. I've uploaded a new version for Dexpot 1.5.8.

Is there a public repository for the SDK available (perhaps Git)?

Not at the moment. Not a bad idea though.

I used a couple of utility apps to test out if this idea could work and it does look positive, yet integrating via a plugin using the API or building it into the core seems like the way to go here.

I agree, it should be possible to get this working. The feature seems a bit too obscure to me to integrate it into the core, so I'd prefer to have it as a plugin. However, the plugin system is not designed to let plugins interact with other Dexpot modules. You can't easily add new commands to the "Window Catalog" for instance. You would have to come up with some other way to activate the preview thumbnails. Let me know if you're still interested to try... :P

In order to make this feature a reality the windows that are to be previewed will need to be moved off screen instead of minimized.

Indeed. Setting windows to be moved off screen when switching desktops apparently allows you to use OnTopReplica across desktops: viewtopic.php?p=26739
Regarding plugins ans mywechsel.ini: viewtopic.php?f=28&t=2809

And this idea also kind of works for being able to monitor the whole desktop via SevenDex. (ie: start SevenDex and get the handle for one of the SevenDex desktop images, then use that with ontopreplica --windowId; it will update when SevenDex updates, then use the Dexpot Window Catalog to copy that window to all desktops.)

SevenDex only shows static screenshots - you won't get a live preview this way.


Return to “Plugins”

Who is online

Users browsing this forum: No registered users and 1 guest