#!/bin/bash

# omarchy:summary=Print the detected Hyprland touchpad or trackpad device name

mice=$(hyprctl devices -j | jq -r '.mice[].name')
device=$(grep -iE -m1 'touchpad|trackpad' <<<"$mice")

# Some touchpads carry neither word (Apple Silicon's is "apple-mtp-multi-touch"),
# so ask udev which mouse is one. The name alone can't say: some touchscreens'
# mouse interfaces are called multi-touch too.
if [[ -z $device ]]; then
  input_class="${OMARCHY_INPUT_CLASS_PATH:-/sys/class/input}"
  for event in "$input_class"/event*; do
    [[ -r $event/device/name ]] || continue
    # Hyprland's name for a device: the kernel's, lowercased, with spaces,
    # commas and newlines as dashes, and -1, -2 and so on after a name another
    # device already took.
    name=$(<"$event/device/name")
    name=${name,,}
    name=${name//[ ,$'\n']/-}
    udevadm info --query=property "$event" 2>/dev/null | grep -Fxq 'ID_INPUT_TOUCHPAD=1' || continue
    while IFS= read -r mouse; do
      if [[ $mouse == "$name" || ( $mouse == "$name"-* && ${mouse#"$name"-} =~ ^[0-9]+$ ) ]]; then
        device=$mouse
        break 2
      fi
    done <<<"$mice"
  done
fi

[[ -n $device ]] && echo "$device"
