Compare commits

..
8 Commits
Author SHA1 Message Date
Felitendo e5d2481d6d chore: 1.5.4
release / Debian package (push) Failing after 14s
release / RPM package (push) Failing after 22s
release / Release and repositories (push) Skipped
release / Install from the RPM repository (push) Skipped
2026-09-24 09:47:59 +02:00
Felitendo fc9dae95f9 fix: drop the detection cache on every update 2026-09-24 09:47:57 +02:00
Felitendo dd0671440d docs: commit and push only after a local check 2026-09-24 08:42:01 +02:00
Felitendo 0b1b33ea84 docs: reword how it works 2026-09-24 08:38:06 +02:00
Felitendo e3278ecf27 chore: 1.5.3
release / Debian package (push) Failing after 15s
release / RPM package (push) Failing after 34s
release / Release and repositories (push) Skipped
release / Install from the RPM repository (push) Skipped
2026-09-24 08:25:50 +02:00
Felitendo 2401855b70 fix: keep the flag in front of a bare double dash
Discord's entry is `discord --url -- %u`. The flag went in before the
field code, which put it after the double dash, and that is where
Chromium stops reading switches and starts treating everything as an
address. The feature never came on.
2026-09-24 08:24:15 +02:00
Felitendo da291cefa5 fix: recognise Discord's bootstrap launcher
Discord no longer ships its application. /usr/bin/discord is a few lines
of shell that run updater_bootstrap, which downloads Electron into the
user's config directory on first start and execs it from there. So there
is no binary next to the launcher to find markers around, and the path it
hands over to is built out of $HOME and the version it just downloaded,
which the script reader cannot resolve. Discord came out as "not
Chromium" and was dropped from the list entirely.

The name of the bootstrap it ships is the one thing left that says
Discord, so that is the hint now.
2026-09-24 08:24:15 +02:00
Felitendo e2e05748f7 docs: explain steam and the browser flag names 2026-09-24 08:22:09 +02:00
6 changed files with 55 additions and 9 deletions

No files matched your search

+12
View File
@@ -2,6 +2,18 @@
What each release brings, newest first. The [GitHub releases](https://github.com/LoonixTools/middleclick-autoscroll/releases) add every commit that went into it. Versions before `v1.1.0` came without notes.
## v1.5.4
_2026-09-24_
A small patch. For some of you Discord was still missing after `v1.5.3`, because an old result from before the update kept it out. Every update now starts with a fresh scan, so Discord shows up again after your next login, or right away with **Re-apply everything**.
## v1.5.3
_2026-09-24_
A small patch. Discord changed the way it installs itself and slipped out of the list, so autoscroll never reached it. It is back.
## v1.5.2
_2026-09-24_
+3
View File
@@ -14,6 +14,9 @@
- Subject as short as possible. Imperative, lowercase, no trailing period.
- Body only when something genuinely cannot be inferred from the diff.
- Never add `Co-Authored-By`, "Generated with" or any other AI attribution to commits or PR descriptions.
- Do not commit or push before I have checked the changes locally and said they are fine. Then
commit the result once and push. No commits for attempts that did not work. This also goes for
releases and tags.
## Releases
+1 -1
View File
@@ -8,7 +8,7 @@
# Overridable so a packager can pass the version it is actually building
# (`make VERSION=$pkgver`). The literal below is the fallback for builds
# straight from a checkout, and is what a release tag has to carry.
VERSION ?= 1.5.2
VERSION ?= 1.5.4
PREFIX ?= /usr
DESTDIR ?=
+17 -3
View File
@@ -108,14 +108,28 @@ Press **1**. Autoscroll _✨just works✨_, like on Windows.
<details>
<summary>How it works</summary>
Chromium, Electron and CEF all have autoscroll built in, but it is off on Linux. One flag turns it on:
Chromium, Electron and CEF all have autoscroll built in. On Linux it is off, because middle click
pastes there. One flag turns it back on:
```
--enable-blink-features=MiddleClickAutoscroll
```
Setting that for every app by hand is a pain and breaks with updates, so this tool does it for you.
New apps are picked up on their own. AppImages are covered too, without unpacking or starting them.
Adding it to every app by hand is a pain, and updates can undo it. This tool does it for you:
- It finds every app built on Chromium. AppImages too, without unpacking or starting them.
- It puts the flag where the app reads it: the app's flags file, or a copy of its menu entry in
your home folder.
- It watches for new apps and covers them on their own.
- It only writes to your home folder, and `disable` puts everything back.
**Browsers** get a spelling of the flag that shows no warning bar. Brave and Helium also get their
own name for the feature. A browser ignores names it does not know.
**Steam** builds its own command line and repairs any file that looks changed. So the flag goes into
the script that starts its web helper, and the file keeps the size and date Steam expects. Steam
finds nothing to repair, and autoscroll works in the store and the library. After a Steam update,
the patch comes back on its own.
</details>
+16 -4
View File
@@ -74,7 +74,14 @@ MCA_SNAP_DIRS=(/snap /var/lib/snapd/snap)
# CHROMIUM_FLAGS and CHROME_WRAPPER earn their place: they are the variables
# the Debian, Fedora and openSUSE Chromium wrappers and Google's own Chrome
# wrapper build their command line out of, and nothing else sets them.
MCA_SCRIPT_HINTS='ELECTRON_|app\.asar|chrome-sandbox|libcef|enable-blink-features|ozone-platform-hint|CHROMIUM_FLAGS|CHROME_WRAPPER|CHROME_VERSION_EXTRA'
#
# updater_bootstrap is Discord's, and it is the only thing left that names it.
# Discord no longer ships its application: /usr/bin/discord is a few lines of
# shell that run that bootstrap, which downloads Electron into the user's
# config directory on first start and execs it from there. So there is nothing
# next to the launcher to find, and the path it hands over to is built out of
# $HOME and the version it just downloaded.
MCA_SCRIPT_HINTS='ELECTRON_|app\.asar|chrome-sandbox|libcef|enable-blink-features|ozone-platform-hint|CHROMIUM_FLAGS|CHROME_WRAPPER|CHROME_VERSION_EXTRA|updater_bootstrap'
# ---------------------------------------------------------------------------
# Desktop entries
@@ -329,9 +336,14 @@ _mca_stat_batch() {
# below it are keyed on size and mtime, so an entry for a file that has not
# changed is never looked at again. A cache written when a verdict meant
# something else (before an AppImage could come out as anything but "no")
# would therefore keep answering the old way forever. Bumping this is how such
# a cache gets dropped instead.
MCA_CACHE_FORMAT='# middleclick-autoscroll detect 2'
# would therefore keep answering the old way forever.
#
# So the version is part of it, and every update drops the cache. The rules
# change far more often than anyone remembers to bump a number by hand: v1.5.3
# taught the hint scan about Discord's launcher, and Discord stayed out of the
# list anyway, because /usr/bin/discord had not changed and its old "no" was
# still in here.
MCA_CACHE_FORMAT="# middleclick-autoscroll detect 2 $MCA_VERSION"
_mca_cache_load() {
local path stamp verdict first=1
+6 -1
View File
@@ -71,6 +71,11 @@ MCA_FEATURE_OPTS='--enable-blink-features|--enable-features'
# Where an argument has to go: after the program and its own arguments, but
# before the first field code (%U and friends) or Flatpak's @@ markers, which
# are placeholders the launcher expands rather than arguments.
#
# A bare "--" stops it too. That is where Chromium stops reading switches and
# starts treating everything as an address, so a flag put after it is read as a
# page to open and the feature never comes on. Discord's entry is exactly that
# shape: `discord --url -- %u`.
_mca_exec_insert_at() {
local rest="$1" tok idx=0
@@ -79,7 +84,7 @@ _mca_exec_insert_at() {
[[ -n $rest ]] || break
tok="${rest%% *}"
case "$tok" in
%[a-zA-Z]|@@|@@u) printf '%s\n' "$idx"; return 0 ;;
%[a-zA-Z]|@@|@@u|--) printf '%s\n' "$idx"; return 0 ;;
esac
rest="${rest:${#tok}}"
idx=$(( idx + ${#tok} ))