Hacker News new | ask | show | jobs
by kqbx 955 days ago
I wanted to build something like this but for Linux, especially the vimium-like hints that would work in any app. I even made a prototype by abusing the AT-SPI2 accessibility API. Unfortunately, querying AT-SPI2 for all buttons takes too long in complex apps. And even if it was fast, many apps (especially non-GTK ones) implement accessibility poorly or don't implement it at all, so I abandoned the project.

I guess it would be possible to make a framework specific implementation, for example by replacing the GTK shared library with a modified version, but that's too much effort and I lost interest in the whole 'mouseless' thing anyway.

3 comments

I have built this here https://github.com/phil294/vimium-everywhere, and it works okay-ish performance-wise. For example, generating the click hints on this thread on Firefox takes (including FF's UI elements) takes one second, perhaps less on a fast machine. I use it on a daily basis. It needed a lot of optimizations to get to that point though. There are also a few alternatives listed.

And almost all applications support at-spi once you set some env vars! Including electron apps etc., see the readme

The thing about linux is that ime you can just implement this individually across all (most) the apps I use. I have vim-like binds for mpv, my pdf reader, terminal emulator/terminal file manager, image viewer, and of course my window manager.

The ones where I don't are the ones where it would be too complex to be taken care of by an external app. A DAW would need its own core implementation of modes for example, same with something like Krita and in that case it would probably not even be advisable.

at least for the terminal, I use kitty which has a "hint" mode https://sw.kovidgoyal.net/kitty/kittens/hints/

I use this with emacs and avy + firefox and vimium and don't need it anywhere else (works across OS too)