#!/bin/sh
# Input injection for the HA mobile-app browser remote (project-plan Phase 11,
# follow-up: text field + mouse buttons).
#
# ydotool writes to /dev/uinput as a virtual input device rather than talking to a
# display-server protocol (see thinclient_agent/input_control.py) — that device node is
# root-owned by default, which is what ydotoold (present in ydotool >= 1.0) exists to
# broker: it runs as a system service and the client talks to it over a socket instead
# of opening /dev/uinput itself. Debian bookworm's ydotool version, and therefore
# whether ydotoold even exists, decides which of the two paths below applies —
# InputControl already detects this the same way (shutil.which("ydotoold")).
set -eu

. /etc/thinclient-agent/config.env

apt-get install -y --no-install-recommends ydotool

if systemctl list-unit-files ydotoold.service >/dev/null 2>&1; then
  systemctl enable ydotoold
  echo "1000-ydotool: enabled ydotoold.service (modern ydotool)."
else
  echo "1000-ydotool: no ydotoold.service shipped with this package (legacy ydotool that"
  echo "  opens /dev/uinput directly). It needs to run as root or have a udev rule"
  echo "  granting the '${KIOSK_USERNAME}' user access to /dev/uinput — 0100-user-setup"
  echo "  already put that account in the 'input' group, which covers the common udev"
  echo "  rule pattern (GROUP=\"input\") if this Debian release ships one for uinput;"
  echo "  add one by hand if the input-control buttons in Home Assistant do nothing."
fi
