Friday, May 31, 2019

64-bit xGestures and macOS 10.15

I've received a few emails wondering about the future of xGestures and macOS 10.15, which will no longer support 32-bit apps at all. The good news is that I am working on a 64-bit version of xGestures! The trouble is that, since I originally wrote xGestures in 2004, a lot of it used old 32-bit Carbon APIs that are no longer supported, so a bunch of the app has to be re-written.

I do have an in-progress 64-bit version for those you want to try it out. Here's a link:

The one feature that's missing is visual feedback when gesturing. I'm going to try and reimplement it before 10.15 comes out.

I've found that it seems to work better in 10.14 than version 1.78.

If however xGestures is currently working fine for you, then there's no reason to update.

Friday, April 13, 2018

Oh yeah, blogs. Remember those?

Does anyone even still use blogs anymore? Maybe I should share a tweet about my latest tumblr post on Facebook for all of my Slack friends.

Anyway, I made a new version of xGestures: 1.78. It fixes a bug that made mouse clicks unreliable in macOS 10.13. 😱 If you're running High Sierra, I recommend updating! It fixes a few other things too.

I hope people are still finding xGestures useful like I am. I've said it before, but just to reaffirm, I do intend to keep updating it as long as I'm using a mac and no one makes a suitable alternative. Because, you know, I can't live without mouse gestures.

Sunday, December 18, 2016

xGestures is now freeware and updated for macOS 10.12

Well, here we are... another blog post nearly two years after my last one. Sufficed to say that I haven't really had the time to maintain this blog, as I've been completely absorbed in my work and personal life for the last decade or so. But I do have some new news.

First, I've updated xGestures to version 1.77. The update should fix some bugs that come up in macOS 10.12, namely that it was impossible to install the software, and it should make it easier to make xGestures one of the apps that's allowed to control your computer.

Second, xGestures is now freeware. Given that I don't have the time to update it any longer, almost no one is buying it anymore (I've been getting one registration every two weeks or so), and also given that it only costed five dollars, I figured the right thing to do was to make it freeware from here on out.

I'd like to take this moment to thank everyone that paid $5 for xGestures over the years.

🎈🎉🎊🎈 Thank you! 🎈🎉🎊🎈

You all helped support me, particularly towards the beginning of xGestures' life when I was still in the sketchy early years of my adulthood, back around the time I was still in college or recently graduated, and I was more or less broke. I originally made xGestures just for myself and my own sanity, since prior to xGestures there wasn't any good mouse gestures app for macOS / OS X / Mac OS X / whatever, and I simply couldn't live without mouse gestures. It was very encouraging for me to see so many other people fall in love with xGestures and find it to be the same indispensable tool that I do.

Without any further ado, here is the link to xGestures 1.77: xgestures177.dmg

So that leaves a big question... what's next for xGestures? The rather sad answer is, not much.

As long as there isn't another mouse gestures app for macOS that's as good as xGestures, I will continue to update it for the latest version of macOS. It is an indispensable tool for me, after all, so if it should stop working, I'll pretty much have no choice but to fix it. But as of now, I have no plans for adding in any new features.

I had a dream some time ago of making a new version of xGestures, completely rewritten from the ground up to be something even better and more powerful than it was before. But these days, my time is very valuable, and I don't have the time to work on a big project like that alongside everything else that's earning me money. xGestures was always a niche utility, and in the age of Magic Trackpads it's even more niche than it was before, making it not viable as a commercial product. Maybe some day I'll find the time and inclination to make a freeware (or perhaps even open source) brand spankin' new mouse gestures app, but that's not happening in the foreseeable future.

(I'd just like to throw in that BetterTouchTool may be a suitable replacement, although I don't personally feel that its drawing feature is quite the right replacement for the Opera-style mouse gestures that xGestures provides. But it's close! You may like it, and all of the other great features it provides.)

Monday, February 9, 2015

I'm not dead, and neither is xGestures!

Hello to the few people that read this!

Sorry I've been completely neglecting my website and xGestures. I have a lot of other stuff on my plate these days, not the least of which is the paid work I'm doing, so after all is said and done I have almost no free time and energy to continue working on xGestures.

That said, I still use it and rely on it every day, so I won't let it completely waste away. If you're a dedicated user of xGestures, you can take some solace knowing that I can't live without it either, so if it totally breaks, I'll have no choice but to fix it or risk being driven to madness by a world bereft of mouse gestures.

Concerning OS X 10.10 Yosemite: xGestures *does* work in it, if you perform some steps to make it allowed to use OS X's accessibility features, which most of the gesture actions require. Here's how to do it:
  1. Find the xGestures.prefpane file (located in either ~/Library/PreferencePanes or /Library/PreferencePanes)
  2. Right click and pick "Show package contents"
  3. Open Contents / Resources
  4. Next open System Preferences / Security & Privacy
  5. Pick Privacy tab
  6. Select Accessibility
  7. Click lock, enter an admin password
  8. Drag from the Resources folder onto the list of applications in the Accessibility section
  9. Make sure the checkbox next to it is checked
  10. If xGestures is already listed in the Accessibility section and it's still not working, try removing xGestures from the list and adding it again.
I've also started working on a new version that fixes this bug, but half of the users I sent it to said it doesn't fix it, so I still have more work to do. Hopefully at some point soon I'll actually be able to release it.

Sunday, June 27, 2010

New xGestures news, plus getting xGestures to work with Chrome

Okay, time to update this blog!  It's been over a year, which is pretty ridiculous.

First, since I'm sure some people are wondering about this, I am still developing xGestures, though I haven't had time to put really any substantial work into it for the last couple of years of my life.  However, I have recently cut back my hours at my job, and with the extra time one of the things I plan to do is make a new 2.0 release of xGestures with tons of new features.  I won't say when it'll be done, because I haven't started working on it just yet and I don't know how long it'll take.  But I want it to have oft requested features such as diagonal gestures, if not complex gestures in general, as well as more gesture actions, more ability to have gestures apply to specific contexts, and things like that.  I'll be sure to update this blog as work progresses on that.  I might also release another minor update to address some long outstanding bugs, but I'm not sure yet.

Second, an issue a lot of people report to me is that xGestures doesn't work with Google Chrome.  I don't know why it took me this long to figure it out, but turning on the "Window under the start of the gesture determines the application" button in the Options section of the preference pane is what breaks things.  So if you use Chrome, you probably want to turn that feature off.  In whichever new release of xGestures I make, I'll be sure to fix that.

While I'm talking about the "Window under the start of the gesture..." feature, I'll also add that even if you don't use Chrome, you might want to turn that feature off.  It doesn't work very well --- results are inconsistent.  Looking back over how xGestures works I can see that I never really implemented that feature properly, especially since lots of gestures don't actually work if the program they're for is in the background.  I'll try to address that better in xGestures 2.0, at least by making it work consistently somehow.

Wednesday, June 17, 2009

Closing the tab that you gestured over

Hey, remember this blog?  I barely do.

I just solved an interesting xGestures problem someone posed to me: how can they get it so that the tab they gesture over is closed, rather than making a gesture type Command-W, thus closing whichever tab is active?  Furthermore, how can they close tabs when Safari is in the background?

To solve it, I wrote an AppleScript that should do exactly that.  Maybe someone else will find it interesting.  The thing to remember about xGestures is that it can have practically any behavior you want by using AppleScript.  The problem is that writing AppleScripts is really only an option for people who are already programmers and have the time and inclination to learn to write them.  So I'll keep posting the interesting ones I write.

Here's the script:

set x to mouse x
set y to mouse y
tell application "Safari"
set targetWindow to {}
set theWindows to the windows
repeat with i from 1 to the count of theWindows
set theBounds to bounds of item i of theWindows
if x ≥ item 1 of theBounds and x ≤ item 3 of theBounds and y ≥ item 2 of theBounds and y ≤ item 4 of theBounds then
if targetWindow ≠ {} then
if index of item i of theWindows <>
set targetWindow to item i of theWindows
end if
set targetWindow to item i of theWindows
end if
end if
end repeat
if targetWindow ≠ {} then
close current tab of targetWindow
end if
end tell

This script requires the XTools scripting addition because otherwise there's no way to get the mouse location in an AppleScript.  XTools can be downloaded here:

Monday, April 21, 2008

HotBox 1.0 is released

Finally, I manage to release a software project I had been working on sporadically for months. It really does take a lot of time for me to finish things I start.  But it's done, and I'm very proud of it!

So far, things have been going well.  I was afraid for a while that I would be assaulted with bug reports of all sorts of things not working in HotBox, but for the most part, people seem to be happy.  I've gotten a few bug reports here and there but they seem to be isolated cases rather than signs of huge, sweeping problems.

Also, I'm very thankful to everyone that's donated to HotBox so far.  There's all sorts of other projects I want to embark on now that it's done, and of course there's going to be further development in it too, and donations definitely keep me encouraged to keep working.  Another thing is if people are donating, that means that they think the program is cool enough that it's worth giving money to the author, and that's awesome.  HotBox was absolutely a project I started because I thought it was a really good idea and that other people would enjoy it a lot, and so far it seems to be that people like it.  Word.

I should address one thing, which is the number one most requested feature in the few days HotBox has been out on the internet, and that is:  Using the cursor while zoomed in.

Here's the quick answer: I really want to add this feature, but I don't know if it's possible, and I don't know when I'll have time to add it.  So don't hold your breath yet.

Here's a longer answer that requires a bit of an explanation of how HotBox actually works:

HotBox doesn't do anything especially magical in terms of getting the screen to zoom in.  It basically makes clever use of the Mac OS X accessibility feature for zooming in that's existed in the OS for some time now.  A few users were quick to point out that you can accomplishing zooming also by using Command-Option-+ and -, or by holding control and using the scroll wheel, and this is true.  The disadvantage, though, was that as soon as your zoomed in that way, moving the mouse around would cause the screen to move with it, and a potentially huge cursor would sit on top of whatever you were trying to watch.  Also, it's difficult to get the thing you want to zoom in on to fit the screen perfectly.  I made HotBox in order to address those problems, as well as a few others.

However, all HotBox is doing is calculating how much the screen needs to zoom in and telling the OS to zoom in that much next time, figuring out exactly where the cursor needs to be on screen in order to make the thing you selected fit properly, moving the cursor to that point and freezing its location, and then simulating a zoom-in hot key press. The result: the screen zooms in on exactly what you selected. (Note the emphasis in the previous paragraph.)

So the problem is, if I kept the mouse unfrozen while HotBox is invoked, the screen will scroll around with it.  Granted it's possible to change things so that the screen only scrolls around once the cursor reaches the edge of what's visible (and in fact HotBox does this), but then it's still a problem when you move the cursor outside of the zoomed in area.  (Some people might have noticed that you can actually still move the cursor around and scroll the screen.  This is in fact a bug, and I will probably fix it fairly soon.)  Basically I'd need to get it so that the cursor is constrained to a specific region of the screen, and there's no good way to do that in Mac OS X that I know of.  My theories on how to pull this off regardless involve some tricks possibly involving a fake cursor, but I won't get into that now.

So rest assured, when I get the chance, I'm going to try to add the mouse functionality to HotBox... but I can't guarantee I'll be able to make it work. HotBox's primary function was to make it possible to watch online videos full screen when they don't have a full screen button. But since it can potentially be really useful for presentations and other things like that, I'll see if I can't make it even better.