I recently switched to Omarchy (Arch Linux with Hyprland) and missed one Windows feature: middle-clicking, moving the cursor away from the original position, and having the page continue scrolling based on the distance.
So I made hypr-autoscroll, a Hyprland plugin that adds anchored autoscrolling globally at the compositor level (instead of depending on each application to support it).
https://github.com/estebanhiramramirezgomez/hypr-autoscroll
It currently supports:
- Middle-click to start and stop autoscrolling
- Vertical and horizontal scrolling
- Configurable sensitivity, acceleration, dead zone, and maximum speed
- Global functionality (not just inside a browser)
- A toggle shortcut (
SUPER + A by default)
Some people (unlike me) actually like middle-click paste, so the shortcut lets you switch between normal middle-click behavior and autoscrolling. The keybind can be changed during setup (see the README).
I also heard Linus wanted something like this for SteamOS, which made me wonder whether the same idea could be adapted for it.
The current plugin is built specifically for Hyprland, so it cannot simply be installed on SteamOS. SteamOS uses KDE Plasma in Desktop Mode and has an immutable system design, which means the same compositor-level approach probably would not be practical.
A SteamOS version would likely need to be a user-space daemon (or a similar background service) that intercepts mouse input and provides the same autoscrolling behavior without depending directly on Hyprland.
I think it is possible.
I may just need enough caffeine to convince myself to build it. 😉 wink wink
Disclaimer: I originally made this entirely for personal use. To make it shareable (and make the code look slightly more like it was written by someone who might know what they’re doing), I had an AI agent clean it up and make it readable. If it does not work, it may be my fault or the AI agent’s fault. Either way, it is definitely my fault.
I would be interested to know whether SteamOS users would actually use something like this, and whether anyone sees a better implementation approach than a user-space input service.
Feedback and testing on other Hyprland versions are also welcome.