#!/usr/bin/env bash
# ======================================================================
# File: fix_talkkonnect_audio.sh
# Purpose: Fix talkkonnect audio configuration
# ======================================================================
echo "======================================================================="
echo "TalkKonnect Audio Configuration Fix"
echo "======================================================================="
echo ""
# Prompt for target user
read -p "Which user is talkkonnect running as? [kiosk]: " TARGET_USER
TARGET_USER=${TARGET_USER:-kiosk}
# Verify the target user exists
if ! id "$TARGET_USER" &>/dev/null; then
echo "[!] Error: User '$TARGET_USER' does not exist"
exit 1
fi
TARGET_UID=$(id -u "$TARGET_USER")
TARGET_HOME=$(eval echo ~"$TARGET_USER")
CONFIG_FILE="$TARGET_HOME/.config/talkkonnect/talkkonnect.xml"
echo "[+] Target user: $TARGET_USER (UID: $TARGET_UID)"
echo "[+] Config file: $CONFIG_FILE"
echo ""
# Check PipeWire session
echo "[1] Checking PipeWire/PulseAudio session..."
if [ -S "/run/user/$TARGET_UID/pipewire-0" ]; then
echo " ✓ PipeWire socket found: /run/user/$TARGET_UID/pipewire-0"
HAS_PIPEWIRE=true
else
echo " ✗ No PipeWire socket found at /run/user/$TARGET_UID/pipewire-0"
HAS_PIPEWIRE=false
fi
if [ -S "/run/user/$TARGET_UID/pulse/native" ]; then
echo " ✓ PulseAudio socket found: /run/user/$TARGET_UID/pulse/native"
HAS_PULSE=true
else
echo " ✗ No PulseAudio socket found"
HAS_PULSE=false
fi
echo ""
# Check audio devices as target user
echo "[2] Checking audio devices for user $TARGET_USER..."
echo ""
echo "Available ALSA output devices:"
sudo -u "$TARGET_USER" XDG_RUNTIME_DIR=/run/user/$TARGET_UID aplay -L 2>/dev/null | grep -E "^(default|hw:|pulse)" | head -10
echo ""
echo "Available ALSA input devices:"
sudo -u "$TARGET_USER" XDG_RUNTIME_DIR=/run/user/$TARGET_UID arecord -L 2>/dev/null | grep -E "^(default|hw:|pulse)" | head -10
echo ""
# If PipeWire/Pulse is available, check sinks
if [ "$HAS_PIPEWIRE" = true ] || [ "$HAS_PULSE" = true ]; then
echo "PipeWire/PulseAudio sinks:"
sudo -u "$TARGET_USER" XDG_RUNTIME_DIR=/run/user/$TARGET_UID pactl list sinks short 2>/dev/null || echo "(pactl not available)"
echo ""
echo "PipeWire/PulseAudio sources:"
sudo -u "$TARGET_USER" XDG_RUNTIME_DIR=/run/user/$TARGET_UID pactl list sources short 2>/dev/null || echo "(pactl not available)"
echo ""
fi
# Check current config
echo "[3] Current talkkonnect audio configuration:"
if [ -f "$CONFIG_FILE" ]; then
echo ""
echo "Input device:"
grep -A1 '' "$CONFIG_FILE" | grep 'device=' | sed 's/.*device="\([^"]*\)".*/ \1/'
echo ""
echo "Output device:"
grep -A1 '