You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
dotfiles/scripts/installPipeWire.sh

56 lines
1.7 KiB

#!/bin/bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
pipewire \
pipewire-pulse \
wireplumber \
pipewire-alsa \
pipewire-jack \
pipewire-audio \
libspa-0.2-bluetooth
sudo apt install -y qpwgraph
sudo apt install -y easyeffects
# Install PipeWire Wayland portal
sudo apt-get install -y xdg-desktop-portal xdg-desktop-portal-gnome
# Disable PulseAudio
systemctl --user disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio.service pulseaudio.socket
# Stop PulseAudio immediately
systemctl --user stop pulseaudio.service pulseaudio.socket
# Enable PipeWire and its components
systemctl --user enable pipewire pipewire-pulse wireplumber
systemctl --user start pipewire pipewire-pulse wireplumber
mkdir -p ~/.config/pipewire
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/
# Create user pipewire config directory
mkdir -p ~/.config/pipewire/pipewire.conf.d/
# Set lower latency (default is 1024/48000 = ~21ms)
cat > ~/.config/pipewire/pipewire.conf.d/10-custom.conf << 'EOF'
context.properties = {
default.clock.rate = 96000
default.clock.quantum = 512
default.clock.min-quantum = 32
default.clock.max-quantum = 8192
}
EOF
# Create a virtual null sink (useful for recording desktop audio)
pactl load-module module-null-sink media.class=Audio/Sink sink_name=virtual-speaker object.linger=1
# Create a loopback (route audio from virtual sink to real output)
pactl load-module module-loopback source=virtual-speaker.monitor sink=@DEFAULT_SINK@
systemctl --user restart pipewire.service pipewire-pulse.service wireplumber.service
# Verify PipeWire is now the audio server
pactl info | grep "Server Name"
#https://oneuptime.com/blog/post/2026-03-02-how-to-set-up-pipewire-as-audio-server-on-ubuntu/view