Open quantenzitrone opened 3 months ago
Currently the app fetches pipewire data by running the pw-cli list-objects
command here
since pipewire is not accessible because the app doesn't have root permissions, this won't work
I'm not aware of another way to get this information that would work in this context
pw-cli list-objects
works correctly on my system:
at least this is the output, which includes HDA INTEL PCH the main audio sink on my laptop
id 0, type PipeWire:Interface:Core/4
object.serial = "0"
core.name = "pipewire-0"
id 1, type PipeWire:Interface:Module/3
object.serial = "1"
module.name = "libpipewire-module-rt"
id 2, type PipeWire:Interface:Module/3
object.serial = "2"
module.name = "libpipewire-module-protocol-native"
id 3, type PipeWire:Interface:Module/3
object.serial = "3"
module.name = "libpipewire-module-profiler"
id 4, type PipeWire:Interface:Profiler/3
object.serial = "4"
id 5, type PipeWire:Interface:Module/3
object.serial = "5"
module.name = "libpipewire-module-metadata"
id 6, type PipeWire:Interface:Factory/3
object.serial = "6"
module.id = "5"
factory.name = "metadata"
factory.type.name = "PipeWire:Interface:Metadata"
factory.type.version = "3"
id 7, type PipeWire:Interface:Module/3
object.serial = "7"
module.name = "libpipewire-module-spa-device-factory"
id 8, type PipeWire:Interface:Factory/3
object.serial = "8"
module.id = "7"
factory.name = "spa-device-factory"
factory.type.name = "PipeWire:Interface:Device"
factory.type.version = "3"
id 9, type PipeWire:Interface:Module/3
object.serial = "9"
module.name = "libpipewire-module-spa-node-factory"
id 10, type PipeWire:Interface:Factory/3
object.serial = "10"
module.id = "9"
factory.name = "spa-node-factory"
factory.type.name = "PipeWire:Interface:Node"
factory.type.version = "3"
id 11, type PipeWire:Interface:Module/3
object.serial = "11"
module.name = "libpipewire-module-client-node"
id 12, type PipeWire:Interface:Factory/3
object.serial = "12"
module.id = "11"
factory.name = "client-node"
factory.type.name = "PipeWire:Interface:ClientNode"
factory.type.version = "5"
id 13, type PipeWire:Interface:Module/3
object.serial = "13"
module.name = "libpipewire-module-client-device"
id 14, type PipeWire:Interface:Factory/3
object.serial = "14"
module.id = "13"
factory.name = "client-device"
factory.type.name = "Spa:Pointer:Interface:Device"
factory.type.version = "0"
id 15, type PipeWire:Interface:Module/3
object.serial = "16"
module.name = "libpipewire-module-access"
id 16, type PipeWire:Interface:Module/3
object.serial = "17"
module.name = "libpipewire-module-adapter"
id 17, type PipeWire:Interface:Factory/3
object.serial = "18"
module.id = "16"
factory.name = "adapter"
factory.type.name = "PipeWire:Interface:Node"
factory.type.version = "3"
id 18, type PipeWire:Interface:Module/3
object.serial = "19"
module.name = "libpipewire-module-link-factory"
id 19, type PipeWire:Interface:Factory/3
object.serial = "20"
module.id = "18"
factory.name = "link-factory"
factory.type.name = "PipeWire:Interface:Link"
factory.type.version = "3"
id 20, type PipeWire:Interface:Module/3
object.serial = "21"
module.name = "libpipewire-module-session-manager"
id 21, type PipeWire:Interface:Factory/3
object.serial = "22"
module.id = "20"
factory.name = "client-endpoint"
factory.type.name = "PipeWire:Interface:ClientEndpoint"
factory.type.version = "0"
id 22, type PipeWire:Interface:Factory/3
object.serial = "23"
module.id = "20"
factory.name = "client-session"
factory.type.name = "PipeWire:Interface:ClientSession"
factory.type.version = "0"
id 23, type PipeWire:Interface:Factory/3
object.serial = "24"
module.id = "20"
factory.name = "session"
factory.type.name = "PipeWire:Interface:Session"
factory.type.version = "0"
id 24, type PipeWire:Interface:Factory/3
object.serial = "25"
module.id = "20"
factory.name = "endpoint"
factory.type.name = "PipeWire:Interface:Endpoint"
factory.type.version = "0"
id 25, type PipeWire:Interface:Factory/3
object.serial = "26"
module.id = "20"
factory.name = "endpoint-stream"
factory.type.name = "PipeWire:Interface:EndpointStream"
factory.type.version = "0"
id 26, type PipeWire:Interface:Factory/3
object.serial = "27"
module.id = "20"
factory.name = "endpoint-link"
factory.type.name = "PipeWire:Interface:EndpointLink"
factory.type.version = "0"
id 27, type PipeWire:Interface:Node/3
object.serial = "30"
factory.id = "10"
priority.driver = "20000"
node.name = "Dummy-Driver"
id 28, type PipeWire:Interface:Node/3
object.serial = "31"
factory.id = "10"
priority.driver = "19000"
node.name = "Freewheel-Driver"
id 29, type PipeWire:Interface:Metadata/3
object.serial = "32"
metadata.name = "settings"
id 30, type PipeWire:Interface:Client/3
object.serial = "33"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1850"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "pipewire"
id 31, type PipeWire:Interface:Client/3
object.serial = "34"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1871"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0-manager"
pipewire.access = "unrestricted"
application.name = "WirePlumber"
id 32, type PipeWire:Interface:Client/3
object.serial = "35"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1850"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "i3status-rs_context"
id 33, type PipeWire:Interface:Node/3
object.serial = "62"
factory.id = "13"
client.id = "45"
node.description = "BLE MIDI 1"
node.name = "bluez_midi.server"
media.class = "Midi/Bridge"
id 34, type PipeWire:Interface:Metadata/3
metadata.name = "schema-sm-settings"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "37"
id 35, type PipeWire:Interface:Metadata/3
metadata.name = "persistent-sm-settings"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "38"
id 36, type PipeWire:Interface:Metadata/3
metadata.name = "sm-settings"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "39"
id 37, type PipeWire:Interface:Metadata/3
metadata.name = "sm-objects"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "40"
id 38, type PipeWire:Interface:Metadata/3
metadata.name = "default"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "41"
id 39, type PipeWire:Interface:Metadata/3
metadata.name = "filters"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "42"
id 40, type PipeWire:Interface:Metadata/3
metadata.name = "route-settings"
factory.id = "6"
module.id = "5"
client.id = "31"
object.serial = "43"
id 41, type PipeWire:Interface:Device/3
object.serial = "66"
factory.id = "14"
client.id = "45"
device.api = "v4l2"
device.description = "HP Wide Vision HD Camera"
device.name = "v4l2_device.pci-0000_00_14.0-usb-0_4_1.0"
media.class = "Video/Device"
id 42, type PipeWire:Interface:Port/3
object.serial = "64"
object.path = "bluez_midi.server:output_0"
format.dsp = "8 bit raw midi"
node.id = "33"
port.id = "0"
port.name = "out"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "out"
id 43, type PipeWire:Interface:Device/3
object.serial = "65"
factory.id = "14"
client.id = "45"
device.api = "v4l2"
device.description = "HP Wide Vision HD Camera"
device.name = "v4l2_device.pci-0000_00_14.0-usb-0_4_1.0"
media.class = "Video/Device"
id 44, type PipeWire:Interface:Port/3
object.serial = "63"
object.path = "bluez_midi.server:input_0"
format.dsp = "8 bit raw midi"
node.id = "33"
port.id = "0"
port.name = "in"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "in"
id 45, type PipeWire:Interface:Client/3
object.serial = "48"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1871"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0-manager"
pipewire.access = "unrestricted"
application.name = "WirePlumber [export]"
id 46, type PipeWire:Interface:Client/3
object.serial = "49"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1869"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = ".xdg-desktop-portal-wrapped"
id 47, type PipeWire:Interface:Client/3
object.serial = "50"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1980"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = ".xdg-desktop-portal-wlr-wrapped"
id 48, type PipeWire:Interface:Device/3
object.serial = "51"
factory.id = "14"
client.id = "45"
device.api = "alsa"
device.description = "GP107GL High Definition Audio Controller"
device.name = "alsa_card.pci-0000_01_00.1"
device.nick = "HDA NVidia"
media.class = "Audio/Device"
id 49, type PipeWire:Interface:Device/3
object.serial = "52"
factory.id = "14"
client.id = "45"
device.api = "alsa"
device.description = "Built-in Audio"
device.name = "alsa_card.pci-0000_00_1f.3"
device.nick = "HDA Intel PCH"
media.class = "Audio/Device"
id 50, type PipeWire:Interface:Node/3
object.serial = "53"
factory.id = "10"
client.id = "45"
priority.session = "100"
priority.driver = "1"
node.name = "Midi-Bridge"
media.class = "Midi/Bridge"
id 51, type PipeWire:Interface:Port/3
object.serial = "54"
object.path = "alsa:seq:default:client_14:playback_0"
format.dsp = "8 bit raw midi"
node.id = "50"
port.id = "0"
port.name = "Midi Through:(playback_0) Midi Through Port-0"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "Midi Through:Midi Through Port-0"
id 52, type PipeWire:Interface:Port/3
object.serial = "55"
object.path = "alsa:seq:default:client_14:capture_0"
format.dsp = "8 bit raw midi"
node.id = "50"
port.id = "0"
port.name = "Midi Through:(capture_0) Midi Through Port-0"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "Midi Through:Midi Through Port-0"
id 53, type PipeWire:Interface:Port/3
object.serial = "70"
object.path = "alsa:pcm:0:front:0:playback:playback_0"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FL"
port.id = "0"
port.name = "playback_FL"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC295 Analog:playback_FL"
id 54, type PipeWire:Interface:Port/3
object.serial = "69"
object.path = "v4l2:/dev/video0:capture_0"
node.id = "55"
port.id = "0"
port.name = "capture_1"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "HP Wide Vision HD Camera:capture_1"
id 55, type PipeWire:Interface:Node/3
object.serial = "68"
object.path = "v4l2:/dev/video0"
factory.id = "10"
client.id = "45"
device.id = "43"
priority.session = "1000"
node.description = "HP Wide Vision HD Camera (V4L2)"
node.name = "v4l2_input.pci-0000_00_14.0-usb-0_4_1.0"
node.nick = "HP Wide Vision HD Camera"
media.class = "Video/Source"
media.role = "Camera"
id 56, type PipeWire:Interface:Device/3
object.serial = "67"
factory.id = "14"
client.id = "45"
device.api = "libcamera"
device.description = "Unknown device"
device.name = "libcamera_device.0"
media.class = "Video/Device"
id 57, type PipeWire:Interface:Node/3
object.serial = "60"
object.path = "alsa:pcm:0:front:0:playback"
factory.id = "17"
client.id = "45"
device.id = "49"
priority.session = "1009"
priority.driver = "1009"
node.description = "Built-in Audio Analog Stereo"
node.name = "alsa_output.pci-0000_00_1f.3.analog-stereo"
node.nick = "ALC295 Analog"
media.class = "Audio/Sink"
id 58, type PipeWire:Interface:Node/3
object.serial = "61"
object.path = "alsa:pcm:0:front:0:capture"
factory.id = "17"
client.id = "45"
device.id = "49"
priority.session = "2009"
priority.driver = "2009"
node.description = "Built-in Audio Analog Stereo"
node.name = "alsa_input.pci-0000_00_1f.3.analog-stereo"
node.nick = "ALC295 Analog"
media.class = "Audio/Source"
id 59, type PipeWire:Interface:Port/3
object.serial = "71"
object.path = "alsa:pcm:0:front:0:playback:monitor_0"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FL"
port.id = "0"
port.name = "monitor_FL"
port.direction = "out"
port.monitor = "true"
port.alias = "ALC295 Analog:monitor_FL"
id 60, type PipeWire:Interface:Port/3
object.serial = "72"
object.path = "alsa:pcm:0:front:0:playback:playback_1"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FR"
port.id = "1"
port.name = "playback_FR"
port.direction = "in"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC295 Analog:playback_FR"
id 61, type PipeWire:Interface:Port/3
object.serial = "73"
object.path = "alsa:pcm:0:front:0:playback:monitor_1"
format.dsp = "32 bit float mono audio"
node.id = "57"
audio.channel = "FR"
port.id = "1"
port.name = "monitor_FR"
port.direction = "out"
port.monitor = "true"
port.alias = "ALC295 Analog:monitor_FR"
id 62, type PipeWire:Interface:Port/3
object.serial = "74"
object.path = "alsa:pcm:0:front:0:capture:capture_0"
format.dsp = "32 bit float mono audio"
node.id = "58"
audio.channel = "FL"
port.id = "0"
port.name = "capture_FL"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC295 Analog:capture_FL"
id 63, type PipeWire:Interface:Port/3
object.serial = "75"
object.path = "alsa:pcm:0:front:0:capture:capture_1"
format.dsp = "32 bit float mono audio"
node.id = "58"
audio.channel = "FR"
port.id = "1"
port.name = "capture_FR"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "ALC295 Analog:capture_FR"
id 64, type PipeWire:Interface:Node/3
object.serial = "76"
object.path = "libcamera:\_SB_.PCI0.XHC_.RHUB.HS04-4:1.0-0bda:58eb"
factory.id = "10"
client.id = "45"
device.id = "56"
priority.session = "800"
node.description = "Built-in Front Camera"
node.name = "libcamera_input.__SB_.PCI0.XHC_.RHUB.HS04-4_1.0-0bda_58eb"
node.nick = "HP Wide Vision HD Camera HP Wi"
media.class = "Video/Source"
media.role = "Camera"
id 65, type PipeWire:Interface:Port/3
object.serial = "77"
object.path = "libcamera:\_SB_.PCI0.XHC_.RHUB.HS04-4:1.0-0bda:58eb:capture_0"
node.id = "64"
port.id = "0"
port.name = "capture_1"
port.direction = "out"
port.physical = "true"
port.terminal = "true"
port.alias = "HP Wide Vision HD Camera HP Wi:capture_1"
id 66, type PipeWire:Interface:Client/3
object.serial = "78"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "1850"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "i3status-rs_context"
id 67, type PipeWire:Interface:Client/3
object.serial = "80"
module.id = "2"
pipewire.protocol = "protocol-native"
pipewire.sec.pid = "251578"
pipewire.sec.uid = "1000"
pipewire.sec.gid = "100"
pipewire.sec.label = "kernel"
pipewire.sec.socket = "pipewire-0"
pipewire.access = "unrestricted"
application.name = "pw-cli"
I have pipewire and wireplumber running as a system-wide systemd service and when trying out this application i get:
Error: "failed to connect: Host is down"
.To test out if it really is the system-wideness, i stopped my system-wide pipewire and wireplumber and ran them both in a terminal:
pipewire& wireplumber
simple-wireplumber-gui worked, so pipewire running as system service is definitely the reason.Another oddity about my setup: Although pipewire is running as a system service, i set it up to run as my local user to mitigate some of the downsides of pipewire running as a system service, but I don't think that influences this much.