I just switched to a google account, and there is no way I can find to switch my blog from the old email address to the new one, so here it is: cut and paste.
In any case, we'll see how this goes.
Digiphilia
Friday, August 29, 2008
Application Switching
Last time I reviewed Emerge Desktop, the Windows shell replacement, and Launchy, the application launcher. For this post I said I was going to go over ThumbWin, WinSplit and Yahoo! Widgets. Well, that's just too much. After such a long post last time, I have to pare it down a bit. Not only that, going over the selection process for any one of those apps is going to take a bit, so I'm just going to deal with application switching for the moment. This is a logical next step anyway because most of the time I spend using all that free space on my laptop with applications maximized, so the next big problem that surfaces is knowing what is available where.
Here are the solutions I considered or tried for application switching:
WinFlip
Alt-tab thingy
TaskSwitchXP
Microsoft Alt-tab PowerToy
Microsoft Intellipoint Instant Viewer (mouse software)
DM2
OpenExpose
iEx
entbloess
DExpose2
Switcher 2
miniMIZE
Visual tooltip
Of course, there's the venerable Alt-tab as well, which still has the relatively unique asset of allowing you to switch between the last two applications with the flip of the key (most or maybe all of these options require more than one action). The downside to alt-tab is that it's not very visual when you're looking to recognize a particular window.
Let's step back for a moment. The whole reason this is so important to me is that I did away with the usual method for keeping track of apps, the taskbar. On my work desktop, it's a real problem as I detailed in my last post. On the laptop, it's a minor space-waster, but one I wanted to see if I could do without. And heck, let's face it. I like a challenge.
So alt-tab is a bit of a drag since it makes you hunt through the list and you can't see your windows. I have to mention, if I still had a taskbar, I'd probably be paying good attention to Visual Tooltip, an app that floats thumbnails above the taskbar when you float the mouse above a minimized app's button. Since I don't have a taskbar, that's difficult.
So what was I looking for in an alternative? Thumbnails, for one. I am completely envious of the Mac and Compiz for the Expose(-like) feature. Having your screen fly into a tiling of the largest possible thumbnails of all of your apps so you can select one by sight is the coolest thing.
It is surprisingly difficult to find a decent implementation of this feature for Windows XP (a free one, at least). I went through a bunch of them and they all had serious shortcomings, from just being plain suspicious-looking to barely implemented. Since this was a thin field for free software, I'll mention a couple of the commercial alternatives I didn't try: Winplosion and Topdesk. There are others as well. If you have Vista already, though, look no further than the free Switcher. While I haven't had the opportunity to try it, it's reviewed well universally.
In the category of expose clones, the mediocre alternatives were iEx, entbloess and Dexpose2. Free and worth the price perhaps, but not impressive.
Brace yourself. I settled on Intellipoint, the software for my mouse. This was the surprise winner. In fact, the only reason I found it in the first place was that my coworker was nice enough to trade mice with me. I was jonesing for a five-button mouse and he was willing to sacrifice his Microsoft optical mouse to my technology addiction. By this point I had tried all of the Expose clones and settled on none of them because they were all found wanting. Having given up my dream (okay, that's a bit melodramatic), my jaw fell when I clicked the middle button on his mouse and all of my windows neatly tiled themselves (no flying, but hey I don't care...function is what I want, not form). I couldn't believe it. What black magic was this? Apparently, my coworker had never loaded the latest mouse software from MS and that was the first thing I did. They take the middle button for their relatively recent Instant Viewer expose-clone built into the driver.
Mana, I tell you. From MS. A worthwhile function in mouse software? Weird. But I immediately bought an optical notebook mouse for that exact feature.
So on to the honorable mentions.
openexpose was the least sucky of the free expose clones, available on sourceforge. In fact, despite the non-existent documentation and no configuration interface (unless you count regedit), it worked great. My only complaint was that it only used a hotspot and therefore couldn't have a key mapped to a mouse button. Too bad. If I wasn't using Instant Viewer I'd be using this. In fact, I like its labeling of the application name/title on the thumbnail better than Instant Viewer's floating mouse tooltip, although both applications really should put the titles up on all the thumbnails whether or not your mouse is on them.
If you don't need to see all of your windows at once, or don't have the memory/performance, TaskSwitchXP is a great alt-tab replacement that includes thumbnails and is supremely configurable (perhaps too so, but I liked it anyway). I just checked and I still have it loaded, although I don't touch it nowadays. [Update: Actually, it is useful when I don't have the mouse available. The Instant Viewer function is only available from the mouse.] The only drawback - minimized windows don't have thumbnails. Still great software. Beats Microsoft's Alt-tab powertoy and alt-tab thingy in my book.
ThumbWin. A very interesting concept...minimize your windows to the desktop as thumbnails. Pretty neat concept and I use it. While Instant Viewer is my go-to app switcher, when I want to see what's running, this can be a bit nicer because it includes the app's icon in the thumbnail. Many thumbnails look alike and this can be a crucial differentiator. I definitely wish the Instant Viewer had this enhancement. You can also close windows directly from the thumbnail, which can be a nice-to-have. In this category, miniMIZE is another almost identical app worth checking out. miniMIZE has better reviews on stability although ThumbWin seems more stable for me. miniMIZE routinely decided to eat my CPU for some reason. Neither of these works with my virtual desktop software however, so ThumbWin is laptop-only for me.
Update: ThumbWin also has a bring to front keystroke-assignable function. This looks almost exactly like Instant Viewer! While I still prefer Instant Viewer because it both uses the screenspace better (its thumbnails scale up to use the space, while TW maxes out fairly small) as well as does a better job capturing thumbnails (TW sometimes misses apps or gives black shots, an annoyance). Short of shelling out for an MS mouse, TW gives openexpose a run for its money. I would have to give it a strong second consideration.
Update: I will also mention Visual Tooltip, a nice-looking option for those with a taskbar (as I mentioned, I removed mine with Emerge Desktop). It does thumbnails on the taskbar a la Vista, although it looks like you can also detach them to the desktop. I haven't tried it but it sounds like a third option to ThumbWin and miniMIZE.
Similar to thumbwin, DM2 offers some interesting options, but no thumbnails. You can minimize to a floating icon, window-blind your application as well as a few other innovative functions. While I liked this at first, thumbnails on the desktop seemed better than icons that float in front of your apps.
Last but not least, I really did like WinFlip, the 3D switcher which stacks like Vista's switcher, but it failed to capture screens of my windows just a little too often. Still, I liked this app and it may work for you. I especially liked the ability to invoke it with a mouse gesture. It is somewhat similar to expose in that you can see more than one window and click directly on it as opposed to being forced to cycle through them one-by-one, but the expose layout gives you much more visibility. If the labeling were only better on Instant Viewer and if it had a mouse gesture instead of giving up an entire button for the function (which cannot be remapped by autohotkey), I wouldn't even consider winflip.
That's it for application switchers. Who'd have thought there were so many options and so little in the way of the refinement of Expose? Oh well. I'm fairly happy with Instant Viewer but all of the makers of these products could learn a few lessons from that software and each other.
Posted by Ted Lilley at 7:03 PM 0 comments
Monday, August 25, 2008
Emerge Desktop and Launchy Review
The picture is an image of my Windows XP desktop on my laptop. I've highlighted in red boxes the system tray (expanded, it normally only shows the active notifications), application windows minimized to the desktop with ThumbWin (another review), the Launchy application launcher (not highlighted), the power button in the quick launch and the Yahoo! Widgets desktop clock (also another review). I'm not running a virtual desktop solution on this machine.
Last time I reviewed virtual desktop software and the one I chose for my work environment, Virtual Dimension. While I ended up finding the virtual desktop software extremely useful for my work desktop environment, I ultimately shied away from it on the more limited real estate of my laptop screen. On the laptop I find myself shifting applications less, and in less need of the desktop concept. In that situation, virtual desktops aren't that much different from minimizing and maximizing windows anyway.
Not to say the concept isn't useful in other situations. The laptop is only one small screen. At work with three monitors arranged I usually face four to six applications each taking up a particular slot of space. It requires a lot of arranging and tearing down only to trade in a different set of apps for a different job duty. That wears thin. Virtual desktops offer a great solution for this...just trade out your desktop for another and trade back when you need it. I honestly don't know how I operated without this concept without going nuts.
Perhaps the other thing about the laptop is that I'm always shutting it down. Bye-bye apps, bye-bye whatever arrangement I had. The time virtual desktops save in this environment is not as good. This isn't true at work where I can leave the same set of apps running for weeks at a time.
In any case, on both the laptop and the work screen, I have one other space problem: the task bar. Virtual desktops help slim this down quite a bit at work, since each desktop gets its own set of apps on the taskbar, meaning I don't have to expand it from the default size to keep it readable. It's an issue as well on the laptop even though I don't run that many apps because the screen is so small to begin with.
But with three screens, where you place the taskbar can become a big question in and of itself.
First of all, unless you run an app like UltraMon or Oscar's Multi-monitor Taskbar, only one window gets the taskbar. This automatically makes one monitor the odd-man out. This isn't an issue for most applications, but I do quite a bit of remoting where, once you've begun the session, you can't just switch the resolution. You end up not wanting to put RDCs on the oddball screen. This is an annoyance, but one I could do without.
The bigger issue is that of mouse movement. I'll explain why. Because I don't want my primary monitor to be the odd man out, I opted for the odd man to be my right-hand monitor since I use it less; the left-hand monitor is easier for me to rotate toward since it brings my mouse-hand closer to the desk, me being a righty. This means that if I'm working in the left-hand monitor and need to get to the taskbar, I have to mouse over two-and-a-half widescreens. Not awful, but another annoyance, and a speed impediment. Alt-tab becomes a necessity.
So what else could I do? I first settled on unlocking the taskbar and docking it to the left-hand side of the right-hand monitor. This had its pluses and minuses. The two biggest minuses were, first, the fact that I had a huge bar interrupting the flow of my desktop and, second, the tons of wasted space the taskbar takes because of the width it assumes when vertical. Not only that, but apps also don't understand what to do with a bar in the middle of the joined monitors. On the plus side, there was tons of space for the plethora of my quick-launch icons, and the bar never got anywhere near as crowded/unmanageable with apps.
There had to be a better way. And for me, there is. This certainly isn't for everybody, but I decided to see what else there was out there that could manage/replace my taskbar, and was pleasantly surprised to find that I could toss it completely with the right choice of software. This works really well for me, but I could see that a lot of people would find the adjustment difficult or would downright hate it. One man's perfume, treasure, insert subjective valuable here...
Disclaimer dispensed with, let me say that there didn't really seem like a whole lot of options here. Basically the first one I ran across fit the bill well enough that I didn't go looking for others. However, bb4win (bbclean etc), geoshell and litestep were alternative packages I found in the category. Can't comment on them, as I don't care to experiment too much with the fundamentals of my machine. Read on.
I actually don't recall how I ran across Emerge. It may have been one of the virtual desktop solutions I found since it does have a basic virtual window manager, although I quickly passed that over. Whatever the case, it was on Sourceforge, always a plus, and seemed interesting enough. Well aware that I was playing with fire installing an Explorer shell replacement, I steeled myself. The install went fine. The uninstall that quickly followed also went fine.
Not that I wanted to test the uninstall for the sake of testing the uninstall. Kind of late at that point. No, when I first installed Emerge, I just didn't get it. There wasn't anything there! The desktop just had a small gray square on it. That's it. Panic ensues. Looking again at the documentation, you learn that you can right-click on the desktop for a suitable approximation of the good old start menu. An inkling of familiarity and relief set in. Further reading tells you that the gray squares (there's actually more than one) are your system tray and taskbar. Ok.
So now what? Well, Emerge seemed a bit radical, even for me. Searching for "add-ons" for Emerge I thought might yield some promising toys, but nothing really showed up. I finally decided that perhaps I hadn't downloaded the full package, but checking again at SF.net showed that yes, I had the latest and greatest with all the working parts available. Uninspired, I performed the aforementioned uninstall.
I went on to other things, but the trifling taskbar issue still burred my saddle.
After not finding any better solution, I finally gave Emerge a second crack. This time I read the docs beforehand. I have to say, while the minimalism is jarring at first, when you get used to Emerge it makes a usable but unobtrusive shell. Simple in the extreme, many of the additional features involve making it even less obtrusive than the default configuration, such as adding transparency to the trays or telling it when not to display tray icons.
You can control each of the modules loaded at startup. I don't even load most of them, preferring just the system tray and quicklaunch (containing only a big fat shutdown button), foregoing the taskbar completely. Hello screen space.
In fact, you can get a bit lost with all that space and nothing to cling to. If you're in need of some sort of launcher and taskbar combination, RocketDock might be for you. I only ran it briefly, but it's nice. I'm just as comfortable without anything taking up space like that. CircleDock looks interesting too but ran slow as a dog for me.
So how do I run programs? Enter Launchy (the application, not the Firefox extension). I have to say, Launchy is great. Don't know which program of its kind was the first (spotlight?) but I should have had something like this long ago. I spent so much time cluttering up my desktop with quick launch icons (~30 or so) that I had totally forgotten my cli roots. While Launchy is not a cli replacement, it is a typing-oriented start menu complement/replacement.
Since my Emerge desktop start menu is a right-click context-menu on the desktop and since I spend almost all of my time with applications maximized (although this is changing...just wait for the upcoming posts on WinSplit Revolution and ThumbWin), getting access to the start menu isn't always quick. Not only that, I don't yet even know if Emerge has a default keystroke to show the desktop. What I do know is that the Show Desktop quicklaunch icon no longer works under Emerge.
Launchy makes a great stand-in. Most of the time I know what I want from the start menu, and I'm a much quicker typist than mousist. Launchy is a slick-looking dialog that pops up like the Run... box when you hit Alt-Space. Unlike the Run... box, it doesn't actually run commands. Instead, it indexes every shortcut on your start menu and quick launch menu as well as your web browser favorites (by title) so you can type in a few keys' worth of the name and enter to launch the shortcut. Type "not" and you should get an icon for Notepad as well as a dropdown with some alternate matches. Choose a different option than Notepad and that becomes the default choice the next time you type "not". Slick.
There really isn't much more to Launchy than that. It has a portable mode, which may be nice for me to keep on my USB stick (or maybe not, not sure it matters). Aside from that, not many other features, and I'm pretty happy with it that way. If I want to add something to its index, I either just need to make an IE favorite or start menu shortcut to the item in question. If I want to add a bunch of things, I can tell it to index another directory and file type.
I do want to mention one very nice feature to Launchy that makes it the "go-to" app...whatever doesn't match your shortcuts gets made into a Google search for you when you hit enter. Very nice. This means that no matter what I want, almost, hitting Alt-Space is the first step to getting there. With some specialty commands, you can force dictionary or wikipedia searches as well. And launchy comes with a few specialty utility commands, such as shutdown/restart links. The only time I honestly need to look at the start menu is when I want to see what a new application installed or when I forget the name of what I was looking for. Which means Launchy is a pretty darn good replacement.
On the downside, Launchy only indexes .lnk files by default, so there are special links (like the Control Panel, for one) that do not get indexed. Nor do things you might expect like My Documents, etc. Launchy is capable of indexing anything on your system, configurable by directory and file extension. Except for those darned special links. While Launchy claims to have a plugin to run Control Panel shortcuts, it was nowhere to be found in the latest version I downloaded (2.1.2) nor on the web. Oh well. Fortunately my file manager (xplorer2 lite) lists the control panel applets easily enough.
One other launchy tip: force a google search by using quotes around the word you type. Not an official usage, but it seems to work, since google just interprets the quotes as requiring a more exact search for the specified term.
Done with Launchy, back once more to Emerge. I mentioned before the desire for a hotkey to show the desktop. Normally Windows maps a number of Windows-key hotkey combinations to various functions such as Windows-R (Run...), Windows-E (Explorer), Windows-D (Show Desktop?), etc. Emerge does away with all of these that are shell-based, which is most of them. It does leave Windows-L (Lock) intact and probably a few others. To make up for this, it offers a hotkey application that allows you to define them for just about all the desktop functions you could want, as well as the ability to launch arbitrary applications. This definitely makes up for the missing ones from Explorer, as long as you're not too lazy to set them up. I am, so I don't run it, but I'm sure that may change.
Winding it down for Emerge, that leaves just the configuration of the bars left. As I mentioned, Emerge comes with just a few basic modules, all of which can be used or left out: system tray, taskbar, quick launch, hotkey runner, desktop/start menu and clock/run box. I choose to just run the quick launch, desktop/start menu and system tray.
The start menu is quite configurable although I find the defaults adequate, especially since I prefer to use Launchy. An editor lets you set up the menu structure however you wish, as well as color, transparency etc.
The quick launch and system tray (as well as the taskbar I don't run) offer the same options for customization. They may be moved and sized however you wish with the help of the Ctrl and Alt keys. Since I keep the full desktop for applications, I set the system tray to float on top of everything else. This makes the upper-left corner the most sensible place I found for it where it doesn't interfere with the display of applications. You can also set the tray's background transparent as well as partial transparency for the icons when the mouse isn't over them. Add to this the ability to hide icons based on their tooltip, and you can actually not display them unless they have something to tell you (what a concept for what is supposed to be a notification mechanism, not an additional taskbar like some apps think). This leaves me with just four partially transparent icons floating over the name of the window.
That leaves the quick launch. I pin this to the desktop with one button: shutdown. Partially transparent when inactive, and 48x48 so you don't miss it. That's it. Clean, clean, clean.
If you're still with me after all that, I salute you. That was a bit longer than I was expecting. Next time I'll go over what I do with all that space: ThumbWin, WinSplit Revolution, Expose clones and Yahoo! Widgets. Until then...
Posted by Ted Lilley at 7:32 PM 0 comments
Saturday, August 23, 2008
Virtual Desktop Package Review
Virtual Dimension
VirtuaWin
Emerge Desktop VWM
Dexpot
Yod'm3D
Other virtual desktop packages I didn't try:
Microsoft PowerToys Virtual Desktop Manager
Microsoft Sysinternals Desktops
When I started using Unix back in the day, X Windows with twm was pretty spartan and learning to use a three-button mouse was somewhat intimidating. It wasn't the friendliest of environments for a newbie, and not having a lot of stuff to do on it meant I didn't really make use of the interesting but puzzling virtual desktop concept offered on the SunOS box I was using at the time for academic assignments in my CS curriculum. So I didn't really see the point then.
Fast forward to today. I have lots to do. Too much to do. Too many hats to wear in my profession and too many applications to accomplish my job. When my work upgraded me from a PIII 677MHz (yes, laugh, this was less than two years ago), they made up for pain and suffering by giving me three widescreen monitors (four, actually, but I returned the fourth on the basis that I couldn't see it in my peripheral vision).
This seemed great at first and I've been using the setup for the last year plus. As time has passed I've worn an increasing number of hats (I do support, documentation, qa and development for a small software business) and gotten increasingly sophisticated with the software packages I employ and systems I manage. Even with three monitors, I cycle through so many applications that it's hard to keep track of all the windows. I don't like clutter so my modus operandi has been to only keep open the applications with which I'm actively working. The taskbar and application switcher stay clean that way and I can find what I need.
Until now. A quick flirtation with openSUSE 11 on my laptop impressed me as to how far Linux UI has come. Props to the Compiz Fusion folks, not only is the eye-candy impressive, the functionality is great. While I couldn't keep openSUSE due to wireless driver issues, the seed was planted.
A second nudge came after the purchase of my fourth USB stick, an inexpensive 8GB PNY Attache. Loading PortableApps.com on it sent me on a portable software jag which turned up portable VirtuaWin. I still regarded virtual desktops as a gimmick or curiosity, but wanted to run with it all the same for fun. I figured it might help me but I just as likely would toss it after a couple days use. Fortunately I was to be impressed.
VirtuaWin is not only open source but also highly ranked on sourceforge. It is very simple. That means it passes the initial sniff test with flying colors according to my guiding principles (see my last post). As I recall it has a few frill features which I didn't play with much, but the basic idea is true to the normal virtual desktop model: a keypress or mouseclick gives you an entirely new incarnation of your desktop where you can run another set of applications without disturbing the layout of the applications on your other desktops. VirtuaWin places an icon in your system tray in the shape of a square broken into four clickable quadrants, the active one of which is highlighted. Clicking the appropriate quadrant takes you to that desktop. Right-clicking the tray icon provides a dense menu allowing you to switch between apps, move apps to other desktops or show apps on all desktops. Keystrokes also navigate the desktops with a sense of direction true to the icon; up, down, left and right. It packs a lot of ability into a small icon.
VirtuaWin was definitely sufficient although not terribly impressive. Fine by me. I wasn't a huge fan of the dense menu. Another downside was that adding more desktops changed the tray icon from a clickable square to a digital readout of the id of the current desk. No more clicking the appropriate quadrant to switch desktops. Eh.
I wasn't unhappy and used VirtuaWin for a while. However since I like to know my options, I looked around and found Dexpot. A quick install was followed by a quick uninstall. I think the fact that it was not entirely in English turned me off. No slight to the program, just my knee-jerk reaction to anything that isn't either entirely intuitive or well-documented, one or the other. As I recall it had a few extra features that seemed noteworthy but it wasn't immediately compelling over VirtuaWin and I liked VW better.
I then found Virtual Dimension, another open source sourceforge project, not nearly as well ranked as VirtuaWin and I think unjustly so after trying it. I wasn't immediately impressed but now I really like this program. Based purely on the current implementations, I wouldn't be surprised to see this overtake VirtuaWin in popularity.
I'll come back to Dimension.
I wasn't so initially impressed with Dimension that I didn't still want to look at other solutions. One of the features I had been impressed with on openSUSE was the exhibition feature that unwrapped all of the faces from the desktop cube and displayed them at once. None of the solutions so far for XP easily let me see which desktop I wanted to switch to when looking for a certain set of applications that were open. I had to simply remember whether I had been browsing that site on the third desktop. I could always do an action to tell what applications were on a desktop, but usually it would just be the small icons for the applications that would show, as opposed to a visual representation of the applications and their layout. I was intrigued by the visual layout concept and hoped to find at least an approximation of it in the Windows packages.
Yod'm3D (Yet anOther Desktop Manager 3D) had the desktop cube features but not the exhibition feature. It was still worth playing with. If you're not familiar with the desktop cube, it is a 3D representation of your virtual desktops where there are four desktops that make up the horizontal-plane faces of a cube. When switching between desktops, the desktop becomes semi-transparent and your perspective pulls back, showing you the full cube. Because of the transparency, you can see at least part of the window layout on each face, which is not quite the exhibition feature but gets you partway there. The cube can be flipped with the mouse or keystroke.
Yodm'3D was formerly freeware, and has been sold to a commercial company for development. The last free version was still available and I was able to track it down without too much trouble. No guarantees as to how long that will be true, however.
Yod'm3D was more suitable for my laptop than my desktop. With three monitors in 1680x1050, my desktop has trouble pushing all of the pixels in 16bit, 2d mode let alone asking it to throw around a quarter million bits-worth of pixels in 3D. That said, for a free solution I liked Yod'm3D. I had to crank up the video hardware acceleration (I had previously had to turn it down for some animation software I was using) as well as max out the bios video RAM setting (Max DVMT on my Acer Aspire 3680), and once I did I was impressed that my $350 little Celeron M 1.6 could even do 3D on the fly.
Yod'm3D was limited to four desktops, which is fine for my laptop. It had a nice set of features and just worked for the most part. I only had one complaint, which was the difficulty of moving windows from one desktop to another. In order to do this you had to click the window in question then invoking the flip function. The held window would block the view of the cube, meaning you had to imagine the flip. It was inconvenient to hold the mouse and invoke the flip at the same time as well.
At first, I settled on Yod'm3D for my laptop. In the end, I've decided that I don't tend to run enough applications to justify virtual desktops on my laptop (especially since it frequently conflicts with other add-ons that try to manage windows), but I wouldn't hesitate to give it an honorable mention to someone looking for such a solution. Dimension is still a bit smoother to work with because of the moving-windows-between-desktops issue though.
At this point I've touched on everything except Emerge Desktop VWM. That was a brief experiment as well. Simple to the point of barely being there, the virtual window manager of the Emerge Desktop package (which I'll cover itself in a later post) was a simple window on the desktop broken into quadrants that could be clicked ala VirtuaWin, but took up precious real estate and offered no customization to speak of. The most noteworthy aspect was its old-school connected desktop model. The screen is simply oriented on a particular section of a larger contiguous desktop in this model. Moving a visible window to the edge of one desktop makes the window overlap onto the next desktop, giving you a way to transition windows between desktops. I didn't play with this for long enough to form an opinion on it but it seems clunkier than the model used by the rest of the packages. I quickly turned off this feature of Emerge.
Now for the details on Dimension.
It definitely took some customization to like Dimension. For one, it only starts out with a single desktop. Huh? A quick trip into the configuration dialog reveals a core set of customizations that provide what you need and not much more, which is a plus in my book.
The first thing to do is make some more desktops. Six for my work desktop. Each can be named for reference, and enabling the OSD makes the desktop name pop temporarily when switching desktops, a nice reminder. VirtuaWin has plugins to do this which did not feel as nice to me.
At work I switch between (plugs for my favorite apps included):
Home - email, general browsing, time-management tools, etc.
Support - my technical support responsibilities, bug-tracking with BugTracker.NET, remote sessions to customers with UltraVNC Single-Click.
Docs - Documentation tools like Help & Manual, my CruiseControl.NET documentation integration server.
Development - VB, KomodoEdit, PyCrust, IPython, programming references.
Testing - remote sessions to my test servers for putting our latest release through its paces.
Remote - Systems administration for my VMware servers.
This is the big change: with orthogonal desktops for each of the hats I wear, I don't have to constantly close and open applications. Go to the right desktop, run them, leave them, go on to my next hat. I can't quantify the change in my productivity, but I can feel it. In fact, once oriented to this model, it highlights an uncomfortable fact...I can switch desktops quicker than I can switch hats. That time I used to have closing the current app, finding the next right one and opening it is gone, leaving me with just a mild sense of disorientation when I go back to a task I left open ten minutes ago. While I used to do that busywork, my brain was shifting gears. Now I'm left shifting gears with no other work to do. It feels silly staring at the screen waiting for the clutch to engage in my head, but I know from this that as soon as it does, my work environment is waiting for me, not the other way around. This is great and is the thing that proves the use of the virtual desktop concept to me. Hopefully I will get up to it's speed.
Back to Dimension. A handy floating, dockable window shows a representation of each desktop with small icons for each application running on that desktop. While this falls well short of the exhibition feature I was talking about, it's a worthwhile approximation. Clicking on the desktop or an app takes you there, and you can move apps between desktops by dragging in this window. Aside from openSUSE's shift-switch, this is the most sensible way to manage window movement that I found.
A handful of other features round out the package.
Keyboard shortcut mapping works well for virtual desktop-specific features.
Dimension adds an entry to the menu brought up by right-clicking a window's title bar, allowing you to set the window transparent, always on top or available on all desktops. These are nice (although a lot of other tools provided the transparency and always on top feature as well). I use the transparency feature on a few windows I keep on all desktops. The Always on Top feature doesn't always work for me, but I don't really care.
Separate desktop backgrounds can be set for each desktop. Cool. Along with the OSD this helps your brain recognize the work context you're in. You can also set a picture as the background for the dockable window, but nonsensically it thumbnails the same image for each subwindow. It would be nicer to automatically thumbnail the background set for each desktop.
Auto-hide is configurable for the dockable bar but you have to click the telltale window for it to show. It does respond to mouse-floating, but it is just too slow. The window also disappears immediately if the mouse moves off after a mouse-float, whereas it stays for a few seconds when invoked via click. A faster response to the mouse float as well as sticking around longer afterward would be nice.
Shortcuts to each desktop can be set in the desktop configuration (not the hotkey configuration). The numpad is not distinguished from the arrow keys if NumLock isn't on, so be sure to put on Numlock if you numerically assign the desktops to numpad keys like I did. I also put numeric reminders in the names for my desktops ("Home (1)").
That's about it. Dimension is pretty smooth and usable, and I really enjoy it. I know it enhances my productivity, so thanks to the developers, as well as all of the developers of the rest of these, amazingly, free packages.
In my next post I'll review the Emerge Desktop that I used to streamline my taskbar, start menu, quick launch and system tray, as well as Launchy, which has pretty much replaced my Start menu.
Posted by Ted Lilley at 12:20 AM 1 comments
Saturday, August 16, 2008
Tweaking/Pimping your Multimonitor Desktop for Productivity
Recently my focus has been on making the most of my desktop environment, both on my workstation at work and my laptop for home use. What I've discovered is that there are a lot of free, very handy tools to tweak and improve the Windows XP desktop. Being the diligent researcher I am, I think I've ran nearly the gamut of useful free tools for making the most of your desktop, which I will share here. There's a lot of ground to cover, so I'll be splitting this up into several posts.
The primary issue for me is window management on multiple monitors. My setup at work is three Acer widescreens each running at 1680x1050 at 16bpp (32 slows refresh quite a bit), powered by two ATI FireMV 2400 cards each with 256MB of video RAM. It truly is like computing in IMAX, although making use of all that real estate can be a challenge.
The primary issue is that Windows isn't really meant for handling widescreens, especially ultrawidescreens (when you put three of them together). This isn't to fault Windows...I think it's a general challenge to intuitively use that much space with a mouse. Movement across all three of those screens itself takes seconds, for example. The natural consequence is that much of the focus of the tools I've chosen is to make it easy to control the content of screens either by keystrokes or using the mouse with a smaller representation of the actual screens. Another useful technique is virtual desktops, which allows you to set up a layout of applications that works and then not touch it again, allowing you to switch between screen contexts with keystrokes or simple mouse movements. More on this when I describe the tools.
The principles I employ when evaluating a new tool are based on the following:
Free is good. Primarily this is a budgetary constraint, or rather, the fact that I am extremely cheap. In most facets of life being overly cheap is a detriment, but this is thankfully not true when it comes to software these days. Much free software is very high-quality. I've been able to find free or limited-functionality "lite" versions of everything I needed.
All else being equal, open source is preferable. While open source has many great packages, some of which are even better than commercial alternatives (7-zip being a primary example), sometimes there are much better freeware alternatives. The breakdown here is about 50-50 between freeware/lite versus open source. That said, I fire up sourceforge first when looking for software.
Simplicity is best. I like tools that address a specific function better than kitchen-sink approaches. It's easier to get best-of-breed solutions this way since you know what breed of software you're looking at. As a result, compromises on functionality that you get from the mixed bag of functions in more ambitious software are fewer and farther between. This does pose its own problems, however. Software conflicts do happen between different packages (how many tools can make their window stay on top of the other windows that are staying on top, really?). There is also a proliferation effect...I've surveyed a lot of software for a few core functions. By sharing my results, perhaps others can avoid these issues since I've found a core set of tools that seem to work great together.
The tools fall into the following general categories:
Virtual desktop software: software that maintains the layout of applications in separate contexts, allowing you to switch between them at a keystroke or mouse-click. These complement the regular Windows desktop.
File manager: file management functions for viewing and manipulating files and directories. These are generally replacements for the venerable Windows Explorer file manager.
Focus management/Application switching: While virtual desktops greatly reducing the necessity for arranging windows on the fly, you still need to do window management. Application switchers are generally replacements for the alt-tab focus switching between open and minimized applications.
Layout/monitor management: functions for controlling placement of windows within or between screens. These include the ability to maximize/minimize with keystrokes, move windows from one monitor to another, size windows to defined portions of a monitor, extend the taskbar onto multiple monitors, group taskbar applications onto the appropriate window, span desktop backgrounds to multiple monitors, etc. Windows generally doesn't have much in the way of multimonitor managment in the first place aside from the "Tile windows..." functions on the taskbar context menu.
Desktop shell: complete replacements for the native Windows desktop environment including the Start menu, taskbar and system tray.
Application launcher/Start Menu: functions to let you quickly launch applications, website favorites, etc. Replace or complement the Start menu.
Gadget/Desktop enhancement: sidebar-like tools such as floating clocks, news delivery, weather reporting, etc.
On to the tools:
Virtual desktop:
VirtuaWin
Dexpot
Emerge Desktop VWM
Virtual Dimensions
Yod'm 3D
File Manager:
Xplorer2 (lite)
FreeCommander
TotalCommander
UltraCommander
DirectoryOpus
Focus Management/Application switching:
WinFlip
Alt-tab thingy
TaskSwitchXP
Microsoft Alt-tab PowerToy
Microsoft Intellipoint Instant Viewer (mouse software)
DM2
OpenExpose
iEx
entbloess
DExpose2
Switcher2
miniMIZE
Layout/Monitor Managment:
WinSplit Revolution
DesktopFusion
Ultramon
Oscar's MultiMonitor Taskbar
Autohotkey
Desktop Shell
Emerge Desktop
bbclean
Application Launcher:
Launchy
Gadget/Desktop enhancement:
Google desktop
Samurize
Yahoo! Widgets
Winners:
Xplorer2 Lite
WinSplit Revolution
Emerge Desktop
Launchy
Virtual Dimension
Yahoo! Widgets
Intellipoint Instant Viewer
Autohotkey
Honorable mention:
TaskSwitchXP
WinFlip
miniMIZE
OpenExpose
In the next post I'll go into details on the first category, virtual desktop software. In the meantime, if you're curious about any of the tools, go look up the articles on making the most of your multi-monitor setup and making XP more like Vista on lifehacker.com. I have to plug their site, which is head and shoulders above any other I've found on (among other things) useful and innovative software.
Posted by Ted Lilley at 11:31 AM 0 comments
Saturday, August 9, 2008
A couple posts I made recently to the PortablePython google group:
A gentleman named Martin had previously been so kind as to package a 2.8.7.1 version of wxPython that could be dropped in a few different directories to enable portable wxPython. Unfortunately these files were taken down but he explained to me how he derived them, so I repeated some of the work on the latest wxPython (2.8.8.1 I believe). The file list I used is attached at the end of this post.
I captured the list using Process Monitor from Sysinsternals (www.sysinternals.com) filtering just for file operations. Exporting the result to CSV and opening in Excel, then making a pivot table of the filenames made the list. I removed the obvious temp files and other files that didn't make sense to yield the final version.
I think it is working since I've been able to easy_install winpdb, a wx-based debugger for Python, on my Portable Python. Between Portable Komodo Edit, Portable WinMerge, Portable Python and winpdb, I pretty much have my favorite full-fledged python development environment on a stick.
All I'm missing is TortoiseSVN, but that's hard to see a portable version coming around since it is all context-menu based. Command- line subversion would suffice, but I prefer not even to run version control on my source on USB anyway, instead using SyncToy 2.0 Beta (http://www.microsoft.com/prophoto/downloads/synctoybeta.aspx) to sync my source files to my desktop.
I set SyncToy to ignore hidden directories, so the subversion files don't come across to the USB stick, saving me some space and avoiding conflict issues with the sync. Synchronization can cause consistency issues with inter-file dependencies when changes have occurred on both sides. These consistency issues can destroy subversion's ability to use the metadata it needs to track changes, so I leave the metadata out and let subversion's normal mechanisms track the source file changes once they have been synced back to the desktop.
On to easy_install (http://peak.telecommunity.com/DevCenter/ EasyInstall). This is a very, very handy tool for any python that is "isolated" from the normal windows environment. It is a command-line utility (python package with a wrapper) that will automatically search for the best and latest version of any package registered with the python package index online, download and install it for you based just on the name of the package. While it did not work installing every package I've tried, it has installed several and some I thought it might not.
For example, I installed the previously mentioned winpdb by using easy_install with the command "easy_install winpdb". It grabbed and installed the latest, which I was able to run with the portable wxpython.
The only caveat so far with it is that it codes the drive letter in somewhere in the easy_install runner's configuration, which I have not yet been able to track down. Easy_install from another PC with a different drive letter errored out. However, manually running "python Scripts\easy_install-script.py " yields the desired result in such a case.
The other note is that I used a command-line that made the portable python first in the path. PortableApps Command Prompt Portable does this nicely by letting you modify the shell's path at startup with Data \Batch\commandprompt.bat. See it's docs for details. Remember to use %~d0 so the path dynamically determines the drive letter.
This all means that many packages should be able to become portable just using the easy_install command. Remember, easy_install needs to be set up using the portable python's .exe, not your system one. As long as you do that, it will install the packages you specify in the portable python's site-packages. If you do this from the portable command prompt, it's easy.
Here is the set of files for wxpython. I don't know if everything is exactly right, but it's working for me so far.
For those directories that obviously only contain wxpython files, I haven't listed all of the files. The Scripts directory also contains .bat versions of the files listed below. Copy those as well.
C:\Python25\Lib\site-packages
C:\Python25\Lib\site-packages\wx.pth
C:\Python25\Lib\site-packages\wx-2.8-msw-unicode
C:\Python25\Lib\site-packages\wxaddons
C:\Python25\Lib\site-packages\wxversion.py
C:\Python25\msvcr71.dll
C:\Python25\python.exe.manifest
C:\Python25\pythonw.exe.manifest
C:\Python25\Scripts
C:\Python25\Scripts\CreateBatchFiles.py
C:\Python25\Scripts\CreateMacScripts.py
C:\Python25\Scripts\editra
C:\Python25\Scripts\helpviewer
C:\Python25\Scripts\img2png
C:\Python25\Scripts\img2py
C:\Python25\Scripts\img2xpm
C:\Python25\Scripts\pyalacarte
C:\Python25\Scripts\pyalamode
C:\Python25\Scripts\pycrust
C:\Python25\Scripts\pyshell
C:\Python25\Scripts\pywrap
C:\Python25\Scripts\pywxrc
C:\Python25\Scripts\xrced
C:\Python25\unicows.dll
A reference of all of the tools I've used for my Portable Python environment:
PortableApps.com
http://www.portableapps.com/Notepad++ Portable
http://portableapps.com/apps/development/notepadpp_portableCommand Prompt Portable http://portableapps.com/apps/utilities/command_prompt_portable
WinMerge Portable
http://portableapps.com/apps/utilities/winmerge_portableKomodo Edit Portable
http://www.obsidianproject.co.uk/index.ob?do=komodoportProcess Monitor
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspxEasy Install
http://peak.telecommunity.com/DevCenter/EasyInstallwxPython
http://www.wxpython.org/Winpdb
http://winpdb.org/SyncToy 2.0 Beta
http://www.microsoft.com/prophoto/downloads/synctoybeta.aspxPython for .NET
http://pythonnet.sourceforge.net/---------------
Interesting to see another python-to-executable package [re: . I think I had tried to find pyinstaller when it was a dead project at macmillan. Nice to see an alternative to py2exe back.
Unfortunately pyinstaller doesn't seem to do much in the way of being installable itself like other python packages. easy_install was unable to find it and the instructions on the website are unusual.
Do you have enough experience with it to know that it is worth the effort? I'm interested in the pros/cons versus py2exe.
With regard to my first post, I've learned a couple new things since then:
1. The easy_install (as well as ipython
http://ipython.scipy.org/moin/, now that I've easy_installed that) runners in the Scripts directory are .exe's that simply run corresponding .py files (e.g. easy_install- script.py). The py files are the culprits that cause drive-letter problems when the USB drive letter changes. They contain a reference to python.exe in the shebang line. Probably the best solution is to remove the line entirely. This lets the python in your path be run. You could also simply remove the drive-letter, which will let it work as long as you run the command from a directory under the USB drive (e.g. #!\PortableApps\PortablePython1.0\python.exe)
2. Just like easy_install, the wxpython batch files also contain references to the python interpreter. Re-run the CreateBatchFiles.py once you've moved the wx files over to the USB drive. This doesn't solve the changing drive-letter issue, so you still have to manually edit each of the batch files after they've been created, but there are so many I'm only doing that as I need to. In the meantime, there's at least a fifty-fifty chance that the drive-letter will be right on its own.
3. I was able to run the wxPython demos by moving the installed files from my PC install to a separate directory on the USB drive. I'll plug PyCrust, my favorite IDE-like shell. IPython is great, but sometimes it's nicer to have variables and completion/docstrings presented without have to type extra commands.
4. Mentioning IPython, I had to lift the pyreadline files from my PC install. Although IPython easy-installed without pyreadline, pyreadline wouldn't easy-install.
5. I was looking through the list of desired portable software and saw easygui. What a great little idea. It doesn't easy-install, but it's trivial to drop the unzipped package into Portable Python's site- packages directory. It requires Tk, which is thankfully there already by default. Voila, simple guis without event-driven programming.
6. There is a project on PortableApps.com to package a Python distribution (
http://portableapps.com/node/12031). Perhaps there is an opportunity for collaboration/learning?
I think that's all that my fevered brain has got for now!
------
Hi there,
I've been using Portable Python to do diagnostics on remote machines. Very nice. I was initially disappointed to find that packages aren't necessarily easy to add and that pywin32 wasn't included. After dropping a few installed packages from my regular installation into Portable's site-packages, I was able to use a few libraries I needed other than pywin32, but pywin32 is a bit more complicated.
Fortunately I found another alternative: Python for .NET. (http:// pythonnet.sourceforge.net/ Note this is not IronPython). It's a recompiled python interpreter that gives access to the .NET libraries, which has all the functionality I was looking for from pywin32 anyway. Since it's just a python.exe, I was able to drop in the UCS-2 version of it in place of Portable Python's .exe and it worked. Portable Python for .NET is born. :) They are a very nice combination, by the way. After stripping out the unnecessary components, it zips down to about 5MB and gives you all the power of, say, PowerShell but with Python's libraries and syntax and no need for an install.
I also made some modifications to the runner.py script that generates the GUI as I was getting tired of having to add scripts all the time. I also gave scripts a description field. It stores the settings in a csv file called scripts.csv. While I haven't worked out the kinks (it generates extra linefeeds in the csv file I haven't tracked down) I figured I'd post the patch here anyway for anybody interested.
One last note: at the front of the runner.py script are a couple lines to import and run rpdb2. This is a module from winpdb (http://
www.winpdb.org/) that allows you to run an embedded debugger in the script and attach to it remotely using winpdb. You need to grab the somewhat large rpdb2.py file from your installed site-packages and drop it into Portable Python's for this to work. It can be very handy for figuring out issues that only pop up in production.
Enjoy.
Note: This is a patch file generated by WinMerge. You can apply it to runner.py by using Subversion (
http://subversion.tigris.org), patch for Win32 (
http://gnuwin32.sourceforge.net/) or just careful inspection of the listing below (hint: most parts have line numbers listed). If anyone needs the whole file, ask and I'll post it.
Ted
12,14d11 < #import rpdb2 < #rpdb2.start_embedded_debugger('password') < import csv 120d116 < listfile = 'scripts.csv' 141,143c137,138 < Label(body, text="Entry name").grid(row=1) < Label(body, text="Script arguments").grid(row=2) < Checkbutton(body, text="Run in separate process...", variable=self.spawn).grid(row=3, column=1) ---
> Label(body, text="Script arguments").grid(row=1) > Checkbutton(body, text="Run in separate process...", variable=self.spawn).grid(row=2, column=1) 147,148d141 < self.scriptEntry = Entry(body, width=30) < self.scriptEntry.grid(row=1, column=1) 150c143 < self.scriptArguments.grid(row=2, column=1) ---
> self.scriptArguments.grid(row=1, column=1) 181d173 < self.entry = self.scriptEntry.get() 256,265d247 < file = open(listfile) < scripts = csv.reader(file) < for entry, script, arguments, tempspawn in scripts: < if script: < spawn = IntVar() < spawn.set(tempspawn) < self.scriptList.listbox.insert(END, entry, arguments) < self.scriptColl.append([entry, script, arguments, spawn]) < < file.close() 276,278c258,260 < entry = result.entry < self.scriptList.listbox.insert(END, entry, result.arguments) < self.scriptColl.append([entry, result.script, result.arguments, result.spawn]) ---
> script = "..." + result.script[-25:] > self.scriptList.listbox.insert(END, script, result.arguments) > self.scriptColl.append([script, result.script, result.arguments, result.spawn]) 280,285d261 < file = open(listfile, 'a') < file.write('\n') < scripts = csv.writer(file) < spawn = result.spawn.get() < scripts.writerow([entry, result.script, result.arguments, spawn]) < file.close() 296,304d271 < file = open(listfile) < scripts = csv.reader(file) < scripts = [row for row in scripts] < file.close() < del scripts[selectedIndex] < file = open(listfile, 'w') < out = csv.writer(file) < out.writerows(scripts) < file.close()
Posted by Ted Lilley at 11:17 AM 0 comments
Tuesday, January 1, 2008
Software of interest
Software I haven't tried but seems worthy of a closer look:
SQLAlchemy
Posted by Ted Lilley at 1:59 PM 0 comments
Sunday, December 30, 2007
Recommended Software
Software packages I recommend:
Subversion
TortoiseSVN
VisualSVN Server
PySVN
Python
PyWin32
IPython
Komodo Edit
IronPython
PyVIX
PyODBC
WxPython
Portable Python
Tim Golden's Active Directory
Tim Golden's WMI
Dan Gass's cfgparse
PyGraphviz
NetworkX
pexpect with Cygwin
pytest
pywinauto
WinPDB
setuptools
Notepad++
Wink
Jing
Creatoon
OpenOffice.org Draw
Inkscape
TuxGuitar
OpenSUSE
OpenSolaris
BugTracker.NET
CruiseControl.NET
Help & Manual
WinMerge
7-Zip
ADFind
InfraRecorder
Audacity
VMware
VirtualBox
COM Explorer
FoxIt
SumatraPDF
FreeMind
MAPI Editor
NewSID
Process Explorer
Paint.NET
PowerShell
PuTTY
Ranorex
UltraVNC SC
WinDirStat
Posted by Ted Lilley at 2:00 PM 0 comments
Older Posts
Subscribe to: Posts (Atom)
Blog Archive
? 2008 (6)
? August (5)
Application Switching
Emerge Desktop and Launchy Review
Virtual Desktop Package Review
Tweaking/Pimping your Multimonitor Desktop for Pro...
A couple posts I made recently to the PortablePyth...
? January (1)
Software of interest
? 2007 (2)
? December (2)
Recommended Software
Welcome
About Me
Ted Lilley
View my complete profile