2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00
2026-04-23 12:45:49 +10:00

TapTapLoot Forwarder

Forward keyboard input to TapTapLoot running in Xwayland on Linux, so it can run in the background while you use other apps — similar to how BongoCat works.

Based on BongoCatXP by ITJesse — adapted for TapTapLoot with Xwayland support and dynamic xauth handling.

How it works

TapTapLoot is launched in a rootful Xwayland instance (via a Steam launch script), which lets it run independently of your Wayland compositor. This tool uses evdev to read your keyboard at the device level and forwards keypresses to the TapTapLoot window via xdotool, without requiring the window to have focus.

Requirements

  • Linux (Wayland or X11)
  • Python 3.7+
  • xdotool
  • xdotool must be installed
  • Access to /dev/input/ devices (via input group)
  • TapTapLoot running via the Xwayland launch script (see below)

Installation

1. Install system dependencies

# Arch Linux / Bazzite / SteamOS
sudo pacman -S xdotool python-pipx
# or on immutable distros (Bazzite, SteamOS):
ujust setup-decky  # if needed, then use distrobox or toolbox for pipx

2. Install this tool

# From this repo
pipx install git+https://gitea.example.com/yourname/TapTapLootForwarder.git

# Or from a local clone
git clone https://gitea.example.com/yourname/TapTapLootForwarder.git
cd TapTapLootForwarder
pipx install .

3. Add yourself to the input group

sudo usermod -aG input $USER
# Log out and back in for this to take effect

Steam Launch Script

Save the following as ~/.local/bin/taptaploot-forward.sh and make it executable (chmod +x):

#!/bin/bash
# Launches TapTapLoot in rootful Xwayland
# Steam launch option: ~/.local/bin/taptaploot-forward.sh %command%

for i in $(seq 10 30); do
    if [ ! -e "/tmp/.X11-unix/X$i" ]; then
        GAME_DISPLAY=":$i"
        break
    fi
done

GAME_XAUTH=$(mktemp /tmp/taptaploot-xauth.XXXXXX)
COOKIE=$(mcookie)
xauth -f "$GAME_XAUTH" add "$GAME_DISPLAY" . "$COOKIE"

cleanup() {
    kill "$XWAYLAND_PID" 2>/dev/null
    wait "$XWAYLAND_PID" 2>/dev/null
    rm -f "$GAME_XAUTH"
}
trap cleanup EXIT INT TERM

XAUTHORITY="$GAME_XAUTH" Xwayland "$GAME_DISPLAY" -geometry 1920x1080 -noreset -auth "$GAME_XAUTH" &
XWAYLAND_PID=$!
sleep 1

DISPLAY="$GAME_DISPLAY" XAUTHORITY="$GAME_XAUTH" "$@" &
GAME_PID=$!

wait "$GAME_PID"

Set your Steam launch option to:

~/.local/bin/taptaploot-forward.sh %command%

Usage

  1. Launch TapTapLoot via Steam (using the launch script above)
  2. In a terminal, run:
taptaploot-forwarder

Keypresses will be forwarded to the game without it needing focus. Press Ctrl+C to stop.

Bazzite / Immutable Distro Installation

On Bazzite, Nobara, or SteamOS (which use immutable root filesystems), the recommended approach is to use a Distrobox container:

# Create an Arch-based container
distrobox create --name taptaploot --image archlinux:latest
distrobox enter taptaploot

# Inside the container:
sudo pacman -S xdotool python-pipx
sudo usermod -aG input $USER
pipx install git+https://gitea.example.com/yourname/TapTapLootForwarder.git

# Export the command to your host
distrobox-export --bin ~/.local/bin/taptaploot-forwarder

Then run taptaploot-forwarder from your host terminal as normal.

Troubleshooting

Permission denied on /dev/input/ — make sure you've added yourself to the input group and logged out/in. Temporarily use sudo taptaploot-forwarder.

Window not found — ensure TapTapLoot is running via the Xwayland launch script. The forwarder checks every 10 seconds.

No keyboard devices found — permission issue, see above.

Credits

Description
A keystroke forwarder for TapTapLoot based on BongoCatXP by ITJesse - github.com/ITJesse/BongoCatXP/
Readme MIT 57 KiB
Languages
Python 92.6%
Shell 7.4%