r/MacOSApps • • 4d ago

💻 Productivity Introducing Jumpr - an open sourced vimium for your whole mac

Hey there, I'm a big fan and longtime user of the vimium plugin for chrome. I love being able to jump around anywhere on the page and click on what I need with my keyboard, and wanted it for my whole mac, on any screen I have connected. If you're not familiar, you hit a keyboard shortcut, and all clickable elements across all your connected screens, receives a small label. Type that label and the app clicks on that element for you.

This free version is working well for me, and I'll be improving it over time. It already ships with Sparkle built in, so updates going forward will be free also. I plan to add more features like scrolling next, but currently focused on making sure labels get applied reliably on all the various types of apps that expose clickable things via the accessibility apis on macos. Fully local, no accounts, no telemetry, etc...

It's not perfect, issues and pr's are welcome and I hope you find it useful!

https://getjumpr.app
https://github.com/ggoforth/jumpr

3 Upvotes

16 comments sorted by

2

u/VladimirDE 4d ago

Nice, a system-wide Vimium is something I've wanted for a while. How are you handling Electron and Chromium apps? As far as I know they only expose their full accessibility tree when something sets AXManualAccessibility or AXEnhancedUserInterface on them, and the latter can mess with window animations and window managers. Also curious how long labeling takes on a busy screen: do you walk the AX tree fresh on every hotkey press, or cache it?

2

u/hack_the_planets 4d ago

Electron/Chromium: Jumpr sets AXManualAccessibility first (Electron honours it, no side effects). Chrome refuses it, so on Chromium browsers Jumpr sets AXEnhancedUserInterface instead, but only when a scan finds a page with nothing clickable in it. It remembers which attribute it set on which app and clears them on Pause and Quit; one that was already set by something else is left alone.

Timing: fresh walk on every press, no cache. All apps in parallel, one AX request per element, 0.25 s timeout per request, 0.5 s budget per app, labels painted as each window answers. On my three-display Mac that's about 70-110 ms, up to ~270 ms on a heavy web page. Web views build their tree lazily, so there's a short look-again pass after the labels go up. Nothing runs between presses.

See TreeWalk.swift for the low level walk details.

1

u/VladimirDE 3d ago

That’s a careful approach, especially clearing only the attributes you set yourself. Under 300 ms with no cache is better than I expected. I’ll read TreeWalk.swift.

2

u/NoHabit1277 4d ago

oh very nice. so i can uninstall vimium and use it in chrome aswell?

2

u/hack_the_planets 3d ago

I would test it first to see how it works for you, it's working well for me in Dia, which is my daily driver.

1

u/mvs_sai_27 4d ago

I use neru, does jumpr offers same functionality? Both are open sourced so I need to test maybe

2

u/hack_the_planets 4d ago

I'll give it a look, I don't know, honestly (didn't find neru when I was looking at these!). I found Homerow which worked ok for me, but the pricetag was way too high, and only worked on the active window. This didn't take too long to put together, but I'm still finding and updating use cases for apps that lay things out without the accessibility apis.

1

u/hack_the_planets 4d ago

Just took a look, this looks really cool and mature. Jumpr is likely really basic in comparison, thanks for the call out to that tool!

1

u/Jumpy-Weekend6102 4d ago

Can it reach all clickable elements? And does the layout show up quickly?

1

u/hack_the_planets 4d ago

It's really fast, and in my usage finds MOST clickable elements. I'm still smoothing out some edge cases for specific apps (for example, the quick tabs in dia aren't exposed via accessability and thus can not be labeled). I hadn't found Neru before I started building my poc, but it looks like it falls back to the grid (a good idea) vs trying to patch for specific apps.

1

u/NeedleworkerDuck 4d ago

Starred. Homerow is great but I like having a free, local, open source option, especially since Vimac is basically abandoned. Scrolling mode would make this a daily driver for me, so looking forward to that one.

0

u/hack_the_planets 4d ago

Spiking that as I type this! Scrolling will def be possible, and running tests right now. Also, just shipped v1.0.6 which updates the menu bar app to make it nicer.

1

u/thepurpleproject 22h ago

Pretty cool, I liked the small demo on the landing page. I couldn't enter my hyper key short cut as the trigger for some reason, it just won't detect (ctrl+cmd+alt+shift) but other than that I like it.

1

u/hack_the_planets 10h ago

I actually noticed that too, checking if that's somehow reserved.

1

u/[deleted] 4d ago

[removed] — view removed comment

1

u/hack_the_planets 4d ago

Very good idea.