Preserve playback when switching audio outputs
This commit is contained in:
@@ -12,9 +12,9 @@ if [[ -z $node_id || -z $sink_name ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
wpctl set-default "$node_id" 2>/dev/null || true
|
timeout 2 wpctl set-default "$node_id" 2>/dev/null || true
|
||||||
pactl set-default-sink "$sink_name" 2>/dev/null || true
|
timeout 2 pactl set-default-sink "$sink_name" 2>/dev/null || true
|
||||||
|
|
||||||
pactl list short sink-inputs 2>/dev/null | awk '{ print $1 }' | while read -r input; do
|
timeout 2 pactl list short sink-inputs 2>/dev/null | awk '{ print $1 }' | while read -r input; do
|
||||||
[[ -n $input ]] && pactl move-sink-input "$input" "$sink_name" 2>/dev/null || true
|
[[ -n $input ]] && timeout 2 pactl move-sink-input "$input" "$sink_name" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute.
|
# omarchy:summary=Switch between audio outputs while preserving the mute status
|
||||||
|
|
||||||
sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
|
sinks=$(timeout 2 pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]')
|
||||||
sinks_count=$(jq 'length' <<<"$sinks")
|
sinks_count=$(jq 'length' <<<"$sinks")
|
||||||
|
|
||||||
if (( sinks_count == 0 )); then
|
if (( sinks_count == 0 )); then
|
||||||
@@ -10,7 +10,7 @@ if (( sinks_count == 0 )); then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
current_sink_name=$(pactl get-default-sink)
|
current_sink_name=$(timeout 2 pactl get-default-sink)
|
||||||
current_sink_index=$(jq -r --arg name "$current_sink_name" 'map(.name) | index($name)' <<<"$sinks")
|
current_sink_index=$(jq -r --arg name "$current_sink_name" 'map(.name) | index($name)' <<<"$sinks")
|
||||||
|
|
||||||
if [[ $current_sink_index != "null" ]]; then
|
if [[ $current_sink_index != "null" ]]; then
|
||||||
@@ -36,7 +36,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $next_sink_name != $current_sink_name ]]; then
|
if [[ $next_sink_name != $current_sink_name ]]; then
|
||||||
pactl set-default-sink "$next_sink_name"
|
omarchy-audio-output-set-default "$(jq -r '.index' <<<"$next_sink")" "$next_sink_name"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
omarchy-osd -i "volume-${icon_state}" -m "$next_sink_description"
|
omarchy-osd -i "volume-${icon_state}" -m "$next_sink_description"
|
||||||
|
|||||||
Reference in New Issue
Block a user