41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Obtener el índice del sink actual
|
|
CURRENT_SINK=$(pactl info | grep 'Default Sink' | awk '{print $3}')
|
|
|
|
# Obtener la lista de sinks disponibles
|
|
SINKS=($(pactl list short sinks | awk '{print $2}'))
|
|
|
|
# Buscar el índice actual en la lista
|
|
for i in "${!SINKS[@]}"; do
|
|
if [[ "${SINKS[$i]}" = "$CURRENT_SINK" ]]; then
|
|
CURRENT_INDEX=$i
|
|
break
|
|
fi
|
|
done
|
|
|
|
# Calcular el siguiente sink
|
|
NEXT_INDEX=$(( (CURRENT_INDEX + 1) % ${#SINKS[@]} ))
|
|
NEXT_SINK=${SINKS[$NEXT_INDEX]}
|
|
|
|
# Cambiar el sink por defecto
|
|
pactl set-default-sink "$NEXT_SINK"
|
|
|
|
# Mover todas las entradas de audio al nuevo sink
|
|
for INPUT in $(pactl list short sink-inputs | awk '{print $1}'); do
|
|
pactl move-sink-input "$INPUT" "$NEXT_SINK"
|
|
done
|
|
|
|
# Obtener el nombre legible del nuevo sink
|
|
SINK_DESCRIPTION=$(pactl list sinks | awk -v sink="$NEXT_SINK" '
|
|
$0 ~ "Name: "sink {
|
|
found=1
|
|
}
|
|
found && $0 ~ /Description:/ {
|
|
print substr($0, index($0,$2))
|
|
exit
|
|
}')
|
|
|
|
# Enviar notificación con swaync
|
|
notify-send -a "Audio Switcher" -i audio-speakers "Salida de audio cambiada" "$SINK_DESCRIPTION"
|