Skip to content

An X11 + PyQt5 port, if you want it — no strings attached #16

Open

Description

@goldenzim

Hi — TinyHand is a lovely little app, so I had an X11 port of it built and it now
runs on my Linux desktops. It's here: https://github.com/goldenzim/tinyhand-x11

Offering it to you with nothing attached: take the code, fork it, link it from the
README, or ignore this entirely. No CLA, no expectation of review or maintenance,
and I'm not asking you to merge anything.

What it is: one ~950-line Python file, PyQt5, no build step, no pip, no network at
install. install.sh writes into $HOME and --uninstall / --purge take it
back out. Parity with the Mac app: all 36 hands plus the laser dot, tap sounds,
drag-to-draw ink, the centred picker toolbar, tray menu, settings dialog, and
Ctrl+Alt+H / Ctrl+Alt+X. One addition — the middle (wheel) button clears the ink.
Panels stay live: the overlay covers availableGeometry(), so the cursor over the
panel is the real one.

It never vendors your art: it reads the hand PNGs from assets/ and measures
sprite geometry from alpha at load, so any hand you add works there too. Your
LICENSE travels with the tree, unmodified.

The part worth pointing at if you ever do want it upstream: it ships an acceptance
suite that proves the promise that matters — clicks are swallowed. Control run
first (2/2 clicks reach a counting window with the overlay down), then the overlay
swallows a click, then Ctrl+click delivers exactly once via hide + XTEST replay.
Plus a pixel diff showing the hand actually drew, and a launcher idempotency
check. Seven groups, exit 0 only if nothing fails; passes on Debian 13 / Xfce 4.20
at 1920x1080 and on a 3840x1200 two-head desktop.

Two honest notes. It is X11 by nature — a Wayland client cannot consume input
aimed at other applications, so it cannot work there; it is not a competitor to
#14 (KDE/Plasma, layer-shell), the two simply cover different sessions. And the
port was written by my AI agent on my machines, with me directing and testing — the
same disclosure @m1ga made on #14.

Unofficial, not affiliated with or endorsed by you; the name is only there to say
what it is a port of. Use it or bin it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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