Felitendo c777e8280d
release / Debian package (push) Failing after 14s
release / RPM package (push) Failing after 23s
release / Release and repositories (push) Skipped
release / Install from the RPM repository (push) Skipped
chore: 1.4.0
Steam's helper script is only patched when the patch keeps the file at the
length Steam wrote down. Where the comments cannot pay for the argument,
nothing is written at all: a file of the wrong length costs the whole client
package downloaded and installed again, and a client that quits at the end of
it instead of coming up.

With no such patch left to prop up, -noverifyfiles is gone from everything that
carried it - Steam's launcher entry, its autostart entry, the shortcut on the
desktop and the ones Steam writes for single games. Steam repairs its own
installation again, and nothing of this program's is on its command line. A
patch an earlier version appended is rebuilt to fit at the next apply, or taken
back if it cannot be.

A script somebody puts in front of the client to add a switch of its own is
recognised as a way of starting Steam, rather than as an application to hand
the flag to.

A desktop entry edited in place that the ledger has lost is written again from
the copy kept beside it. Without that, an entry from an older version kept an
older answer for good - a browser patched that way stayed on the flag that
shows the "unsupported command-line flag" bar while every other browser moved
off it in 1.3.0.
2026-09-06 14:00:43 +02:00
2026-08-16 19:48:54 +02:00
2026-08-16 19:48:54 +02:00
2026-09-06 14:00:43 +02:00

middleclick-autoscroll

Middle-click autoscroll is a CLI for Linux that enables autoscroll in every application that supports it. Works with browsers, Electron apps like Discord and Spotify, Steam, and anything else that runs on Chromium under the hood.

There is no app list. My tool just looks at what uses chromium under the hood and applies the necessary steps to get it working.

How to install

Arch

yay -S middleclick-autoscroll

Fedora

sudo curl -fsSL -o /etc/yum.repos.d/middleclick-autoscroll.repo \
  https://felitendo.github.io/middleclick-autoscroll/middleclick-autoscroll.repo
sudo dnf install middleclick-autoscroll

Debian

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://felitendo.github.io/middleclick-autoscroll/KEY.gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/middleclick-autoscroll.gpg
echo "deb [signed-by=/etc/apt/keyrings/middleclick-autoscroll.gpg] https://felitendo.github.io/middleclick-autoscroll/deb ./" \
  | sudo tee /etc/apt/sources.list.d/middleclick-autoscroll.list
sudo apt update && sudo apt install middleclick-autoscroll

openSUSE

sudo rpm --import https://felitendo.github.io/middleclick-autoscroll/KEY.gpg
sudo zypper addrepo --gpgcheck --refresh \
  https://felitendo.github.io/middleclick-autoscroll/rpm middleclick-autoscroll
sudo zypper install middleclick-autoscroll

How to use

Just run middleclick-autoscroll. This will open the configuration TUI that looks like this:

  Middle-Click Autoscroll

  Autoscroll                     ON

  Applications covered           11 of 13
  Not identified                 1 - see the applications list
  Steam                          ON
  New applications               ON
  Last applied                   2 minutes ago

  Applications pick this up the next time they are started.

  [1] Turn autoscroll on or off
  [2] Re-apply everything
  [3] Applications
  [4] Settings
  [q] Quit

  >

[1] is all you need for the normal case. [3] lists every app that was found and what is being done with it, so you can leave a single one out or switch on an AppImage that couldn't be identified:

  Applications

  ▸ Steam                              on (Steam)
    Chromium                           on (launcher)
    Discord                            on (flag file)
    Obsidian                           on (launcher)
    Spotify                            on (launcher)
    Slack                              off
    Cursor                             cannot tell

  Anything not identified is left alone until it is turned on here.
  Up/Down select - Space turns one on or off - q goes back

[4] has the same switches per category - browsers, Electron and CEF apps, Flatpaks, snaps, autostart entries, Steam, Spotify - plus a field for extra Chromium arguments.

How it works

Blink (the engine in Chromium, Electron, and CEF) already has autoscroll, but it's off on Linux because middle click does primary-selection paste there. This flag turns it on:

--enable-blink-features=MiddleClickAutoscroll

But doing that for every app is kinda bothersome and it also might break with updates. That's why I created this small tool to automate that.

Browsers get the same thing asked for differently:

--enable-features=MiddleClickAutoscroll

Both mean the same feature - Blink generates a matching feature name for each of its runtime flags - but the first one is on Chromium's list of flags worth warning about, so a browser started with it shows a yellow "unsupported command-line flag" bar over every page. The second one is not on that list, so there's no bar. It only works from Chromium 124 on, which is why apps that embed something older (Steam's CEF, older Electron) keep the first one - they have no such bar to begin with. Helium, which carries the feature under its own name, is asked for HeliumMiddleClickAutoscroll alongside it.

New apps are picked up by a systemd path unit that watches the relevant directories. Without systemd, middleclick-autoscroll apply does the same thing manually.

Steam

Steam's web UI supports autoscroll but has no way to pass extra arguments to its helper, so the program patches the script that starts it. Steam checks its own files against its manifest - by size and timestamp - and reinstalls the whole client package over anything that differs, so the patch is written to look unchanged: the bytes the argument costs are taken back out of the script's comments and the timestamp is put back.

If that can't be done - a script with no comments left to pay for the argument, or one this version doesn't recognise - nothing is written and Steam is left alone. A file of the wrong length costs the client package downloaded and installed again, and a Steam that quits at the end of it instead of coming up; no autoscroll in Steam is the smaller problem. Nothing is added to Steam's launcher entry or to the shortcuts it writes for games, and Steam keeps repairing its own installation.

Commands

Command
middleclick-autoscroll Interactive menu
… enable Turn on, apply, start watching
… disable Undo everything
… apply Apply to new apps
… apply --rebuild Redo from scratch
… status What's covered
… list All apps and how they're handled

Building from source

make
sudo make install

Optionally needs msgfmt (gettext) for translations and scdoc for the man page. Supports PREFIX and DESTDIR. make check runs syntax checks and shellcheck.

See packaging/README.md for release builds and repo signing.

License

GPL-3.0-or-later.

S
Description
No description provided
Readme GPL-3.0
2.2 MiB
0 Stars 1 Watchers 0 Forks
v1.7.0
Latest
2026-10-04 20:28:24 +02:00
Languages
Shell 95.2%
Makefile 2.8%
HTML 2%