106 lines
3.2 KiB
Markdown
106 lines
3.2 KiB
Markdown
# 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**
|
|
|
|
```bash
|
|
yay -S middleclick-autoscroll
|
|
```
|
|
|
|
**Fedora**
|
|
|
|
```bash
|
|
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**
|
|
|
|
```bash
|
|
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**
|
|
|
|
```bash
|
|
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:
|
|
|
|
//
|
|
|
|
## 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.
|
|
|
|
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 at every start and repairs whatever looks changed, so the patch is written
|
|
to look unchanged.
|
|
|
|
As a fallback, for the case where that isn't possible, `-noverifyfiles` goes on
|
|
everything that starts Steam: its launcher, its autostart entry, and the
|
|
shortcuts it writes for single games. That one means Steam won't auto-repair
|
|
damaged files on its own just so you're aware of that.
|
|
|
|
## 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
|
|
|
|
```bash
|
|
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](packaging/README.md) for release builds and repo
|
|
signing.
|
|
|
|
## License
|
|
|
|
GPL-3.0-or-later.
|