Getting a Reliable Touchpad and Smooth Gestures on elementary OS
Many elementary OS users quickly fall for the clean Pantheon desktop, then realise the out-of-the-box experience can fall short when the touchpad acts up. Touchpad quirks are particularly common on Lenovo, HP, Dell, and ASUS laptops, and the symptoms range from a jumpy cursor to gestures that simply refuse to register. The good news is that almost every trackpad problem on this distribution can be fixed from the terminal, without reaching for a different desktop environment.
Most of the magic happens through libinput, the input handling library that elementary OS inherited from upstream GNOME. Because Pantheon reuses much of the same settings backend, the tools GNOME users rely on are equally valid here. That means a small amount of dconf editing, the occasional udev rule, and a helper like Touchégg for richer gesture support is usually enough to get the device behaving the way you want.
Before diving into configuration, it helps to know what your hardware actually reports. A quick identification step saves hours of guessing, particularly when comparing notes in Australian Linux forums where everyone from students at a Brisbane uni library to remote engineers working off a verandah in regional Victoria relies on a mix of Synaptics, ELAN, and Goodix hardware. With that groundwork in place, fixing tap-to-click, two-finger scroll, and custom gestures becomes a matter of matching the right driver layer to the right knob.
Confirming hardware detection and driver stacks
The first step in any trackpad troubleshooting session is to find out which device the kernel actually sees. Open a terminal and run xinput list or, on newer installs using Wayland by default, libinput list-devices. The output lists every pointer device the system recognises, including the touchpad, a stylus if one is attached, and occasionally a redundant PS/2 entry that can confuse things on older ThinkPads.
Look at the device name carefully. Names containing "SynPS/2", "ELAN", or "PIXA3854" give away the silicon vendor and let you match the right driver quirks. Many laptops sold at Australian retailers such as JB Hi-Fi ship with ELAN or Goodix hardware, and a few bargain units from Aldi's tech aisle have surfaced with oddball identifiers that need extra kernel modules. Knowing exactly what you have is half the battle.
If the touchpad does not appear at all, the laptop may have booted with i2c-hid disabled. Run sudo dmesg | grep -i i2c, and on a Surface Pro or a Yoga model you may need to enable the relevant kernel parameter at boot. Once the device is visible, cat /proc/bus/input/devices confirms whether the kernel has bound it to the libinput driver, which is the desired outcome for almost every modern setup.
Working with libinput and the GNOME settings backend
elementary OS uses the same input stack as GNOME Shell, so libinput's settings live inside dconf. The Pantheon Switchboard does not currently expose a "Mouse & Touchpad" panel as fully featured as GNOME's, which is why most configuration ends up happening through the gsettings command line. Run gsettings list-recursively org.gnome.desktop.peripherals.touchpad to see every key the system understands, and gsettings list-keys org.gnome.desktop.peripherals.touchpad for a shorter summary.
The schema you will spend most time in is org.gnome.desktop.peripherals.touchpad, with tap-to-click, two-finger-scrolling, and edge-scrolling being the trio that fixes the majority of complaints. Setting them is as simple as gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true. Because Pantheon reads these same values, the change takes effect immediately without logging out.
For deeper control, org.gnome.desktop.peripherals.touchpad exposes a speed key, a disable-while-typing toggle, and a natural-scroll boolean. The speed slider maps roughly to the older Synaptics MinSpeed and MaxSpeed pair, so a value around -0.5 feels close to what most Australians are used to after a decade on macOS or Windows hardware bought from a typical suburban retailer. Always check the result with a quick test rather than relying on the number alone.
Resolving tap-to-click, stuck cursor, and jump problems
Tap-to-click that stops working after an update is one of the most reported issues in the elementary OS community. The usual culprit is a dconf value that has reverted to its default during a system upgrade, often because a Pantheon or gala rebuild reset the user schema. Re-enabling it is a one-liner: gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true followed by gsettings set ... tap-and-drag true for the heavier "tap and lift" behaviour some users prefer.
A jumpy or stuck cursor usually points to a finger-detection problem on the touchpad surface, or to a noisy capacitive sensor near a power brick. If you tend to work from a kitchen table with a phone charger or a third-party USB-C hub next to the laptop, try unplugging them one at a time. The cheap no-name chargers sold at weekend markets can radiate enough noise to confuse ELAN sensors, and the issue disappears the moment the offending device is removed.
For persistent jumps, lowering pointer speed and enabling palm rejection makes a real difference. Set gsettings set org.gnome.desktop.peripherals.touchpad speed -0.7 and turn on disable-while-typing. If the cursor still leaps when you brush the pad with the heel of your hand, run journalctl -b | grep -i touchpad to see whether spurious events are being logged, which can indicate a hardware fault rather than a software one.
Re-enabling two-finger and edge scrolling
Two-finger scrolling is enabled by default in elementary OS, but it can mysteriously switch off after installing a third-party desktop or a custom compositor. A quick gsettings get org.gnome.desktop.peripherals.touchpad two-finger-scrolling will tell you the current state, and gsettings set ... true will bring it back. Edge scrolling, the older style where you run a finger down the right-hand side of the pad, lives under edge-scrolling and is occasionally preferred by long-time ThinkPad users who do not want to relearn muscle memory.
If scrolling feels inverted compared to what you expect, flip natural-scroll to true. New laptops from local vendors tend to ship with natural scrolling baked into the firmware, so users upgrading from a recent machine often feel like the desktop is "the wrong way around" until they adjust the setting. The change is immediate and applies across every app, including the native Files manager, Epiphany, and any third-party Flatpak installed from Flathub.
A third knob worth knowing is org.gnome.desktop.peripherals.touchpad.scroll-method, which accepts two-finger-scrolling, edge-scrolling, button-scrolling, or disabled. Some users with a documented RSI find that combining a low speed value with a deliberate edge-scrolling setup reduces finger strain during long days at a desk. Once configured, the change persists across reboots and survives the typical round of system updates pushed through AppCenter.
Adding multi-finger gestures through Touchégg and Pantheon
Out of the box, Pantheon only supports a handful of gestures: two-finger scroll, three-finger swipe up to reveal the workspace overview, and pinch-to-zoom in supported apps. Users who want macOS-style four-finger swipes, custom command triggers, or app switching need Touchégg, a daemon that sits on top of libinput and exposes a richer gesture vocabulary. Install it from the developer's PPA or build it from source, then add touchegg to your startup applications so it runs every time you log in.
Touchégg reads a YAML configuration file located at ~/.config/touchegg/touchegg.yml. A minimal config that adds three-finger swipes for virtual desktop switching, four-finger pinches for showing the desktop, and three-finger taps to open the app launcher is enough for most people. Each gesture can be bound to a keyboard shortcut, a dbus-send call, or a custom shell script, which means you can chain together actions like "swipe up with three fingers to open Files in the home directory" without writing a line of GTK code.
A common gotcha on elementary OS is that Touchégg and the Pantheon window manager occasionally race for the same swipe events. The fix is to give Touchégg a small startup delay so Pantheon can register its own gestures first, then load Touchégg with sleep 2 && touchegg --daemon in your autostart entry. Once that sequencing is in place, gestures feel snappy and do not double-fire, which is the kind of polish users working through the long summer arvo at a Melbourne coworking space tend to notice straight away.
Palm rejection, disable-while-typing, and sensitivity
Palm rejection is the unsung hero of touchpad comfort on a clamshell laptop. elementary OS exposes a basic form of it through disable-while-typing, which tells libinput to ignore touch input for around a second after the last keystroke. Enable it with gsettings set org.gnome.desktop.peripherals.touchpad disable-while-typing true. The default delay of 500 ms is fine for most typists, but heavy keyboard users can stretch it by editing the libinput device quirks file in /etc/libinput/.
For more granular control, a per-device quirks file lets you tune palm pressure thresholds, ignore palm contact by size, and lower sensitivity near the bottom edge of the pad. A typical entry looks like [ELAN1200:00 04F3:3025] followed by AccelSpeed=0.4 and PalmPressure=400. The exact numbers depend on the hardware revision, and the libinput measure tool is a handy way to confirm what your device actually reports before committing to values.
Sensitivity is closely tied to the speed key, but two related settings also matter: accel-profile and the left-handed toggle. Setting gsettings set org.gnome.desktop.peripherals.touchpad left-handed 'mouse' rotates the primary button mapping, which is a small thing but it makes a real difference for left-handed users who have been quietly putting up with awkward ergonomics for years. Combined, these settings let the touchpad feel calibrated rather than tolerated.
Persistent configuration with dconf, udev rules, and startup scripts
Once you have a configuration that works, lock it in. dconf changes survive reboots automatically, but if you manage multiple laptops or want the same setup on a fresh install, dump the current state with dconf dump /org/gnome/desktop/peripherals/touchpad/ > touchpad.conf and load it elsewhere with dconf load /org/gnome/desktop/peripherals/touchpad/ < touchpad.conf. Keeping that file under version control is a cheap way to recover after a reinstall or to share settings with a colleague interstate.
Hardware-specific tweaks belong in /etc/libinput/local-overrides.quirks, which is read by the libinput daemon at boot. Rules placed there apply before any user setting, so they survive user logins, sudo sessions, and Pantheon restarts. For users who frequently swap between a laptop and a USB-connected external trackpad, a matching udev rule that toggles a dconf key on plug-in makes the transition feel seamless.
For the rest, a small ~/.config/autostart/touchpad-tweaks.desktop entry is enough. Point it at a script that re-applies any dconf values you care about, then start Touchégg with a short delay. That combination is what experienced elementary OS users in tech communities from Perth to Hobart tend to recommend, because it survives kernel upgrades, AppCenter updates, and the occasional experiment with a different desktop session.
The practical takeaway from all of this is simple: a flaky touchpad on elementary OS is almost always a configuration problem rather than a hardware fault, and the fix is usually under fifteen minutes of work. Start by confirming libinput is in charge, then move methodically through tap-to-click, scrolling, and gestures until every swipe and scroll feels deliberate. With the right dconf values, a Touchégg config, and a small set of persistent overrides, the trackpad becomes one less thing to think about, which is exactly the kind of quiet reliability a clean desktop like Pantheon is designed to deliver.