Skip to content

[META] Wayland: text insertion, hotkeys, and Flathub publication #1555

Description

@koloved

🎯 Goal

Consolidate all open issues and PRs related to Wayland and text insertion via hotkeys into a single tracker. Simplify the maintainer's (@cjpais) process for merging solutions and tracking problems caused by major differences between Linux distributions.

Core problem: Wayland has no single API for programmatic text insertion or registering global hotkeys. Each compositor (GNOME/Mutter, KDE/KWin, wlroots-based compositors) implements different protocols. This leads to fragmented solutions and duplicated effort.


📦 Flatpak — the universal distribution method for all distributions

Rationale

Problem Solution via Flatpak
Atomic systems (Bazzite, Fedora Atomic, SteamOS) — cannot install ydotool/wtype/dotool via package manager Flatpak includes all dependencies inside the sandbox
Different library versions across distributions (Ubuntu 22.04 vs Arch vs Fedora 43) Flatpak uses a single runtime (GNOME Platform)
GlobalShortcuts portal requires a correct app_id Flatpak guarantees a stable com.pais.handy
Different package managers (apt, dnf, pacman, rpm-ostree) One format for all
Auto-updates Flathub + x-checker-data automatically updates versions

Current status


📋 Open ISSUES (require resolution)

Wayland + text insertion

Issue Description Environment
#1549 GNOME Wayland: keycombo paste picks wtype then fails with no fallback; ExternalScript paste hangs via wl-copy GNOME Wayland
#1282 Post-processing never triggers on Linux KDE Wayland (v0.8.2) KDE Wayland
#429 First character missing when using Direct paste method on GNOME/Wayland GNOME Wayland
#1375 Wayland: recording overlay displayed on secondary monitor Kubuntu/GNOME Wayland
#439 Paste Method > Direct does not use the correct keyboard layout Wayland
#315 Typing fails due to target window not focused at correct time Wayland
#1019 Linux version does not allow transcribe shortcut to be a single key Linux

Wayland + hotkeys

Issue Description Environment
#102 Keyboard Shortcut not working on Ubuntu 22.04 Ubuntu/X11
#949 Global shortcuts don't work on Wayland compositors (COSMIC, Sway, Hyprland) Wayland
#1236 GlobalShortcuts portal broken on GNOME 49 GNOME Wayland

Linux (general)

Issue Description
#806 No microphone on Pop!_OS 24.04 (PipeWire)
#521 Microphone and Output Device only detected as "Default" on Linux
#1162 Push-to-talk sometimes gets stuck in Cancel state
#1313 GPU not detected (Linux)
#227 Handy crashes on Ubuntu 22.04
#1339 Microphone not detected on Linux
#703 Noticeable delay before Ready beep
#1105 F13-F24 hotkeys fail with "Unknown scancode" (X11)
#373 Title bar buttons do not react until window maximization toggled
#512 AppImage: pkill -USR2 crashes handy
#420 AppImage version not set correctly
#895 AppImage .DirIcon broken
#603 Cannot run AppImage format
#1539 Push-to-talk rapidly toggles recording (X11 auto-repeat)

🔧 Open PRs (awaiting resolution)

Critical for Wayland + Flatpak

PR Description Author Status
#689 Remote Desktop portal for Wayland (text input via portal) @petit-aigle, @D3nis Open — needs merge
#1287 xdg-desktop-portal GlobalShortcuts backend for Wayland @nmcbride Open — needs merge
#548 Flatpak packaging support @GabeDuarteM Open — needs review + merge
#1395 Fix Wayland paste + post-process @vetmiker Open — needs merge
#1299 Prefer dotool for reliable Wayland text input @aasmall Open
#1300 Add "None" keyboard implementation for Wayland @aasmall Open
#1337 Initialize Enigo on Wayland and tolerate failure @LukeCarrier Open
#1276 Clipboard paste methods fail on GNOME Wayland @mrinterweb Open
#1505 Improve GNOME Wayland overlay behavior @Ramtx Open
#1388 Fix window controls, dotool latency, fd leak, overlay focus @R11manish Open

Additional Linux PRs

PR Description Author Status
#572 Wayland support with GNOME system shortcuts @juulieen Open
#1397 Optional GNOME Shell extension for status display @R11manish Open
#1455 Implement native IBus direct input engine @ricardolee Open
#1545 Remote desktop clipboard paste @D3nis Open

✅ Resolved issues (merged PRs)

Text insertion

PR Description Author
#493 Fix direct typing (wtype/dotool) @johnmalek312
#557 Add ydotool support for text input @manimohans
#676 Add KDE Plasma 6 Wayland support via kwtype @datenfalke
#760 Add typing tool selector (UI) @kakapt
#376 Add Wayland paste support via wtype/dotool @lhotari
#281 SIGUSR2 + wayland enigo feature @johnpyp

Hotkeys + overlay

PR Description Author
#354 SIGUSR2 handling for toggles @johnpyp
#759 SIGUSR1 for transcribe_with_post_process @arimxyer
#1121 Fix overlay problem in KDE @vpsone
#769 Improve Wayland startup stability @boeserwolf
#792 Add CLI parameters for Linux @retspen
#824 Fix transcription lock-up race condition @johnpyp

Documentation and CI

PR Description Author
#1426 Document Linux workarounds in Known Issues @manato-tajiri
#1266 Add Linux startup troubleshooting section @xilec
#951 Add Linux install steps + AppImage troubleshooting @arimxyer
#789 Apply DMABUF workaround on all Linux systems @suuuehgi
#748 Clarify gtk-layer-shell runtime requirements @datenzar
#752 Install gtk-layer-shell for Ubuntu builds @datenzar

🗺️ Implementation stages

Phase 1: Basic Flatpak infrastructure

Phase 2: Wayland text input (core)

- [ ] PR #1395 — Merge Wayland paste + post-process fix (@vetmiker)
- [ ] PR #1299 — Merge dotool as preferred typing tool (@aasmall)

Phase 3: Global hotkeys on Wayland

Phase 4: Regression testing

  • Test all paste methods (Direct, Ctrl+V, Ctrl+Shift+V, Shift+Insert)
  • Test hotkeys (toggle, push-to-talk, cancel)
  • Test post-processing
  • Test overlay (positioning, focus)
  • Test autostart
  • Test microphone and output devices
  • Test long sessions (sleep/wake, lock/unlock)

Phase 5: Flatpak → Flathub


🧪 Testing matrix

By environment (DE + compositor)

Environment Testers Status
GNOME Wayland (Fedora, Ubuntu, Arch) @petit-aigle @D3nis @mrinterweb @hsablonniere @delthas @bkanuka ✅ Actively tested
KDE Plasma Wayland (Fedora KDE, Bazzite, Arch, CachyOS) @koloved @essoen @ndeybach @Gareth-Rouse @VorpalBlade 🔄 In progress
GNOME X11 (Ubuntu, Debian) @sasha-computer @shockme 🔄 Testing needed
Sway/Hyprland (wlroots) @aasmall @petit-aigle 🔄 Testing needed
COSMIC (Pop!_OS) @jnials @mgabor3141 🔄 Testing needed

By distribution

Distribution Testers Priority
Fedora 43+ (Workstation, KDE, Atomic) @petit-aigle @essoen @ndeybach @D3nis 🔴 High
Arch Linux / CachyOS @mrinterweb @Nirose @VorpalBlade @delthas 🔴 High
Ubuntu 24.04+ @bkanuka @sasha-computer @shockme @arpagon 🔴 High
Bazzite / Bluefin (atomic Fedora) @koloved 🔴 High
NixOS @xilec @manimohans @zitongcharliedeng 🟡 Medium
Pop!_OS 24.04 @jnials 🟡 Medium
Debian / Linux Mint 🟢 Low
openSUSE 🟢 Low

Key test scenarios

  • Flatpak installation and first launch
  • Automatic text insertion (Direct method)
  • Clipboard paste (Ctrl+V, Ctrl+Shift+V, Shift+Insert)
  • Global hotkey toggle
  • Push-to-talk (press/release)
  • Post-processing (LLM)
  • Overlay (position, focus, multi-monitor)
  • System autostart
  • Operation after sleep/wake
  • Operation after lock/unlock
  • Special characters, uppercase letters, Unicode
  • Long sessions
  • Version updates

👥 Testing team by group

🟢 GNOME Wayland

  • @petit-aigle — Remote Desktop portal, input testing
  • @D3nis — clipboard paste, Fedora 43 GNOME
  • @mrinterweb — CachyOS/GNOME, wtype fixes
  • @hsablonniere — Arch Linux/GNOME, first character root cause
  • @delthas — French keyboard layout, Unicode testing
  • @bkanuka — Ubuntu/GNOME, portal testing

🟣 KDE Plasma Wayland

🔵 wlroots (Sway, Hyprland)

🟡 Distribution-specific


🏗️ Flathub publication stages

Step 1: Flatpak manifest preparation

  • Update com.pais.handy.yaml (PR feat: add Flatpak packaging support #548 + all merged Wayland PRs)
  • Set --socket=wayland as primary, --socket=fallback-x11 as fallback
  • Ensure finish-args include all required portals

Step 2: Flathub metadata

  • Add screenshots to com.pais.handy.metainfo.xml
  • Add categories (Audio, Productivity, Utility)
  • Add links to homepage, help, donation
  • Validate metadata with Flathub validator

Step 3: CI/CD for automatic builds

  • Setup GitHub Actions to build Flatpak on each release
  • Add x-checker-data to manifest for automatic version updates

Step 4: Publication

  • Fork flathub/flathub
  • Create branch from new-pr
  • Add com.pais.handy/ directory with manifest and metainfo
  • Open PR to flathub/flathub
  • Pass Flathub moderator review
  • Get access to flathub/com.pais.handy

Step 5: Post-release

  • Setup automatic updates on new Handy releases (Flathub bot)
  • Add "Get it on Flathub" badge to README
  • Update Linux installation documentation

📌 Merge requirements

  1. Flatpak must be the primary distribution method — all new Linux fixes must be tested in Flatpak builds
  2. Remote Desktop portal (Feat/add remote desktop direct mode on wayland #689) + GlobalShortcuts portal (feat(linux): add xdg-desktop-portal GlobalShortcuts backend for Wayland #1287) — minimal set for Wayland operation
  3. Both GNOME and KDE support — solutions must not be tailored to a single DE
  4. Backward compatibility — X11 and existing methods (wtype, dotool, ydotool) must continue working
  5. Auto-detection — Handy should auto-detect available input methods and choose the optimal one

Created by @koloved to coordinate Wayland support efforts for Handy
Repository: https://github.com/cjpais/Handy

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions