GTK4 Wacom utility with Wayland pad daemon
Project description
Wacom Utility (GTK4 + Wayland)
Modernized Wacom utility with:
- GTK4 GUI (
wacom-utility) - Wayland backend via
evdev + ydotool(wacom-wayland-pad-daemon) - X11 fallback for
xsetwacomwhere available
Current Architecture
- Frontend:
wacom-utility- Device list, pad layout, mapping UI
- Writes Wayland mappings to
~/.wacom_utility_wayland.json
- Backend daemon:
wacom-wayland-pad-daemon- Reads pad events from
evdev - Executes mapped actions through
ydotool - Supports strip scrolling (
EV_ABS) with threshold/smoothing/multiplier
- Reads pad events from
Dependencies
Common
- Python 3.10+
python3-gi/ GTK4 runtimepython3-cairopython3-evdev
Wayland (sway/wlroots path)
ydotoolydotooldrunning in user sessionswaymsg(for output mapping in GUI)
X11
xsetwacom(wacom-tools)
Run
PyPI-style user install:
python3 -m pip install --user .
This installs console entry points to:
~/.local/bin/wacom-utility~/.local/bin/wacom-wayland-pad-daemon
The Python package and bundled UI/images/XML are installed under the user site-packages directory, typically:
~/.local/lib/python3.x/site-packages/wacom_utility
That is the standard Python packaging layout. A normal pip install --user
does not install package data to ~/.local/share.
Run after user install:
wacom-utility
Quick environment check:
wacom-utility --check
Source checkout without installation:
PYTHONPATH=src python3 -m wacom_utility.wacom_utility
Wayland Mapping Flow
- Open GUI and configure pad buttons (Pad/Edit or Mapping tab).
- Settings are stored in:
~/.wacom_utility_wayland.json
- Start daemon:
wacom-wayland-pad-daemon
Source checkout without installation:
PYTHONPATH=src python3 -m wacom_utility.wayland_pad_daemon
Strip scroll tuning
~/.wacom_utility_wayland.json supports:
{
"strip_scroll": {
"enabled": true,
"threshold": 150,
"multiplier": 3,
"smoothing": 0.4
}
}
Future enhancement note:
- The current Wayland touch strip behavior applies pressure-based acceleration by default for scroll actions.
- If finer control is needed later, add dedicated left/right touch strip tuning
controls in the GUI for pressure threshold and multiplier instead of relying
only on the shared
strip_scrolldefaults.
systemd --user (Auto-start daemon)
For PyPI-style user installs, the repo user unit targets:
%h/.local/bin/wacom-wayland-pad-daemon/usr/bin/ydotoold --socket-path=%t/.ydotool_socket --socket-perm=0660
Service files included:
%h/.local/bin/wacom-wayland-pad-daemonsystemd/user/wacom-wayland-pad-daemon.servicesystemd/user/ydotoold.service
Both the repo user unit and the RPM unit are rendered from the shared template:
systemd/wacom-wayland-pad-daemon.service.insystemd/ydotoold.service.in
User install flow:
python3 -m pip install --user .
mkdir -p ~/.config/systemd/user
cp systemd/user/wacom-wayland-pad-daemon.service ~/.config/systemd/user/
cp systemd/user/ydotoold.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ydotoold.service wacom-wayland-pad-daemon.service
For RPM installs, the packaged user unit targets the system wrapper:
/usr/bin/wacom-wayland-pad-daemon/usr/bin/ydotoold --socket-path=%t/.ydotool_socket --socket-perm=0660
RPM install:
systemctl --user daemon-reload
systemctl --user enable --now ydotoold.service wacom-wayland-pad-daemon.service
Source checkout:
Do not use the bundled user unit directly from a source checkout unless you have
already installed the package to ~/.local/bin. Otherwise run the daemon
directly from the repo:
PYTHONPATH=src python3 -m wacom_utility.wayland_pad_daemon
Check status/logs:
systemctl --user status wacom-wayland-pad-daemon.service
journalctl --user -u ydotoold.service -f
journalctl --user -u wacom-wayland-pad-daemon.service -f
Disable:
systemctl --user disable --now wacom-wayland-pad-daemon.service ydotoold.service
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wacom_utility-0.1.4.tar.gz.
File metadata
- Download URL: wacom_utility-0.1.4.tar.gz
- Upload date:
- Size: 919.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f208f7157f4b10e472f787b42bd280909412835c42e612784ce06806a5a58fee
|
|
| MD5 |
87a2595084cfd59e6a6cc96ac64c3d3e
|
|
| BLAKE2b-256 |
8eee002ab1d4c6997debf96c6f4084647dcbbd7d3a0f9621ce5e070a92d194b5
|
File details
Details for the file wacom_utility-0.1.4-py3-none-any.whl.
File metadata
- Download URL: wacom_utility-0.1.4-py3-none-any.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cc789c743f35a896117248a9fc25d43a8548d3f366a5670bdc23bb489b09b82
|
|
| MD5 |
20c49a3236f43c15d2e912b086b883e0
|
|
| BLAKE2b-256 |
55feaf5b0515b998efd8c171b0e8d0cc1f086fc249dbbce3787b7763f0e6fdf8
|