this post was submitted on 02 Sep 2024
49 points (96.2% liked)

Linux

47929 readers
1149 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

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

top 22 comments
sorted by: hot top controversial new old
[–] [email protected] 8 points 1 month ago (1 children)

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"
[–] [email protected] 4 points 1 month ago

Amazing, thank you so much :)

[–] [email protected] 5 points 1 month ago

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.

[–] [email protected] 2 points 1 month ago* (last edited 1 month ago)

Maybe try using pulsemixer. (if you have pulseaudio installed ofc)

[–] [email protected] 27 points 1 month ago (2 children)
[–] [email protected] 13 points 1 month ago

It's art is what it is

[–] [email protected] 29 points 1 month ago (3 children)

I've been ricing my GNOME DE.

Only joking. I had a bit of fun in GIMP for to illustrate this post. You're welcome to use it if you want :)

[–] [email protected] 11 points 1 month ago (1 children)

Pretty cool I just found it crazy that

A: nobody commented

B: you didnt mention the image at all

[–] [email protected] 6 points 1 month ago

I thought I'd just slip it in and see what happened! I like making things in GIMP as well

[–] [email protected] 0 points 1 month ago* (last edited 1 month ago) (1 children)

Uh oh, you said the forbidden word. Won't be long until everyone in this thread is "informed".

[–] [email protected] 1 points 1 month ago (1 children)
[–] [email protected] 1 points 1 month ago* (last edited 1 month ago) (1 children)
[–] [email protected] 2 points 1 month ago (1 children)

OK, I'm guessing that term has some extra baggage around here which I'm not privy to... I spent too many years chopping wood and growing corn, so someone will have to fill me in!

[–] [email protected] 2 points 1 month ago* (last edited 1 month ago)

Oh no, you're going to make me be that guy lol.

Ricing comes from "rice cooker", meaning a Japanese car. The term is so far removed from any racial implications now, that some people say RICE means "Race Inspired Cosmetic Enhancements", though it's just an excuse where one need not exist.

I regularly see people brigade for others to stop saying it, even though the word now exists on its own. People treat it like it's comparable to something like the Washington "Redskins", it isn't.

[–] [email protected] 18 points 1 month ago

If the UI always looks like that you'd huffed too much Compiz.

[–] [email protected] 12 points 1 month ago (2 children)

does gnome not have audio output switcher in the tray audio popup menu thingy?

[–] [email protected] 3 points 1 month ago

Found it! I'd missed that - thanks!

[–] [email protected] 5 points 1 month ago

It does for a few versions now, and even before there was at least one extension adding this feature.

[–] [email protected] 3 points 1 month ago

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.

[–] [email protected] 4 points 1 month ago (1 children)

Pactl commands will do what I think you want, I keep forgetting the exact syntax. Once you find something that works, you can bind those commands to some key combos to easily switch

[–] [email protected] 6 points 1 month ago

The hard part is finding a stable identifier, instead of "this interface is know as sink 48 at this exact instant. It will be a completely different number tomorrow. It might even be a potato emoji, who knows?"

[–] [email protected] 15 points 1 month ago* (last edited 1 month ago)

Doesn't alsamixer work?

Anyway, you may wanna try pactl set-default-sink [sink-name]> as well