Omahub
← All plugins
A

Gestures

by anel

Trackpad gestures for Hyprland: maximize-width toggle and workspace swipe, with more planned.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
86a7e27
Scanned
1 month ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs external_hosts README.md:53

    Downloads or connects to an external HTTP(S) host.

    git clone https://github.com/anelcelik/TrackpadGestureOmarchy ~/.config/omarchy/plugins/anel.gestures

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
86a7e27
Reviewed
1 month ago

The plugin is a Hyprland gesture configuration that adds trackpad gestures for workspace switching and window maximize. It uses standard Hyprland Lua API calls and contains no malicious behavior. The only external reference is a GitHub URL in the README for installation, which is not executed by the plugin.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/anelcelik/TrackpadGestureOmarchy --enable
Desktop #workspaces

Gestures

Trackpad gestures for Omarchy/Hyprland: maximize a window with a tap, swipe between workspaces, and see which one you landed on. Ships as an Omarchy shell plugin so it's discoverable via omarchy plugin list, with its actual gesture logic living in Hyprland's own Lua config (see How it works).

Features

  • Maximize width — SUPER+SHIFT + trackpad two-finger tap toggles the focused window between floating and full-width "maximized" mode. A real toggle: press again to restore the exact prior floating size/position.
  • Workspace swipe — trackpad 3-finger swipe left/right moves to the previous/next workspace by number, creating it if it doesn't exist yet. Each swipe flashes the landed-on workspace number in a small auto-dismissing popup.

Planned

  • 2-finger pinch to zoom the screen (phone-style magnifier). Registration is confirmed to work; the actual zoom logic isn't wired up yet — see the comments in hypr-bindings.lua.

Tried and dropped

A couple of ideas didn't survive real-world testing. Left in hypr-bindings.lua as comments so they aren't re-attempted blind:

  • Cycle windows while maximized via 2-finger scroll — this touchpad's scroll method claims 2 fingers for scrolling, so a 2-finger swipe never reaches Hyprland as a gesture. The horizontal-scroll bind targets (mouse_left/mouse_right) exist but don't fire for touchpad horizontal scroll on this setup either.
  • 3-finger swipe up/down for menu/minimize — worked in isolation, but real 3-finger left/right swipes aren't perfectly axis-aligned, so occasional imprecise swipes got misclassified as "down" and silently minimized whatever window was focused. Dropped rather than chase a stricter angle threshold.

Requirements

  • Omarchy on Hyprland with the Lua config layer (hl.*/o.* — the Hyprland version this was built against is 0.56.2).
  • No external packages or dependencies. Everything here uses Hyprland's built-in Lua API and Omarchy's own o.bind helper.

Installation

  1. Clone this repo into Omarchy's user plugin directory:

    git clone https://github.com/anelcelik/TrackpadGestureOmarchy ~/.config/omarchy/plugins/anel.gestures
    
  2. Enable the plugin:

    omarchy plugin enable anel.gestures
    
  3. Load the gesture bindings. This plugin does not touch your Hyprland config automatically — add this line yourself to ~/.config/hypr/bindings.lua:

    dofile(os.getenv("HOME") .. "/.config/omarchy/plugins/anel.gestures/hypr-bindings.lua")
    
  4. Reload Hyprland:

    hyprctl reload
    

    Then check hyprctl configerrors comes back empty.

Removal

  1. Remove the dofile(...) line you added to ~/.config/hypr/bindings.lua, then hyprctl reload.

  2. Disable and remove the plugin:

    omarchy plugin disable anel.gestures
    omarchy plugin remove anel.gestures
    

Customizing

  • Flip the swipe direction: in hypr-bindings.lua, swap the two hl.gesture({ fingers = 3, direction = "left"/"right", ... }) bodies.
  • Change the maximize gesture's key combo: edit the o.bind(...) call at the top of hypr-bindings.lua — see the Hyprland wiki for bind syntax.
  • Change the popup style/timeout: edit the hl.notification.create({...}) call in swipe_to_workspace.

How it works

Hyprland keybindings and gestures are owned by Hyprland's own Lua config, not the Omarchy shell — so the actual logic lives in hypr-bindings.lua, loaded via dofile(...) from ~/.config/hypr/bindings.lua (step 3 of Installation). manifest.json + Service.qml register this as a proper Omarchy shell plugin (visible in omarchy plugin list) and are the home for any future shell-side feature (an OSD toast, a bar widget, etc.) — a shell-side feature would get its own entry point in manifest.json alongside "service".

License

MIT