Fluid Touchpad Gestures for Linux
Control system volume and screen brightness instantly with natural 3-finger swipes. Zero root privileges required. Universal standalone installer and Debian package.
Touchpad Gesture Simulator
Drag on the virtual trackpad below to test the directional gesture engine. Vertical swipes adjust audio volume; horizontal swipes control screen brightness.
Built for Modern Linux Desktops
Engineered for low latency, zero daemon privilege escalation, and seamless Wayland/X11 compatibility.
C23 Native Backend
Direct low-level integration with libinput and libudev compiled with C23 standard guarantees sub-millisecond response latency.
Native PipeWire 0.3
Interfaces directly with your session's PipeWire audio server. Controls the default output sink volume with smooth linear or exponential scaling.
1% Minimum Brightness Floor
Safeguards against total screen blackout by strictly clamping display backlight adjustments to a safe minimum of 1% (0.01).
Zero Root Daemon
Runs strictly inside your unprivileged user session. Automatically managed as a standard systemd --user unit with udev session ACLs.
Axis Locking & Smoothing
Calculates gesture vector angles and locks to the dominant axis after a configurable threshold, completely preventing accidental volume jumps while adjusting brightness.
Zero-Downtime Updates
Supports instant in-place upgrades. Running daemons automatically reload configuration and hot-restart without terminating existing user desktop sessions.
Installation & Updates
Choose the installation method suited for your Linux distribution.
Recommended for Ubuntu, Debian, Pop!_OS, Linux Mint
Standard Debian package handling system libraries, Python virtualenv in /opt/fingerswipe, systemd unit, and udev rules.
# 1. Download and install / update .deb package
sudo apt install ./fingerswipe_1.1.0_amd64.deb
# 2. Enable & start user service (first-time install only)
systemctl --user enable --now fingerswipe.service
# To update in the future, simply re-run:
sudo apt install --reinstall ./fingerswipe_1.1.0_amd64.deb
Compatible with Arch Linux, Fedora, RHEL, openSUSE, Void, Alpine
Distribution-agnostic standalone archive bundle containing compiled shared libraries, standalone installer, udev rules, and auto-update detection.
# 1. Extract and install
tar -xzf fingerswipe-1.1.0-linux-x86_64.tar.gz
cd fingerswipe-1.1.0-linux-x86_64
sudo ./install.sh
# 2. Enable & start user service (first-time install only)
systemctl --user daemon-reload
systemctl --user enable --now fingerswipe.service
# To update in the future, extract new version and run:
sudo ./install.sh --update
Compile & Install from Git Repository
Requirements: CMake 3.28+, C23 compiler (GCC 14+ / Clang 18+), Python 3.13, uv, libinput-dev, libudev-dev, libpipewire-0.3-dev.
# 1. Clone repository
git clone https://github.com/deekshithvodela/FingerSwipe.git
cd FingerSwipe
# 2. Build C23 library & Python wheel
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
uv build
# 3. Install system-wide
sudo cmake --install build
sudo ldconfig
sudo uv venv --python 3.13 /opt/fingerswipe
sudo uv pip install --python /opt/fingerswipe/bin/python dist/*.whl
sudo /opt/fingerswipe/bin/python install/install.py --prefix /usr
# 4. Reload rules & start daemon
sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input
systemctl --user daemon-reload
systemctl --user enable --now fingerswipe.service
Visual Configurator
Tune smoothing, sensitivity curves, and axis locking thresholds. Copy the generated YAML directly into your config file.
~/.config/fingerswipe/config.yaml
engine:
dead_zone: 0.00
smoothing: 1.00
sensitivity: 1.00
curve: linear
axis_lock_threshold: 2.0
volume:
enabled: true
axis: vertical
minimum: 0.0
maximum: 1.0
step: 0.01
threshold: 4.0
brightness:
enabled: true
axis: horizontal
minimum: 0.01
maximum: 1.0
step: 0.01
threshold: 4.0
logging:
level: INFO
json: false