switch with pactl
pactl set-sink-port 0 analog-output-headphones
pactl set-sink-port 0 analog-output-speaker
pactl list | grep "Active Port"
Active Port: analog-output-speaker
Active Port: analog-input-headset-mic
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
pactl set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-headphones
pactl set-sink-port alsa_output.pci-0000_00_1f.3.analog-stereo analog-output-speaker
instead of alsa_output.pci-0000_00_1f.3.analog-stereo u can use 0
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
pw-cli list-objects Port
pw-cli list-objects
pw Ports
id 32, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:playback:playback_0"
port.alias = "ALC3204 Analog:playback_FL"
id 42, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:playback:playback_1"
port.alias = "ALC3204 Analog:playback_FR"
id 41, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:capture:capture_0"
port.alias = "ALC3204 Analog:capture_FL"
id 47, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:capture:capture_1"
port.alias = "ALC3204 Analog:capture_FR"
id 43, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:playback:monitor_1"
port.alias = "ALC3204 Analog:monitor_FR"
id 44, type PipeWire:Interface:Port/3
object.path = "alsa:pcm:0:front:0:playback:monitor_0"
port.alias = "ALC3204 Analog:monitor_FL"
pw Nodes
id 45, type PipeWire:Interface:Node/3
object.path = "alsa:pcm:0:front:0:playback"
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
id 46, type PipeWire:Interface:Node/3
object.path = "alsa:pcm:0:front:0:capture"
node.name = "alsa_input.pci-0000_00_1f.3.analog-stereo"
pactl get-default-sink
alsa_output.pci-0000_00_1f.3.analog-stereo
pactl list sinks
Sink #45
Name: alsa_output.pci-0000_00_1f.3.analog-stereo
Description: Built-in Audio Analog Stereo
Monitor Source: alsa_output.pci-0000_00_1f.3.analog-stereo.monitor
object.path = "alsa:pcm:0:front:0:playback"
device.vendor.id = "0x8086"
device.product.id = "0x34c8"
device.product.name = "Ice Lake-LP Smart Sound Technology Audio Controller"
Ports:
analog-output-speaker: Speakers (type: Speaker, priority: 10000, availability group: Legacy 2, availability unknown)
analog-output-headphones: Headphones (type: Headphones, priority: 9900, availability group: Legacy 1, not available)
Active Port: analog-output-speaker
pactl set-sink-volume @DEFAULT_SINK@ +5%
pactl set-sink-volume @DEFAULT_SINK@ -5%
pactl set-sink-mute @DEFAULT_SINK@ toggle
pactl set-source-mute @DEFAULT_SOURCE@ toggle
pactl set-source-volume @DEFAULT_SOURCE@ +5%
pactl set-source-volume @DEFAULT_SOURCE@ -5%
path=/org/mpris/MediaPlayer2;
org.mpris.MediaPlayer2.Player
playerctl alternative with dbus for mpv with mpv-mpris plugin
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.mpv /org/mpris/MediaPlayer2
org.mpris.MediaPlayer2.Player.PlayPause
org.mpris.MediaPlayer2.Player.PlayPause
org.mpris.MediaPlayer2.Player.Next
org.mpris.MediaPlayer2.Player.Previous
org.mpris.MediaPlayer2.Player.Stop
src:
https://www.kailashkatheth.com.np/2021/06/headphoneearphone-switch-script.html
https://gist.github.com/miyl/40cdf1a66b360ad8ec0b19e2ffa56194
Comments
Post a Comment