feat: match any touch screen for libinput, not just Wacom "Finger" devices

Drop the MatchProduct "Finger" restriction from the xorg libinput rule,
leaving only MatchIsTouchscreen "on". MatchIsTouchscreen is set by udev
from hardware capabilities, so it matches finger touch screens of any
brand (ELAN, Goodix, eGalax, Wacom, etc.) while never matching keyboards,
mice, or pen/stylus digitizers (which are tagged as tablets, not
touchscreens). This makes the script work on any touch hardware without
hardcoding device names. Behavior on existing Wacom machines is unchanged
since their finger device matched either way.

https://claude.ai/code/session_01EyjEQLWbTXcZgbMDarf7NU
This commit is contained in:
Claude
2026-06-16 15:05:28 +00:00
parent 66a633b22c
commit 27aaf5a15c
2 changed files with 12 additions and 12 deletions
+1 -1
View File
@@ -1088,7 +1088,7 @@ See the LICENSE file in the repository for full terms.
**Recent Updates (v1.0.3):**
- **Touch input fix (keyring):** added `--password-store=basic` to the Electron launch. Under LightDM autologin the GNOME keyring stays locked; when Chromium accessed it, the keyring unlock dialog grabbed all keyboard/touch input — the kiosk rendered fine but ignored every tap and keypress. This flag stops Electron from using the keyring, so the dialog never appears.
- **Touch gesture fix (libinput):** finger touch screens are now forced to the `libinput` driver via `/etc/X11/xorg.conf.d/99-finger-libinput.conf`. The `wacom` driver only does single-touch pointer emulation and never passes real multitouch to Chromium, so 1-finger and 2-finger swipe gestures could not fire. libinput delivers proper multitouch; the pen/stylus stays on the wacom driver.
- **Touch gesture fix (libinput):** any touch screen is now forced to the `libinput` driver via `/etc/X11/xorg.conf.d/99-finger-libinput.conf` (matched by hardware capability, so it works on any brand and never affects keyboards, mice, or the pen/stylus). Some drivers — notably `wacom` only do single-touch pointer emulation and never pass real multitouch to Chromium, so 1-finger and 2-finger swipe gestures could not fire. libinput delivers proper multitouch.
- **Upgrade reliability:** `start.sh` is now refreshed on every upgrade alongside `main.js` and `preload.js`
- **Upgrade fix:** node_modules no longer wiped during upgrade — preserves the ~120MB Electron binary so upgrades don't fail on slow/unreliable connections
- **Authelia fix:** 10-second timeout on Authelia login fetch prevents white screen when Authelia is slow to respond
+11 -11
View File
@@ -7358,17 +7358,18 @@ LAUNCHER
echo "[18/27] Configuring Openbox with AGGRESSIVE screen keep-alive..."
sudo -u "$KIOSK_USER" mkdir -p "$KIOSK_HOME/.config/openbox" "$KIOSK_HOME/.config/pulse"
# Force finger touch screens to use the libinput driver instead of wacom.
# The wacom driver does single-touch pointer emulation and does NOT pass
# real multitouch through to Chromium, so app gestures (2-finger swipe,
# 1-finger swipe) never fire. libinput delivers proper XI2 multitouch
# which Chromium turns into real JS touch events. The pen/stylus is left
# on the wacom driver (this rule only matches "Finger" touch screens).
# Force any touch screen to use the libinput driver.
# Some drivers (notably wacom) only do single-touch pointer emulation and
# never pass real multitouch through to Chromium, so app gestures (2-finger
# swipe, 1-finger swipe) never fire. libinput delivers proper XI2 multitouch
# which Chromium turns into real JS touch events, and is the correct driver
# for any touch screen. MatchIsTouchscreen is set by udev from hardware
# capabilities, so this matches finger touch screens only — never keyboards,
# mice, or the pen/stylus (those stay on their existing driver).
sudo mkdir -p /etc/X11/xorg.conf.d
sudo tee /etc/X11/xorg.conf.d/99-finger-libinput.conf > /dev/null <<'TOUCHCFG'
Section "InputClass"
Identifier "Finger touch use libinput"
MatchProduct "Finger"
Identifier "Touch screen use libinput"
MatchIsTouchscreen "on"
Driver "libinput"
EndSection
@@ -11294,15 +11295,14 @@ upgrade_kiosk() {
sudo rm -f "$config_backup"
fi
# Force finger touch screens to use libinput (proper multitouch for Chromium).
# Force any touch screen to use libinput (proper multitouch for Chromium).
# Remove the old wacom-touch override from earlier versions — it sorts after
# this file and would otherwise win and re-bind the device to the wacom driver.
sudo mkdir -p /etc/X11/xorg.conf.d
sudo rm -f /etc/X11/xorg.conf.d/99-wacom-touch.conf
sudo tee /etc/X11/xorg.conf.d/99-finger-libinput.conf > /dev/null <<'TOUCHCFG'
Section "InputClass"
Identifier "Finger touch use libinput"
MatchProduct "Finger"
Identifier "Touch screen use libinput"
MatchIsTouchscreen "on"
Driver "libinput"
EndSection