45 lines
1.1 KiB
Bash
Executable File
45 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Program list
|
|
programs_name=$(pactl list sink-inputs | grep -Po 'binary = "\K[^"]*')
|
|
|
|
programs_index=$(pactl list sink-inputs | grep -Po '(?<=Sink Input #).*')
|
|
|
|
# Sink list
|
|
sinks_name=$(pactl list sinks | grep -Po 'Description: \K.*')
|
|
|
|
sinks_index=$(pactl list sinks | grep -Po '(?<=Sink #).*')
|
|
|
|
# Format values n' what not
|
|
IFS=$'\n' p_n_db=($programs_name)
|
|
p_n_size=${#p_n_db[@]}+1
|
|
|
|
IFS=$'\n' p_i_db=($programs_index)
|
|
p_i_count=${#p_i_db[@]}
|
|
|
|
IFS=$'\n' s_n_db=($sinks_name)
|
|
s_n_size=${#s_n_db[@]}+1
|
|
|
|
IFS=$'\n' s_i_db=($sinks_index)
|
|
s_i_count=${#s_i_db[@]}
|
|
|
|
ret_prog=$(printf '%s' "$programs_name" | rofi -dmenu -l $p_n_size)
|
|
|
|
ret_sink=$(printf '%s' "$sinks_name" | rofi -dmenu -l $s_n_size)
|
|
|
|
# Get indexes of ret_prog and ret_sink in *_name_db
|
|
for (( i = 0; i < ${#p_n_db[@]}; i++ )); do
|
|
if [ "${p_n_db[$i]}" = "${ret_prog}" ]; then
|
|
index_prog=$i;
|
|
fi
|
|
done
|
|
|
|
for (( i = 0; i < ${#s_n_db[@]}; i++ )); do
|
|
if [ "${s_n_db[$i]}" = "${ret_sink}" ]; then
|
|
index_sink=$i;
|
|
fi
|
|
done
|
|
|
|
# Execute command
|
|
ret=$(pactl move-sink-input ${p_i_db[$index_prog]} ${s_i_db[$index_sink]})
|