#!/usr/bin/bash
set -eu
STATE=/run/pocketds-mode
[ -d /run ] || mkdir -p /run
mode=$(cat "$STATE" 2>/dev/null || echo gamepad)
DEV=$(busctl --json=short call org.shadowblip.InputPlumber \
        /org/shadowblip/InputPlumber/Manager \
        org.shadowblip.InputPlumber.Manager GetCompositeDevices 2>/dev/null \
        | python3 -c 'import sys,json; d=json.load(sys.stdin); print(d["data"][0]["data"][0])' 2>/dev/null) || \
    DEV=/org/shadowblip/InputPlumber/CompositeDevice0
case "$mode" in
    gamepad)
        busctl call org.shadowblip.InputPlumber "$DEV" \
            org.shadowblip.InputPlumber.CompositeDevice \
            SetTargetDevices as 2 mouse keyboard
        echo desktop > "$STATE"
        notify-send -u low "Pocket DS" "Mouse + keyboard mode" 2>/dev/null || true
        ;;
    *)
        busctl call org.shadowblip.InputPlumber "$DEV" \
            org.shadowblip.InputPlumber.CompositeDevice \
            SetTargetDevices as 1 xbox-elite
        echo gamepad > "$STATE"
        notify-send -u low "Pocket DS" "Gamepad mode" 2>/dev/null || true
        ;;
esac
