Z-Systems Logo

Z-Systems

Think Logically

Z-Systems Developer Blog

Stories and information from the developer

Finestra 2 and the Future

23. September 2011 21:24 | by Z-Human Permalink | Comments (0)

Last weekend, I spent quite a bit of time pushing out the new releases of Finestra, 2.0, and 2.1 shortly thereafter. When I first began work on version 2, I was actually planning to make a simple iterative 1.x release. However, after rereading some of the suggestions made during the past couple of months, I decided to make some fairly large changes to the overall architecture.

In a word, plugins. Like many growing software projects, I was finding it harder to add new functionality without breaking the many interdependencies that had grown between older features. The answer was simple, but it took a bit of time to implement. I split the code base into a bunch of discrete components that did not depend on anything other than the main virtual desktop component. I also implemented a simple plugin model that all of the components use and a plugin loader that automatically seeks out new plugin classes that are loaded at runtime. The end result is a model that is easier to maintain, and easy to develop against.

Currently, only plugins internal to the code base are loaded. In the near future, I plan to make plugins more of an open-ended feature, where you will be able to develop plugins that can be downloaded and used by users without having to install a custom version of Finestra. I will be writing more about this once it is done. For now, if you want to implement a plugin, you will have to submit all of the code for the plugin as a patch to the main Finestra project.

Now for some news on features to come (in the form of integrated plugins, of course). First up is the ability to switch desktops when your mouse hits the edge of your screen. This has been a long-standing work in progress, although no one that hasn’t played directly with the code has seen it. I’ve tried a couple of different approaches for telling when the mouse hits the edge of the screen, such as a low-level mouse hook and a polling timer. Neither is really something I want to use, so more work is needed. The problem with using a low-level mouse hook is that it can make your mouse cursor move more slowly since Finestra code gets run every time you move the mouse (for every pixel of movement, and every click, etc.). Polling timers, likewise, are almost a bad idea, and there isn’t really a good way to get the timing right in this case without running the timer fairly quickly. This can drain battery life on laptops, slow down the machine, and more. Hopefully I’ll be able to solve this issue relatively quickly.

Another feature that is on the drawing board for the next feature-oriented release is the ability to persist different desktop icons for each virtual desktop. This has been a highly-requested feature over the years, but it poses a lot of problems, both technical and interaction-wise. For example, when you exit Finestra, should it just display all icons that appeared on all desktops? Should each virtual desktop just hide/show the icons in different arrangements from the original desktop? Or should each desktop start with a completely clean slate? I will be making these decisions fairly soon, so feel free to share your input (especially any technical preferences) on the issue.

Finestra 1.0 and 1.1

9. February 2011 22:53 | by Z-Human Permalink | Comments (0)

In just three short days, Finestra has had two releases. How’s that for a release cycle? First, and years after the original project began, Finestra has reached 1.0. I think this release really lives up to the title of the world’s favorite virtual desktop program for Windows. This release added Windows 7 taskbar support, new graphics, and a ton of performance and usability enhancements. In short, it was a great release, very stable and streamlined.

Of course, as with all big releases, there was a lot of immediate feedback for several small tweaks. For example, while it had been on the to-do list, adding an option to disable taskbar switching on Windows 7 had slipped my mind. There were also a couple of small bug fixes that needed to be fixed, so it was decided that a quick second release should be made.

Besides bug fixes, you will also find that version 1.1, released yesterday, is even faster than the 1.0 release when switching desktops due to a small performance tweak that had been overlooked previously. Technical note: Finestra now caches process names from process IDs as the name lookup turned out after some performance testing to be very slow. Switching desktops is now nearly instantaneous, even for people like myself with dozens of open windows. Performance has always been a big deal for virtual desktops programs, and Finestra is no different. If you have any kind of performance issue while using Finestra, it is a bug, and did not show up in testing. In that case, you can open an issue in the issue tracker and we’ll try to get to the bottom of it.

Version 1.1 also adds a shiny new welcome screen that fits much better in Vista and 7. The options window also has had a few additions and tweaks to allow you to customize the preview window shown from the tray icon and concerning application rules.

Of course, if you haven’t downloaded the latest version yet, you can find it at its CodePlex project site. Let us know what you think!

FeedSubscribe

Month List