Nevermind, it’s faster if I just tell you how to do it 
Note: This is a long post, but it is NOT HARD to do. I just show a few different ways to do with with lots of explanation so you won’t get stuck. Don’t let the big post scare you off 
I’m going to use the config from the thread over here as a basis.
That config creates a virtual device where all the notifications go, and has rules to identify sounds as notifications, and send them to that virtual device.
In that thread, that virtual device is used to turn down the volume of the notifications. You don’t really need that, since it’s going to its own physical device. So we will just use the rules (which are pretty reliable at this point), and instead of sending the sounds to the virtual device, we will send them to your physical device:
TL;DR just make this one file:
So, you create a file like so:
# Notifications routing
node.rules = [
# System notifications
{ matches = [ { media.role = "Notification"
} { application.id = "org.freedesktop.libcanberra"
media.role = "!Test"
application.process.binary = "!systemsettings"
} { application.name = "libcanberra"
media.role = "!Test"
application.process.binary = "!systemsettings"
} { application.process.binary = "plasmashell"
media.name = "!PlasmaPA-VolumeMeter"
node.rate = "!1/25"
} { application.name = "konsole"
} ] actions = { update-props = {
target.object = "YOUR SPEAKERS GO HERE"
} } }
]
And save this file as ~/.config/pipewire/pipewire.conf.d/60-notifications-routing.conf
Take note of that last part that says YOUR SPEAKERS GO HERE
. You will need to get the pipewire node.name
of your speakers device, and put it there. This gets a tiny bit nerdy but stick with me it’s honestly not bad. I’m going to describe it a few different ways, you can choose the one that seems most comfortable for you.
Once you have this file created you need to restart pipewire, the easiest way is to just reboot. If you prefer, you can run this command to do it immediately (handy for testing): systemctl --user restart pipewire-pulse pipewire wireplumber
but I do recommend a reboot after that.
How to find your target’s node.name
Simplest way
A simple way to find this is from the terminal. You can run a command like pw-cli ls Node
and it will list all of the nodes on your system, and then hit ctrl+shift+f to search, and type in the name of your device. You will see the node.name
listed there.
Easier way
Maybe that gets a little too verbose for you if you have a lot of devices. Let’s thin it down a bit. We will say you care looking for the device named “FOOBAR”. You could try something like pw-cli ls Node | grep -i -C 10 FOOBAR |grep node.
. Here is an example of me looking like this for my “Sony TV” device:
> pw-cli ls Node | grep -i -C 10 sony | grep node.
node.description = "Rear Panel USB-Audio Pro Wrapper In"
node.name = "Rear Panel USB-Audio Pro Wrapper In"
node.description = "Sony TV Pro Wrapper In"
node.name = "Sony TV Pro Wrapper In"
node.description = "Sony TV Pro Wrapper Out"
node.name = "Sony TV Pro Wrapper Out"
node.description = "XG2703-GS Pro Wrapper Out"
node.name = "XG2703-GS Pro Wrapper Out"
node.name = "bluez_midi.server"
node.description = "Sony TV"
node.name = "alsa_output.pci-0000_07_00.1.pro-output-3"
node.nick = "Sony TV"
node.description = "GA102 High Definition Audio Controller Pro 7"
There it is, third from the bottom.
GUI way
The outstanding coppwr
should be available in your distribution’s repositories.
It’s a GUI app, so, screenshot:
Real quick breakdown: start coppwr, Go to the ‘Global Tracker’ tab. Expand the ‘Filters’ section at the top, and type in the device name - note it is Case Sensitive! Expand the ‘Properties’ of the node which is the right one, and boom you’re done.