Files
Handy/docs/troubleshooting/ubuntu-26-04-gnome-wayland

Handy on Ubuntu 26.04 GNOME Wayland

Tested on Ubuntu 26.04.1 LTS, GNOME Wayland, Handy 0.9.8.

The fix is to use ydotool for typing and handy_keys for shortcuts.

Note: Run commands one by one in terminal

1. Check Wayland and uinput

echo "$XDG_SESSION_TYPE"
id
ls -l /dev/uinput
grep -R 'uinput' /etc/udev/rules.d /usr/lib/udev/rules.d 2>/dev/null

You should be using Wayland, be in the input group, and have /dev/uinput owned by root:input with mode 0660. Ubuntu provides the required udev rule in 80-uinput.rules.

If you are not in input:

sudo usermod -aG input "$USER"

Log out and back in after adding the group.

2. Install and test ydotool

sudo apt install ydotool
systemctl --user start ydotool
systemctl --user status ydotool --no-pager
ydotool type "HELLO FROM YDOTOOL"

The service should show active (running) and the test should type into the focused application.

3. Configure Handy

Edit Handy's settings with:

sed -i 's/"typing_tool": "auto"/"typing_tool": "ydotool"/' ~/.local/share/com.pais.handy/settings_store.json
sed -i 's/"keyboard_implementation": "tauri"/"keyboard_implementation": "handy_keys"/' ~/.local/share/com.pais.handy/settings_store.json

Restart Handy:

pkill handy
handy --start-hidden &

Check the Handy log for:

handy-keys manager thread started
handy-keys shortcuts initialized

Then use your existing Handy shortcut and test dictation.

4. Hide the overlay

On GNOME, the overlay is a regular window that can take the focus, so nothing is pasted. Set Overlay to None.

5. Install wl-clipboard

Handy uses wl-copy on Wayland when it is installed:

sudo apt install wl-clipboard

6. Non-QWERTY keyboard layouts

ydotool sends physical keys, so the built-in paste methods fail on layouts such as bépo or Dvorak: Ctrl+V presses the QWERTY V key, and Shift+Insert breaks while a modifier of your shortcut is still held.

Use an external script instead: it presses Ctrl and the key that types v on your layout, KEY_U (22) on bépo or KEY_DOT (52) on Dvorak (codes in /usr/include/linux/input-event-codes.h).

Create ~/.local/bin/handy-paste, here for bépo:

#!/bin/sh
printf '%s' "$1" | wl-copy
sleep 0.1
ydotool key 29:1 22:1 22:0 29:0
chmod +x ~/.local/bin/handy-paste

Set Paste Method to External Script with this path.