From dfd6e2a7ca66c8c9d6f2992ccea3383c32a4b60e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 22 May 2026 13:26:41 +0200 Subject: [PATCH] Preserve playback when switching audio outputs --- bin/omarchy-audio-output-set-default | 8 ++++---- bin/omarchy-audio-output-switch | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bin/omarchy-audio-output-set-default b/bin/omarchy-audio-output-set-default index fec0c1b3..5f7d8f04 100755 --- a/bin/omarchy-audio-output-set-default +++ b/bin/omarchy-audio-output-set-default @@ -12,9 +12,9 @@ if [[ -z $node_id || -z $sink_name ]]; then exit 1 fi -wpctl set-default "$node_id" 2>/dev/null || true -pactl set-default-sink "$sink_name" 2>/dev/null || true +timeout 2 wpctl set-default "$node_id" 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 - [[ -n $input ]] && pactl move-sink-input "$input" "$sink_name" 2>/dev/null || true +timeout 2 pactl list short sink-inputs 2>/dev/null | awk '{ print $1 }' | while read -r input; do + [[ -n $input ]] && timeout 2 pactl move-sink-input "$input" "$sink_name" 2>/dev/null || true done diff --git a/bin/omarchy-audio-output-switch b/bin/omarchy-audio-output-switch index dd4b473d..73af2246 100755 --- a/bin/omarchy-audio-output-switch +++ b/bin/omarchy-audio-output-switch @@ -1,8 +1,8 @@ #!/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") if (( sinks_count == 0 )); then @@ -10,7 +10,7 @@ if (( sinks_count == 0 )); then exit 1 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") if [[ $current_sink_index != "null" ]]; then @@ -36,7 +36,7 @@ else fi 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 omarchy-osd -i "volume-${icon_state}" -m "$next_sink_description"