Vim scroll.
everywhere.
Hold fn, press J or K, scroll any window in any app. No plugin, no config per-app — it just works.
How it works
Four directions on u · d · r · l
fn + u / d / r / l for up, down, right, left. Read long Notion pages or skim a GitHub PR without ever reaching for the mouse.
Adjust step size: line, half page, or full page
Half page for fast PR skimming, line by line for precise review. Step size is configurable.
Works in every app
Safari · VS Code · Slack · Finder — one set of keys, no per-app shortcut to memorize.
Questions.
Won't this conflict with Vim keybindings in VS Code?
fns only intercepts J/K while fn is held. Inside VS Code with the Vim extension, your j/k without fn work exactly as normal — normal mode navigation, visual selection, everything. The fn layer sits above the app, so there is no conflict.
Can I change the keys from hjkl to arrow keys or WASD?
Key mapping is configurable in fns settings. If you prefer WASD-style or just want J/K without the rest of hjkl, you can set that per-modifier. The default is hjkl because that is what muscle memory already expects for most keyboard users.
Can I tune scroll speed?
Yes. Settings → Scroll has a speed slider from 1–10. The default is calibrated for comfortable reading speed. Shift+J/K page jumps are always exactly one viewport height regardless of the speed setting.