PipeWire 0.3 & C23 Native Architecture

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.

Zero Root Daemon
1% Minimum Brightness Safety
KDE Plasma & FreeDesktop OSD
Wayland & X11 Ready

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.

Virtual 3-Finger Trackpad
SIMULATOR ACTIVE
AXIS: IDLE
Click & drag vertically or horizontally

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
Debian Package (.deb) x86_64 / amd64 architecture
~290 KB Download .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
Universal Archive (.tar.gz) Standalone installer for all Linux distros

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.

Preview: ~/.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