Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

PulseGesture

简体中文

Turn mouse gestures into shortcuts, commands, and repeatable desktop workflows.

PulseGesture is a free desktop utility for Windows, macOS, and Linux. Hold your chosen mouse button, draw a gesture, and let PulseGesture perform the action you assigned to it.

Highlights

  • Make gestures your own — record multiple samples for each gesture so natural variations are easy to use.
  • Choose how gestures start — use the left, middle, or right mouse button, with optional Ctrl, Alt, Shift, or Meta modifiers.
  • Run keyboard workflows — send a shortcut or a sequence of shortcuts, with an optional delay before each step.
  • Launch custom commands — connect a gesture to a trusted shell command for workflows that go beyond keyboard shortcuts.
  • Choose the execution target — run actions against the current focus or the window beneath the pointer when the gesture starts.
  • Adapt actions to each app — let the same gesture run a different shortcut, command, or no action in selected applications.
  • See what you draw — customize the trail color, see a matched gesture name while drawing, and use direction arrows in gesture previews.
  • Manage everything in one place — use the local dashboard to create, edit, record, and remove gestures.
  • Stay out of the way — pause recognition when needed, open the dashboard from the system tray, and optionally launch PulseGesture when you sign in.
  • Use your preferred language — the management dashboard is available in English and Simplified Chinese.

Supported platforms

Platform Architectures Packages
Windows x86_64, ARM64 Standalone executable in a ZIP archive
macOS x86_64, Apple silicon Standalone executable and .app bundle
Linux x86_64, ARM64 Standalone executable and AppImage

Download

Download the build for your platform from the latest PulseGesture release.

PulseGesture is free to use and does not require registration.

Quick start

  1. Download and extract the package for your operating system and processor architecture.
  2. Start PulseGesture. On a normal launch, the local management dashboard opens in your default browser.
  3. Choose the mouse button and optional modifiers that will start a gesture.
  4. Add a gesture, give it a name, and record one or more samples.
  5. Assign a keyboard sequence or a trusted command. If needed, add application-specific actions for the same gesture.
  6. Choose whether actions follow the current focus or the window beneath the pointer when a gesture starts.
  7. Hold the trigger, draw the gesture, and release the button to run the action.

If PulseGesture is already running, launching it again opens the existing dashboard instead of starting another copy.

Execution targets and application actions

PulseGesture provides two execution modes:

  • Current Focus runs the gesture's enabled global action in whichever window is focused when the action executes.
  • Gesture Start Window keeps the action associated with the window beneath the pointer when drawing begins. If that window is no longer available, PulseGesture does nothing instead of sending the action to another window.

In Gesture Start Window mode, a gesture can have application-specific actions in addition to its global action. An application action can run its own keyboard sequence or command, or explicitly do nothing. When no application action matches, the enabled global action is used.

Target-aware commands receive the captured window context through environment variables:

Variable Description
PULSE_GESTURE_CONTEXT_VERSION Context format version; currently 1
PULSE_GESTURE_WINDOW_BACKEND Platform backend: windows, macos, x11, kwin, or gnome
PULSE_GESTURE_WINDOW_ID Opaque platform-specific window identifier
PULSE_GESTURE_PID Process ID when available
PULSE_GESTURE_APP_ID Stable application identity when available
PULSE_GESTURE_APP_ID_KIND Identity type such as bundle_id, desktop_id, wm_class, package_id, or executable_path
PULSE_GESTURE_APP_NAME Application display name when available
PULSE_GESTURE_EXECUTABLE Executable path when available
PULSE_GESTURE_WINDOW_TITLE Window title when available

Treat PULSE_GESTURE_WINDOW_ID as an opaque string and interpret it together with PULSE_GESTURE_WINDOW_BACKEND.

Upgrading

Existing configurations are upgraded automatically. Before rewriting an older configuration, PulseGesture preserves a versioned backup such as config.json.v3.bak or config.json.v4.bak beside the active configuration.

Platform notes

Windows

No advance configuration is required. Download, extract, and start PulseGesture. The release build runs quietly without an extra console window, and you can manage it from the dashboard or system tray.

macOS

No advance configuration is required. Download and start the .app; macOS will guide you through any permission confirmation needed on first launch. The application then runs as a menu-bar utility.

Linux

Linux requires one-time system preparation before the first launch. The steps below apply to both X11 and Wayland sessions on Debian/Ubuntu-based distributions. Wayland requires XWayland for the visible gesture trail. Gesture Start Window mode additionally supports native windows on X11, KDE Plasma 6 Wayland, and GNOME Shell 45–50 Wayland.

On KDE Plasma 6, PulseGesture configures its desktop integration automatically when Gesture Start Window mode is enabled. On GNOME Shell 45–50, the first enable may require one sign-out and sign-in. Other Wayland desktops can use Current Focus mode when the XWayland display requirements are met, but Gesture Start Window mode is not currently supported there.

1. Install runtime tools

sudo apt update
sudo apt install xwayland xdg-utils unzip

On a native X11 session, xdg-utils and unzip are the required tools; installing xwayland as shown above is harmless and makes the same setup usable if you later switch to Wayland.

2. Add your user to the input group

getent group input >/dev/null || sudo groupadd --system input
sudo usermod -aG input "$USER"

The input group has broad access to keyboard and mouse devices and can expose sensitive input. Add only trusted users to this group.

3. Enable uinput

Load the kernel module now and configure it to load automatically after future boots:

sudo modprobe uinput
echo uinput | sudo tee /etc/modules-load.d/pulse-gesture.conf >/dev/null
ls -l /dev/uinput

4. Install the udev rules

Create /etc/udev/rules.d/69-pulse-gesture.rules:

sudo tee /etc/udev/rules.d/69-pulse-gesture.rules >/dev/null <<'EOF'
ACTION!="remove", SUBSYSTEM=="input", KERNEL=="event*", ATTRS{phys}=="pulse-gesture/*", ATTRS{id/bustype}=="0003", ENV{ID_BUS}="usb"
ACTION!="remove", SUBSYSTEM=="input", KERNEL=="event*", ATTRS{phys}=="pulse-gesture/*", ATTRS{id/bustype}=="0005", ENV{ID_BUS}="bluetooth"
EOF

Create /etc/udev/rules.d/99-pulse-gesture.rules:

sudo tee /etc/udev/rules.d/99-pulse-gesture.rules >/dev/null <<'EOF'
KERNEL=="event*", SUBSYSTEM=="input", MODE="0660", GROUP="input"
KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
EOF

Reload the rules:

sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=input --action=change
sudo udevadm trigger --subsystem-match=misc --action=change
sudo udevadm settle

5. Restart the session

The new group membership does not take effect in the current login session. Rebooting is the most reliable option:

sudo reboot

6. Check your display session

For X11:

printf 'session=%s\ndisplay=%s\n' "$XDG_SESSION_TYPE" "$DISPLAY"

XDG_SESSION_TYPE should report x11, and DISPLAY must not be empty.

For Wayland:

printf 'session=%s\nwayland=%s\ndisplay=%s\n' \
  "$XDG_SESSION_TYPE" "$WAYLAND_DISPLAY" "$DISPLAY"
pgrep -a Xwayland || true

XDG_SESSION_TYPE should report wayland; both WAYLAND_DISPLAY and DISPLAY must be present, and XWayland should be running or available to start on demand.

If PulseGesture reports cannot connect to X11, sign out of the desktop session and sign in again. If the error remains in a Wayland session, use an X11 desktop session. Always start PulseGesture as your normal user—do not run it with sudo.

Actions and safety

Custom commands run with the permissions of your current user. Only add commands you understand and trust. Review a gesture carefully before assigning it to destructive or security-sensitive operations.

Feedback

Questions, bug reports, and feature suggestions are welcome in GitHub Issues.

About

A free cross-platform desktop utility that turns mouse gestures into keyboard shortcuts, commands, and repeatable workflows on Windows, macOS, and Linux.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors