Swaystroke
A modular Python-based gesture recognition tool for Sway/SwayFX (using GTK Layer Shell and i3ipc).
Architecture
config.py: Settings like the trigger button.gesture.py: Handles point data and normalization.gui.py: Native GTK3 Layer Shell overlay for drawing gestures.storage.py: Manages saving and loading gestures togestures.json.recognizer.py: Compares new gestures against stored templates.focus.py: Usesi3ipcto find and focus the correct window under the mouse before executing commands.main.py: Entry point for recording, listening, and debugging.visualizer.py: Imported comparison tool to see gesture matches.
Prerequisites
- Python 3
python-i3ipc,python-gi,python-xlib,pycairogtk-layer-shelllibrary
Usage
Record a gesture
swaystroke record [--global] [--app-id ID] [--app-class CLASS] [--get-app-id-or-class] <name> [command]
Click and drag to draw your gesture in the transparent overlay. Options:
--global: Record the gesture to be available globally.--app-id ID: Bind the gesture to a specific Wayland application ID.--app-class CLASS: Bind the gesture to a specific XWayland window class.--get-app-id-or-class: Automatically get the app ID or class from the window under the gesture.
If no options are provided, it defaults to a global gesture.
Listen for gestures
swaystroke listen
Draw your gesture. The tool will identify the window under your starting point, focus it, and run the command.
List gestures
swaystroke list
swaystroke list-gui
Show all recorded gestures either in an ASCII table or a scrollable graphical window.
Show a specific gesture
swaystroke show "close"
Open the visualizer to display the recorded path for a specific gesture.
Delete a gesture
swaystroke delete "close"
Delete a recorded gesture by its name.
Debug gestures
swaystroke debug
Draw a gesture to see a side-by-side comparison with the closest match.
Generate config
swaystroke generate-config
Generate the default configuration file in the config directory.
Metadata
Release files for swaystroke 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| swaystroke-0.0.2.tar.gz | 15.7 kB | Without provenance | Details for swaystroke-0.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| swaystroke-0.0.2-py3-none-any.whl | Python 3 | none | any | Details for swaystroke-0.0.2-py3-none-any.whl |
Total release size: 33.3 kB
Release files / swaystroke-0.0.2.tar.gz
| Download URL | swaystroke-0.0.2.tar.gz |
|---|---|
| Size | 15.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d952bca3b46fd7ff10d7b52312e1185e2712f2f0b2d8b6b56714e867b0f77b62
|
|
BLAKE2b-256 checksum How to use checksums |
a1b80bb88e6c1a0df5544c363828fc9cde8ab05201bf18eab52f3384fed7abdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / swaystroke-0.0.2-py3-none-any.whl
| Download URL | swaystroke-0.0.2-py3-none-any.whl |
|---|---|
| Size | 17.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b0549ba9af1d54caeaa1237bfc2d9d71eeaf2b4a33a63725747aed610a4be6b3
|
|
BLAKE2b-256 checksum How to use checksums |
ec73af97dfdf8c7658b75588793d18f91b10b119afbdc2c1a59f73cc2eabb153
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Security for swaystroke 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.