mirror of
https://git.korhonen.cc/FunctionalHacker/dotfiles.git
synced 2024-11-04 18:00:20 +00:00
b1335a3628
Signed-off-by: Marko Korhonen <marko.korhonen@reekynet.com>
33 lines
1.4 KiB
Bash
33 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Get the pid of the window that is to be moved to the next sink
|
|
pid_to_move=$(swaymsg -t get_tree | jq -r '.nodes[]?.nodes[]?.nodes[]?.nodes[]?.nodes[] | select(.focused==true).pid')
|
|
|
|
# Assign all the sink indices into an array
|
|
sink_array=($(pacmd list-sinks | grep index | sed 's/index://' | sed 's/*//' | xargs))
|
|
|
|
# Get the sink inputs to prepare to be inserted into array of arrays
|
|
# The following raw string format is index sink pid\nindex sink pid
|
|
sink_inputs_raw=$(pacmd list-sink-inputs | grep -e index -e sink: -e process.id | sed 's/<[^"]*>//' | sed 's/[^0-9]*//g' | tr '\n' ' ' | xargs | sed 's/\([[:digit:]]*\) \([[:digit:]]*\) \([[:digit:]]*\) /\1 \2 \3\n/g')
|
|
|
|
# Find the corresponding pid
|
|
sink_input_selected_pid=$(echo "$sink_inputs_raw" | grep $pid_to_move)
|
|
|
|
# Parse the individual values from the info retrieved above
|
|
selected_input_index=$(echo $sink_input_selected_pid | awk '{print $1;}')
|
|
selected_input_sink=$(echo $sink_input_selected_pid | awk '{print $2;}')
|
|
selected_input_pid=$(echo $sink_input_selected_pid | awk '{print $3;}')
|
|
|
|
len=${#sink_array[@]}
|
|
|
|
for (( i=0; i<$len; i++ )); do
|
|
if [[ $selected_input_sink == "${sink_array[$i]}" ]]; then
|
|
len_idx=$((len-1))
|
|
if (( $i == $len_idx )); then
|
|
pacmd move-sink-input $selected_input_index ${sink_array[0]}
|
|
else
|
|
pacmd move-sink-input $selected_input_index ${sink_array[$((i+1))]}
|
|
fi
|
|
fi
|
|
done
|