Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5d2481d6d | ||
|
|
fc9dae95f9 | ||
|
|
dd0671440d | ||
|
|
0b1b33ea84 | ||
|
|
e3278ecf27 | ||
|
|
2401855b70 | ||
|
|
da291cefa5 | ||
|
|
e2e05748f7 |
No files matched your search
@@ -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.
|
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
|
## v1.5.2
|
||||||
|
|
||||||
_2026-09-24_
|
_2026-09-24_
|
||||||
|
|||||||
@@ -14,6 +14,9 @@
|
|||||||
- Subject as short as possible. Imperative, lowercase, no trailing period.
|
- Subject as short as possible. Imperative, lowercase, no trailing period.
|
||||||
- Body only when something genuinely cannot be inferred from the diff.
|
- 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.
|
- 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
|
## Releases
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
# Overridable so a packager can pass the version it is actually building
|
# Overridable so a packager can pass the version it is actually building
|
||||||
# (`make VERSION=$pkgver`). The literal below is the fallback for builds
|
# (`make VERSION=$pkgver`). The literal below is the fallback for builds
|
||||||
# straight from a checkout, and is what a release tag has to carry.
|
# straight from a checkout, and is what a release tag has to carry.
|
||||||
VERSION ?= 1.5.2
|
VERSION ?= 1.5.4
|
||||||
|
|
||||||
PREFIX ?= /usr
|
PREFIX ?= /usr
|
||||||
DESTDIR ?=
|
DESTDIR ?=
|
||||||
|
|||||||
@@ -108,14 +108,28 @@ Press **1**. Autoscroll _✨just works✨_, like on Windows.
|
|||||||
<details>
|
<details>
|
||||||
<summary>How it works</summary>
|
<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
|
--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.
|
Adding it to every app by hand is a pain, and updates can undo it. This tool does it for you:
|
||||||
New apps are picked up on their own. AppImages are covered too, without unpacking or starting them.
|
|
||||||
|
- 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>
|
</details>
|
||||||
|
|
||||||
|
|||||||
+16
-4
@@ -74,7 +74,14 @@ MCA_SNAP_DIRS=(/snap /var/lib/snapd/snap)
|
|||||||
# CHROMIUM_FLAGS and CHROME_WRAPPER earn their place: they are the variables
|
# CHROMIUM_FLAGS and CHROME_WRAPPER earn their place: they are the variables
|
||||||
# the Debian, Fedora and openSUSE Chromium wrappers and Google's own Chrome
|
# the Debian, Fedora and openSUSE Chromium wrappers and Google's own Chrome
|
||||||
# wrapper build their command line out of, and nothing else sets them.
|
# 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
|
# 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
|
# 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
|
# 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")
|
# 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
|
# would therefore keep answering the old way forever.
|
||||||
# a cache gets dropped instead.
|
#
|
||||||
MCA_CACHE_FORMAT='# middleclick-autoscroll detect 2'
|
# 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() {
|
_mca_cache_load() {
|
||||||
local path stamp verdict first=1
|
local path stamp verdict first=1
|
||||||
|
|||||||
+6
-1
@@ -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
|
# 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
|
# before the first field code (%U and friends) or Flatpak's @@ markers, which
|
||||||
# are placeholders the launcher expands rather than arguments.
|
# 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() {
|
_mca_exec_insert_at() {
|
||||||
local rest="$1" tok idx=0
|
local rest="$1" tok idx=0
|
||||||
|
|
||||||
@@ -79,7 +84,7 @@ _mca_exec_insert_at() {
|
|||||||
[[ -n $rest ]] || break
|
[[ -n $rest ]] || break
|
||||||
tok="${rest%% *}"
|
tok="${rest%% *}"
|
||||||
case "$tok" in
|
case "$tok" in
|
||||||
%[a-zA-Z]|@@|@@u) printf '%s\n' "$idx"; return 0 ;;
|
%[a-zA-Z]|@@|@@u|--) printf '%s\n' "$idx"; return 0 ;;
|
||||||
esac
|
esac
|
||||||
rest="${rest:${#tok}}"
|
rest="${rest:${#tok}}"
|
||||||
idx=$(( idx + ${#tok} ))
|
idx=$(( idx + ${#tok} ))
|
||||||
|
|||||||
Reference in new issue
Block a user