switch with pactl
$ pactl set-sink-port 0 analog-output-headphones
$ pactl set-sink-port 0 analog-output-speaker
find ports name
pactl list sinks
Sink #52
State: SUSPENDED
Name: alsa_output.pci-0000_00_1f.3.analog-stereo
Ports:
analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 3, availability unknown)
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 2, availability unknown)
Active Port: analog-output-headphones
see in ports:
pactl list sinks short
52 alsa_output.pci-0000_00_1f.3.analog-stereo PipeWire s32le 2ch 48000Hz SUSPENDED
man pactl
set-sink-port SINK PORT
Set the specified sink (identified by its symbolic name or
numerical index) to the specified port (identified by its
symbolic name).
oldconfig
bindsym $mod1+slash exec pactl set-sink-port 0 analog-output-headphones
bindsym $mod1+shift+slash exec pactl set-sink-port 0 analog-output-speaker
sink new name is SINK=alsa_output.pci-0000_00_1f.3.analog-stereo
using proaudio sink
pactl set-sink-port alsa_output.pci-0000_00_1f.3.pro-output-0 analog-output-headphones
pactl set-sink-port alsa_output.pci-0000_00_1f.3.pro-output-0 analog-output-speaker
nano ~/.local/bin/switch_output
--------------------------------------------------
if [[ $(pactl list | grep "Active Port: analog-output") == *"headphones"* ]]; then
pactl set-sink-port 0 analog-output-speaker
else
pactl set-sink-port 0 analog-output-headphones
fi
------------------------------------------------------
set $r_vol exec pkill -RTMIN+1 i3blocks
bindsym F9 exec switch_output ; $r_vol
## my dell has free f9 without need to press fn key
##get active port
pactl list | grep "Active Port: analog-output" | cut -d':' -f 2
pactl list | grep "Active Port: analog-input" | cut -d':' -f 2
i3blocks volume
--------------------------------------------
#!/bin/sh
# Prints the current volume or 🔇 if muted.
case $BLOCK_BUTTON in
2) pamixer -t >>/dev/null ;;
4) pamixer -i 5 >>/dev/null ;;
5) pamixer -d 5 >>/dev/null ;;
6) foot -e "$EDITOR" "$0" ;;
esac
vol=$(pamixer --get-volume-human)
[ "$vol" = "muted" ] && echo 🔇 && exit
hed=$(pactl list | grep "Active Port: analog-output" | cut -d':' -f 2)
if [[ "$hed" == *"headphones"* ]]; then
icon="🎧"
fi
if [[ "$hed" == *"speaker"* ]]; then
icon="🔉"
fi
echo "$icon $vol"
------------------------------------------------------------------------------------------------------------
pw-cli list-objects Node
pw-cli list-objects Device
src:
https://www.kailashkatheth.com.np/2021/06/headphoneearphone-switch-script.html
https://gist.github.com/miyl/40cdf1a66b360ad8ec0b19e2ffa56194
Comments
Post a Comment