From 27aaf5a15cf0b4e8195884ac32baf9003afc0dbc Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 15:05:28 +0000 Subject: [PATCH] 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 --- Readme.md | 2 +- ubuntu-based-kiosk-v1.0.3.sh | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Readme.md b/Readme.md index ad45a66..bf6b214 100644 --- a/Readme.md +++ b/Readme.md @@ -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 diff --git a/ubuntu-based-kiosk-v1.0.3.sh b/ubuntu-based-kiosk-v1.0.3.sh index e04d482..bc6f723 100644 --- a/ubuntu-based-kiosk-v1.0.3.sh +++ b/ubuntu-based-kiosk-v1.0.3.sh @@ -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