My Favorite IE Add-on: Mouse Gestures by Ralph Hare


I spend a lot of time dealing with problems users encounter when using Internet Explorer. As a result, when I write about add-ons, I’m usually talking about misbehaving code that is wrecking the browser. However, it’s not all doom-and-gloom out there, and I’m delighted to share my favorite browser add-on with you.

I first came across Ralph Hare’s work when perusing the IE add-on sample code at CodeProject. Ralph and I both liked mouse gestures and wished that Internet Explorer offered them. For those of you who have never used mouse gestures, basically, they allow you to trigger commands like back, forward, refresh, etc, without using the keyboard or clicking on toolbar buttons or menus. While not everyone wants to use mouse gestures, some of us find them incredibly compelling. This sweet spot makes gestures the sort of feature ripe for implementation as an add-on.

Fortunately for all of us, Ralph is a great developer and he put together a fantastic gestures add-on for IE which has evolved and improved a lot over the last six years. I’ve installed his add-on on every computer I’ve used since discovering it, and I now find it annoying to use browsers that don’t support gestures. It’s an ironic turn of events for me, since I’ve been a keyboard snob for over a decade. 🙂

What makes this add-on so great?

Respect for the User. The gestures add-on respects your existing browser settings, and does not attempt to change your default homepage, search provider, favorites, user-agent string, etc. There’s no junk (e.g. adware, unexpected toolbars, etc) bundled with it either.

Stability. I’ve tried out a lot of different add-ons over the years, but almost always end up uninstalling each after a few days because they’re unstable and result in occasional or frequent browser crashes. In contrast, Ralph has delivered a rock-solid implementation of gestures; the few bugs I’ve found have been fixed quickly and the updated versions are automatically offered using an automatic notification service.

Best Practices. Ralph’s code is compiled following best-practices for secure and stable add-ons, including linking with the /NXCOMPAT and /DYNAMICBASE flags to opt-in to DEP/NX and ASLR memory protections.

Performance. Many browser extensions are useful from time-to-time, but I’m not willing to suffer a performance penalty when not actively using an extension. For some types of extensions (menu extensions, toolbar buttons) this isn’t a problem, because the add-on code only loads when I actively use the add-on. However, an add-on like Mouse Gestures inherently needs to be available at all times, so high performance is an absolutely critical consideration.

Ralph’s Browser Helper Object (BHO) is written in native C++, and designed and coded for speed. After installing, check out the Load Time column inside the IE Tools > Manage Add-ons dialog:

Load Time Column in the Manage Add-ons Dialog

As mentioned previously, the extension offers an auto-update mechanism, but Ralph ensures that this won’t hurt startup performance. He does so by running the check in a background thread, and waiting for about a minute after tab startup to kick off the webservice call. Ralph also sets the NoExplorer registry key to prevent his BHO from loading inside Windows Explorer.

Even the default configuration is optimized for performance: by default, mouse trails aren’t shown, and if a user wants them, they can choose between basic trails:

Basic Mouse Trails

which work fine with all video cards, and the slightly fancier advanced trails:

Advanced Mouse Trails

which work best with higher-end hardware.

Cross-Version Support. Mouse Gestures is compiled in both 32-bit and 64-bit flavors (installed individually) making the gestures add-on one of the very few available for 64-bit IE. The add-on works in all versions of IE and I’ve personally used it on Windows XP, Server 2003, Vista, Server 2008, and Windows 7 without problems.

Ease-of-Installation. The 32bit and 64bit installers together weigh in just under 1 megabyte. The add-on is packaged using the same NSIS installer that I use to install Fiddler.

If you decide you don’t like the add-on, you can easily uninstall it using the Add/Remove Programs control panel.

Customizability and Power. You can customize its options using the Mouse Gestures… item added to the browser Tools menu. The configuration dialog allows you to assign gestures to built-in actions, define new gestures or actions, and change the appearance of mouse trails.

Mouse Gestures Actions Customization Menu

The most common gesture I use is Down,Right which by default is bound to the Close Tab action. I’ve also bound the Down,Up and Up,Down gestures to the Toggle FullScreen Mode action; this is slightly simpler than hunting for the F11 key on my small but beloved Lenovo X200.

If you’d like, you can bind any gesture to open any of your browser Favorites in the current tab, or a new foreground or background tab.

One of the most powerful features of the add-on allows you to bind a JavaScript file to an action. I use this feature to bind a simple page cleanup script to the Left,Right gesture. When I’m reading an online newspaper or similar page with flashing images or other unwanted distractions, I simply hold the right mouse button and waggle the mouse—all of the images and flash objects are instantly removed, allowing me to read in peace.

Mouse Gestures General Customization Menu

Price. Mouse Gestures add-on is clearly a labor of love, and Ralph makes it available for free. If you’d like, you can help defray his web hosting costs using the unobtrusive “Donate via Paypal” link buried at the bottom of his site.

Conclusion

If you’re willing to get hooked on a new way of interacting with your browser, give Ralph’s Mouse Gestures add-on a try, and join me in thanking Ralph Hare for his great work!

Eric Lawrence

Comments (39)

  1. Anonymous says:

    This is a test for posting comment with PIMShell!

  2. Anonymous says:

    just a word of warning with the advanced trails: if you have:

    – advanced trails

    – 2 monitors

    – desktop composition (i.e. aero)

    – have an IE instance running (even minimised)

    – are running a full-screen 3d-app (like a game)

    …then the second monitor will go pure purple.  easy workaround is to turn off advanced trails

  3. @Frymaster: Very interesting find, thanks. I’d never seen that, because I don’t run games, and don’t use the advanced trails. 🙂

  4. Anonymous says:

    >I spend a lot of time dealing with problems users

    >encounter when using Internet Explorer.

    Great! do you have plans to support SVG, the canvas element and/or video tag in IE9? Thanks in advance

  5. Anonymous says:

    Interesting work and the trails are "cute", but after checking it out, I’ll still be uninstalling it.

    Incidently, if anyone knows how to write useful instructions and is a fan of the software, you might want to toss the guy a rope.  Any semblance of figuring out what to do once you have it installed is pretty much completely missing.

    (no, I am not a fan of gestures – they are geek candy at best.  Simple experiement: Explain them to someone non technical you know and see how they are doing with them in a month)

  6. Anonymous says:

    Thanks a lot for this Great post & the time You spent for making our life easier.

    I’ll be checking this & I will update my Experience. BTW I use Mouse Gestures in Opera.

    Regards,

    Dave

  7. Anonymous says:

    Thanks for the tip, Eric!

    Unfortunately, the add-on causes regular crashes in IE for me, especially after releasing the mouse button. I also cannot browse for your script file (in the config dialog box) because the add-on then crashes IE immediately (100% repro). Thus, I had to uninstall it. 🙁

    I use IE8 under Vista.

  8. Anonymous says:

    I was going to preach the gospel of StrokeIt for system-wide mouse gestures, but then I saw the bit about binding a JavaScript file to an action.  Sexy!

  9. @Xepol: As I mentioned in the second paragraph of the post, Gestures certainly aren’t for everyone. As for the idea of "explaining" gestures to "non technical" users, well, I think a demonstration is worth a thousand words. Using gestures to "wipe away" advertising or using the "L" gesture to close a webpage feels very natural for me, and I don’t think this has anything to do with being a technical user.

    @Role: Thanks for the note… I’m sorry to hear that it’s not working for you! Do you have other browser extensions installed which might be interfering?  I generally run with very few addons, so I might not have the problematic configuration.  You might try collecing a crash dump http://blogs.msdn.com/ieinternals/archive/2009/10/12/Collecting-Internet-Explorer-Crash-Dumps.aspx that Ralph (or I) can analyze to determine where the problem is.

  10. Anonymous says:

    Sorry for this off topic post, but I’d just like to ask you: when are we going to hear something about IE9?

    With other browsers having a kind of six months release cycle, don’t you think IE should have an ten/twelve months release cycle at least?

    Thank you.

  11. Anonymous says:

    net, the ie team have said in the past that most of their customers have requested a 18-24 month release cycle.

    It’s true that Chrome ships new browsers everytime someone sneezes, but each new version only has a few little features.

    If you do the math, Apple and Mozilla ship new versions of Safari and Firefox on roughly the same timescale that new versions of IE come out, although the Firefox guys do a good job of talking about what’s coming. (Of course, they also slip a lot and cut/push a lot of features they talk about).

    The big problem isn’t a lack of new IE versions… it’s the longevity of the ancient ones.

  12. Anonymous says:

    Oh ok, I didn’t know of that request.

    About Safari and Chrome I agree with you (also because Chrome does miss some features, so they have to push new releases as fast as they can), but Firefox does have a shorter release cycle actually. The transition from 3.0 to 3.5 has been hell for developers with many reschedules and issues, but that’s not the rule. In fact 3.6 is almost done already.

    Every new release doesn’t have to bring major breaking changes necessarily. For example, I think a 8.1 (or 8.5) version of IE with just an improved javascript engine (or further HTML5 support or whatever you’d like the most) would have been great and refreshing to have by March 2010, leaving major changes (which might break backward compatibility) for IE9 scheduled 18-24 months after IE8. Sort of like Intel’s "tick-tock" model.

  13. Anonymous says:

    >"3.6 is almost done already."

    We’ll see when it actually comes out. Their current plan to ship a new browser version around the holiday shopping season is pretty gutsy.

    "tick tock" is a nice model, except that corporations don’t want UI updates (they fear it will require retraining) and they don’t want HTML/JS changes (they fear it will require site changes).

    As for the idea that the 3.0->3.5 transition was "not the rule"– i think you’re rewriting history a bit. The truth is that the idea of perfect version-to-version compatibility is a myth that the Mozilla and WebKit teams are starting to recognize… once you have non-trivial marketshare, the compatibility bar goes way up and development agility goes way down.

    This probably explains the current "performance" craze you see from the browser teams… the teams have found their path blocked virtually everywhere due to compat risk, but improved performance rarely has as much compat impact. So they’ve decided to go toe-to-toe in that arena because it’s so much easier and changes break less stuff. Of course, current version browsers have gotten so fast that the continuing optimizations are pretty much of artificial benefit at this point.

  14. Manosdoc says:

    Eric, thanks for the news. I’ll go straight.

    It seems I cannot make the plugin work. I mean it is loaded, activated, but says, not available.

    I must say that I browse with Inprivate Filtering on by default ( Registry enabled ) and I use 64bit version of IE 8 at Windows 7.

    My add-ons are minimum, only defaults.

    I have downloaded the 64bit version of the plugin.

    I have also removed the checkbox where it says "Disable Toolbars and Extentions when Inprivate browsing starts"

    What is it I do wrong ?

    I really want this add-on !

    Thanks a lot !

    IE 8 by far my choise.

  15. Anonymous says:

    I’ve used IE8 since it was in beta and I’ve found 2 things about the load times section of IE addons.

    1.) The load times are rarely anything close to accurate.

    2.) The load times of some of the most offensive addons are not even registering a value or register a default 0.00s and never increase even when the browser is chugging alone due to phone home checks.

    Finally we are taking these values as "facts" from the company that has failed to admit that opening tabs is slower in IE than any other browser by orders of magnitude regardless if addons are installed or not.

    (and before an MSFT employee or fanboy chirps in… all of us run IE with addons enabled.  We will never in REAL-WORLD use of IE have addons disabled (repeat:NEVER) thus please do not tell us that opening new tabs with addons disabled works fine.  Its like saying a web server performs awesome when I am the only one on it, but performs lousy when 1,000 users are hitting it all at once… welcome to reality)

    Finally re:above test and report on XP please.  Most users didn’t bother with Vista and haven’t got to Windows 7 yet.  Testing on the latest hardware to prove IE can keep up is a cop out.

  16. Anonymous says:

    curious: If you’re trying to learn something, try to adopt a less obnoxious attitude. If you’re just trolling, find another home. I run with add-ons enabled and tabs open in about 1/8th of a second.

    manosdoc: "Not available" showing in the Manage Addons screen just means that the DLL is missing the information. It doesn’t mean that the addon isn’t working. Try performing a gesture?

  17. Anonymous says:

    what are its advantages over IE7Pro ???

  18. Anonymous says:

    Hey now,

    hot clicks are a nice feature.

    Thx,

    Catto

  19. Anonymous says:

    @Bored – glad to hear that you are not having issues with new tab opening time but for the rest of the planet of WinXP IE8 users it is terribly slow with lots of documented test cases proving the results.

    Like @curious I feel that getting heard by Microsoft seems to require a strong, loud stance by a number of users.  Microsoft has often made mistakes with IE that they only correct after receiving much feedback… and often it is borderline obnoxious.

    I don’t condone swearing, insults & accusations however any statements of feelings regarding an implementation (or lack thereof) is fully appreciated and those voices certainly do need to be heard.

    I’ll add my vote for agreement with @curious on the load times in IE8.  I’m not sure how the values are calculated by I find them to be unreliable.

  20. Anonymous says:

    Hi, what happened to the IE bug tracking site on connect?

    It seems new bug reports and suggestions were closed?

    I would wish an improved interface for add-ons. For example official APIs for

    – filtering Javascript content modifications (needed for ad blockers)

    – managing tabs (enumerating, events for open, close, etc)

    – managing tab groups (open a link in a new tab group or on existing one)

    – retrieving the security certificate (CERT_CONTEXT) for the active tab

    – UI customization (hiding parts of IE such as the navigation bar, the toolbar close buttons, Favorites button, adding status bar icons etc)

    – retrieving the favicon for an URL

    – …

    best regards,

    Viktor

  21. Anonymous says:

    events, I meant

    – tab activation event

    – refresh event

    currently, very tedious to identify programmatically

  22. Anonymous says:

    I might give this a try. I’m a big fan of IE7Pro, which has mouse gestures, but it’s been in declined (the forums are infested with spam).

  23. Anonymous says:

    IE8 needs lots of add ons mainly centering on the fact that sites assume that a browser needs is on a fast connection.

    – Right click to block all images from this site

    – Right click to block all images from a site

    – Automatically block 1,2,3,4 pixel images

    – Page image report to let you selectively block images from a page (like the loads of social networking icons found on sites)

    – Shift right clock to block Flash from a site

    – Clean up in-private filtering so that blocking http://www.aar.com/* will delete all specific blocks from http://www.aar.com/abc.gif

    – Optimize IE8 so that opening a new tab on an unloaded 3ghz 2gb ram machine takes less than 3 seconds (don’t scan 500+ MIME registry entries for each new tab – put them in read only memory when IE is loaded or just lazy load them).

    – Right click on IE titlebar to re-add buttons/menu choices/resize bars to a popup window that removes them

  24. Anonymous says:

    @Cliff: The times shown in the Load Time column account for the amount of time spent in the SetSite call that initializes the BHO. This is where most BHOs spend most of their load time. However, it’s absolutely true that there are ways to significantly slow the browser without spending much time in SetSite. Performance measurement of an add-on throughout the IE process lifetime is a non-trivial exercise, and not something that can be as easily reduced to a number in the Manage Addons dialog.

    @Greg: For what it’s worth, IE opens new tabs on my 2.4ghz machine in under a quarter second. What results do you see when you run without addons? What security software do you run?

  25. Anonymous says:

    @EricLaw: ‘net’ and a few others mentioned about IE9, and you probably know what I’m going to ask: when will we see a beta version of IE9? (sorry for going off-topic)

  26. Anonymous says:

    Our shop has McAfee 8.7.0i which does slow down IE8.  Can IE8 load registry settings one time as they are needed and not reload/rescan them over and over when you open a tab or just use IE8?

    It is simple enough to tell the user to close and restart IE8 if there is some IE8 option setting change made that requires an IE8 restart.

    This would help IE8 avoid context switching from IE8 to system addressing and back for each API call.

  27. @thecrochunter: When we have announcements to make about future versions, betas and the like, you’ll see new posts here on the IEBlog. (I understand and share your excitement on this!)

  28. Anonymous says:

    events, I meant , tab activation event ,refresh event

    currently,

    very tedious to identify programmatically

  29. Anonymous says:

    Absolutely Awesome! Some smart folks have put together a concept of an HTML5 "Resource Packages" for serving up web content for web apps for better caching over a single HTTP Request.

    see notes/implementation details:

    http://limi.net/articles/resource-packages/

    Looks like Firefox 3.7 is already well onto this.  Can we expect IE to catch up by the time IE9 is released or will we need to wait until IE10 for IE to support this?

  30. Anonymous says:

    @Eric

    On my laptop (Intel core duo T2450 @ 2.00 Ghz) a new tab takes nearly a second to open on IE.

    It is instant on Firefox, Chrome and Opera!

    There can be endless discussions about bad addons. However as the end user my problem is that IE is the only browser that is slow opening tabs.

  31. Anonymous says:

    @EricLaw – we can defer the blame for the incorrect load times and live with the guesstimated values but there are other issues with that dialog that are not as excusable.

    If one pretended that the load times were accurate, then knowing the slowest load time would be helpful to the user in order to try and reduce the load time of new tabs (yes they are slow!) by disabling slow addons.

    Ok, so you click the header for load time to sort… and it does nothing… no ascending or descending sorting available… not on that column or any other (e.g. on the Status (enabled/disabled) column)

    There are many addons with no load time.

    There is no information about an addon provided other than a tiny description.

    There is no option to uninstall any addons.

    There is no indication of what addons rely on what other addons.

    There is no link from the addon screen to get updates (individually or as a whole) – it should be just as easy as Firefox – check out how they did it – they perfected it.

    When the dialog loads components it says "looking for {xxxx}…." this is really the wrong terminology.  "Loading {xxxx}…." would be much better as it doesn’t sound like IE lost these components and has to find them.

    There is lots of blue text used in the dialog incorrectly.  If you use blue text for hyperlinks within the dialog thats fine – however if you do do that – you absolutely can NOT use blue text for non-hyperlink text strings – its bad design and ruins usability.

  32. Anonymous says:

    @Mike: Did you perhaps install software that spams thousands of sites into your Zones? There’s a discussion of this (and some troubleshooting tips) here: http://blogs.msdn.com/ieinternals/archive/2009/07/20/IE8-Performance-and-Speed-Tips.aspx

  33. Anonymous says:

    I think most of the websites work fine without compatibility view. I am not using compatibility view anymore and websites works well.plz review your compatibility view list…

  34. Anonymous says:

    @IE 8 fan – there are 1,000’s of sites in the compatibility view list and many 100’s or 1,000’s more that force IE7 rendering through Meta tags and HTTP headers.

    This blog for one – forces IE7 rendering because it doesn’t use web standards by sending the HTTP Header: ‘X-UA-Compatible: IE=7’

  35. Anonymous says:

    Please provide a better editor interface to in private filtering.  There is no GUI way to add a single URL to the list or change a particular URL from blocking a specific image to blocking all images from that site.  One has to export the block list, add an entry and the reimport that list.  That does not replace the original entry with the one the user wants.

  36. Anonymous says:

    what are its advantages over IE7Pro?

  37. Anonymous says:

    A shoutout to Opera would have been nice, since this addon replicates a native feature Opera introduced years ago. Nice to see good ideas spread to other browsers, just give a nod to the source eh?

  38. Anonymous says:

    Thanks for your good work. Adding support for the HTML5 Canvas tag is the #1 issue for me as a web developer.

  39. best websites says:

    Mouse add ons could be a really great idea. For example: one right mouse click to block flash and ads on websites, as well viewing website text only version.