Does anyone know how I can select my audio output via the command line? I’m frequently switching between using my monitors inbuilt speakers and a USB audio interface and I’m finding it laborious to navigiggerate graphically through the settings in GNOME to do so.
What I’d like to do is set up a couple of bash aliases and do it in my terminal.
What’s the best way for me to do that?
Many thanks
I’ve written a bash script i’m using daily, maybe you can adapt it to your needs. I’m using pipewire-pulse. It’s probably not perfect but it does the job:
#!/usr/bin/env bash DEVICE=$1 # read input, parse list of available sinks (outputs) if [ "$DEVICE" = "pc" ] then OUTPUT=($(pactl list short sinks | awk '{print $2}' | grep -i -E 'hdmi|samson|Targus' -v)) elif [ "$DEVICE" = "tv" ] then OUTPUT=($(pactl list short sinks | awk '{print $2}' | grep -i -E 'hdmi')) else echo "No valid input (must be either 'pc' or 'tv')" exit -1 fi # get all currently connected streams INPUTS=($(pactl list short sink-inputs | awk '{print $1}')) # change default sink (for new audio outputs) pactl set-default-sink $OUTPUT # switch sink for existing audio outputs for i in "${INPUTS[@]}" do pactl move-sink-input $i $OUTPUT done # use notify-send to send a visual notification to the user that the sink changed notify-send -c info "Default sink changed" "Changed default sink and sink-inputs to $OUTPUT"
Amazing, thank you so much :)
pactl get short sinks
gets you a list of devices with a numerical identifier. And
pactl set-default-sink ID
Sets the default sink to the desired ID. I only ever want to swap between two so I wrots a bash script to do that. I just type ‘aud’ and it does it for me.
That depends on which audio system you’re running.
Since this can vary depending on your distro, the easiest place to look for that info is going to be your distro’s documentation. That documentation may also include instructions for how to accomplish exactly what you want.
Maybe try using pulsemixer. (if you have pulseaudio installed ofc)