Skip to content
hjkl · system-wide

Vim scroll.
everywhere.

Hold fn, press J or K, scroll any window in any app. No plugin, no config per-app — it just works.

Works in Safari · Xcode · Figma · Preview · Any app

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.

Scroll anywhere with fns.

Join the waitlist or try the beta.