mirror of
				https://github.com/AquaMorph/dotfiles.git
				synced 2025-10-31 07:43:18 +00:00 
			
		
		
		
	Pipewire configs
This commit is contained in:
		
							
								
								
									
										104
									
								
								pipewire/jack.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								pipewire/jack.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | ||||
| # JACK client config file for PipeWire version "0.3.48" # | ||||
| # | ||||
| # Copy and edit this file in /etc/pipewire for system-wide changes | ||||
| # or in ~/.config/pipewire for local changes. | ||||
| # | ||||
| # It is also possible to place a file with an updated section in | ||||
| # /etc/pipewire/jack.conf.d/ for system-wide changes or in | ||||
| # ~/.config/pipewire/jack.conf.d/ for local changes. | ||||
| # | ||||
|  | ||||
| context.properties = { | ||||
|     ## Configure properties in the system. | ||||
|     #mem.warn-mlock  = false | ||||
|     #mem.allow-mlock = true | ||||
|     mem.mlock-all   = true | ||||
|     log.level        = 0 | ||||
|  | ||||
|     #default.clock.quantum-limit = 8192 | ||||
| } | ||||
|  | ||||
| context.spa-libs = { | ||||
|     #<factory-name regex> = <library-name> | ||||
|     # | ||||
|     # Used to find spa factory names. It maps an spa factory name | ||||
|     # regular expression to a library name that should contain | ||||
|     # that factory. | ||||
|     # | ||||
|     support.* = support/libspa-support | ||||
| } | ||||
|  | ||||
| context.modules = [ | ||||
|     #{ name = <module-name> | ||||
|     #    [ args  = { <key> = <value> ... } ] | ||||
|     #    [ flags = [ [ ifexists ] [ nofail ] ] | ||||
|     #} | ||||
|     # | ||||
|     # Loads a module with the given parameters. | ||||
|     # If ifexists is given, the module is ignored when it is not found. | ||||
|     # If nofail is given, module initialization failures are ignored. | ||||
|     # | ||||
|     # | ||||
|     # Boost the data thread priority. | ||||
|     { name = libpipewire-module-rt | ||||
|         args = { | ||||
|             #rt.prio      = 88 | ||||
|             #rt.time.soft = -1 | ||||
|             #rt.time.hard = -1 | ||||
|         } | ||||
|         flags = [ ifexists nofail ] | ||||
|     } | ||||
|  | ||||
|     # The native communication protocol. | ||||
|     { name = libpipewire-module-protocol-native } | ||||
|  | ||||
|     # Allows creating nodes that run in the context of the | ||||
|     # client. Is used by all clients that want to provide | ||||
|     # data to PipeWire. | ||||
|     { name = libpipewire-module-client-node } | ||||
|  | ||||
|     # Allows applications to create metadata objects. It creates | ||||
|     # a factory for Metadata objects. | ||||
|     { name = libpipewire-module-metadata } | ||||
| ] | ||||
|  | ||||
| # global properties for all jack clients | ||||
| jack.properties = { | ||||
|      #node.latency       = 1024/48000 | ||||
|      #node.rate          = 1/48000 | ||||
|      #node.quantum       = 1024/48000 | ||||
|      #node.lock-quantum  = true | ||||
|      #node.force-quantum = 0 | ||||
|      #jack.show-monitor  = true | ||||
|      #jack.merge-monitor = false | ||||
|      #jack.short-name    = false | ||||
|      #jack.filter-name   = false | ||||
|      # | ||||
|      # allow:           Don't restrict self connect requests | ||||
|      # fail-external:   Fail self connect requests to external ports only | ||||
|      # ignore-external: Ignore self connect requests to external ports only | ||||
|      # fail-all:        Fail all self connect requests | ||||
|      # ignore-all:      Ignore all self connect requests | ||||
|      #jack.self-connect-mode = allow | ||||
|      #jack.locked-process    = true | ||||
|      #jack.default-as-system    = false | ||||
| } | ||||
|  | ||||
| # client specific properties | ||||
| jack.rules = [ | ||||
|     { | ||||
|         matches = [ | ||||
|             { | ||||
|                 # all keys must match the value. ~ starts regex. | ||||
|                 #client.name                = "Carla" | ||||
|                 #application.process.binary = "jack_simple_client" | ||||
|                 #application.name           = "~jack_simple_client.*" | ||||
|             } | ||||
|         ] | ||||
|         actions = { | ||||
|             update-props = { | ||||
|                 #node.latency = 512/48000 | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| ] | ||||
							
								
								
									
										139
									
								
								pipewire/pipewire-pulse.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								pipewire/pipewire-pulse.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,139 @@ | ||||
| # PulseAudio config file for PipeWire version "0.3.48" # | ||||
| # | ||||
| # Copy and edit this file in /etc/pipewire for system-wide changes | ||||
| # or in ~/.config/pipewire for local changes. | ||||
| # | ||||
| # It is also possible to place a file with an updated section in | ||||
| # /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in | ||||
| # ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes. | ||||
| # | ||||
|  | ||||
| context.properties = { | ||||
|     ## Configure properties in the system. | ||||
|     #mem.warn-mlock  = false | ||||
|     #mem.allow-mlock = true | ||||
|     mem.mlock-all   = true | ||||
|     #log.level       = 2 | ||||
|  | ||||
|     #default.clock.quantum-limit = 8192 | ||||
| } | ||||
|  | ||||
| context.spa-libs = { | ||||
|     audio.convert.* = audioconvert/libspa-audioconvert | ||||
|     support.*       = support/libspa-support | ||||
| } | ||||
|  | ||||
| context.modules = [ | ||||
|     { name = libpipewire-module-rt | ||||
|         args = { | ||||
|             nice.level   = -11 | ||||
|             #rt.prio      = 88 | ||||
|             #rt.time.soft = -1 | ||||
|             #rt.time.hard = -1 | ||||
|         } | ||||
|         flags = [ ifexists nofail ] | ||||
|     } | ||||
|     { name = libpipewire-module-protocol-native } | ||||
|     { name = libpipewire-module-client-node } | ||||
|     { name = libpipewire-module-adapter } | ||||
|     { name = libpipewire-module-metadata } | ||||
|  | ||||
|     { name = libpipewire-module-protocol-pulse | ||||
|         args = { | ||||
|             # the addresses this server listens on | ||||
|             server.address = [ | ||||
|                 "unix:native" | ||||
|                 #"unix:/tmp/something"              # absolute paths may be used | ||||
|                 #"tcp:4713"                         # IPv4 and IPv6 on all addresses | ||||
|                 #"tcp:[::]:9999"                    # IPv6 on all addresses | ||||
|                 #"tcp:127.0.0.1:8888"               # IPv4 on a single address | ||||
|                 # | ||||
|                 #{ address = "tcp:4713"             # address | ||||
|                 #  max-clients = 64                 # maximum number of clients | ||||
|                 #  listen-backlog = 32              # backlog in the server listen queue | ||||
|                 #  client.access = "restricted"     # permissions for clients | ||||
|                 #} | ||||
|             ] | ||||
|             #pulse.min.req          = 256/48000     # 5ms | ||||
|             #pulse.default.req      = 960/48000     # 20 milliseconds | ||||
|             #pulse.min.frag         = 256/48000     # 5ms | ||||
|             #pulse.default.frag     = 96000/48000   # 2 seconds | ||||
|             #pulse.default.tlength  = 96000/48000   # 2 seconds | ||||
|             #pulse.min.quantum      = 256/48000     # 5ms | ||||
|             #pulse.default.format   = F32 | ||||
|             #pulse.default.position = [ FL FR ] | ||||
|             # These overrides are only applied when running in a vm. | ||||
|             vm.overrides = { | ||||
|                 pulse.min.quantum = 1024/48000      # 22ms | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| ] | ||||
|  | ||||
| # Extra modules can be loaded here. Setup in default.pa can be moved here | ||||
| context.exec = [ | ||||
|     { path = "pactl"        args = "load-module module-always-sink" } | ||||
|     #{ path = "pactl"        args = "load-module module-switch-on-connect" } | ||||
|     #{ path = "/usr/bin/sh"  args = "~/.config/pipewire/default.pw" } | ||||
| ] | ||||
|  | ||||
| stream.properties = { | ||||
|     #node.latency          = 1024/48000 | ||||
|     #node.autoconnect      = true | ||||
|     #resample.quality      = 4 | ||||
|     #channelmix.normalize  = true | ||||
|     #channelmix.mix-lfe    = false | ||||
|     #channelmix.upmix      = false | ||||
|     #channelmix.lfe-cutoff = 0 | ||||
|     #channelmix.fc-cutoff  = 0 | ||||
|     #channelmix.rear-delay = 12.0 | ||||
|     #channelmix.stereo-widen = 0.0 | ||||
|     #channelmix.hilbert-taps = 0 | ||||
| } | ||||
|  | ||||
| # client/stream specific properties | ||||
| pulse.rules = [ | ||||
|     { | ||||
|         matches = [ | ||||
|             { | ||||
|                 # all keys must match the value. ~ starts regex. | ||||
|                 #client.name                = "Firefox" | ||||
|                 #application.process.binary = "teams" | ||||
|                 #application.name           = "~speech-dispatcher.*" | ||||
|             } | ||||
|         ] | ||||
|         actions = { | ||||
|             update-props = { | ||||
|                 #node.latency = 512/48000 | ||||
|             } | ||||
|             # Possible quirks:" | ||||
|             #    force-s16-info                 forces sink and source info as S16 format | ||||
|             #    remove-capture-dont-move       removes the capture DONT_MOVE flag | ||||
|             #quirks = [ ] | ||||
|         } | ||||
|     } | ||||
|     { | ||||
|         # skype does not want to use devices that don't have an S16 sample format. | ||||
|         matches = [ | ||||
|              { application.process.binary = "teams" } | ||||
|              { application.process.binary = "skypeforlinux" } | ||||
|         ] | ||||
|         actions = { quirks = [ force-s16-info ] } | ||||
|     } | ||||
|     { | ||||
|         # firefox marks the capture streams as don't move and then they | ||||
|         # can't be moved with pavucontrol or other tools. | ||||
|         matches = [ { application.process.binary = "firefox" } ] | ||||
|         actions = { quirks = [ remove-capture-dont-move ] } | ||||
|     } | ||||
|     { | ||||
|         # speech dispatcher asks for too small latency and then underruns. | ||||
|         matches = [ { application.name = "~speech-dispatcher*" } ] | ||||
|         actions = { | ||||
|             update-props = { | ||||
|                 pulse.min.req          = 1024/48000     # 21ms | ||||
|                 pulse.min.quantum      = 1024/48000     # 21ms | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| ] | ||||
							
								
								
									
										266
									
								
								pipewire/pipewire.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										266
									
								
								pipewire/pipewire.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,266 @@ | ||||
| # Daemon config file for PipeWire version "0.3.48" # | ||||
| # | ||||
| # Copy and edit this file in /etc/pipewire for system-wide changes | ||||
| # or in ~/.config/pipewire for local changes. | ||||
| # | ||||
| # It is also possible to place a file with an updated section in | ||||
| # /etc/pipewire/pipewire.conf.d/ for system-wide changes or in | ||||
| # ~/.config/pipewire/pipewire.conf.d/ for local changes. | ||||
| # | ||||
|  | ||||
| context.properties = { | ||||
|     ## Configure properties in the system. | ||||
|     #library.name.system                   = support/libspa-support | ||||
|     #context.data-loop.library.name.system = support/libspa-support | ||||
|     #support.dbus                          = true | ||||
|     #link.max-buffers                      = 64 | ||||
|     link.max-buffers                       = 16                       # version < 3 clients can't handle more | ||||
|     #mem.warn-mlock                        = false | ||||
|     #mem.allow-mlock                       = true | ||||
|     #mem.mlock-all                         = false | ||||
|     #clock.power-of-two-quantum            = true | ||||
|     #log.level                             = 2 | ||||
|     #cpu.zero.denormals                    = false | ||||
|  | ||||
|     core.daemon = true              # listening for socket connections | ||||
|     core.name   = pipewire-0        # core name and socket name | ||||
|  | ||||
|     ## Properties for the DSP configuration. | ||||
|     #default.clock.rate          = 48000 | ||||
|     #default.clock.allowed-rates = [ 48000 ] | ||||
|     #default.clock.quantum       = 1024 | ||||
|     default.clock.min-quantum   = 512 | ||||
|     default.clock.max-quantum   = 512 | ||||
|     default.clock.quantum-limit = 512 | ||||
|     #default.video.width         = 640 | ||||
|     #default.video.height        = 480 | ||||
|     #default.video.rate.num      = 25 | ||||
|     #default.video.rate.denom    = 1 | ||||
|     # | ||||
|     #settings.check-quantum      = false | ||||
|     #settings.check-rate         = false | ||||
|     # | ||||
|     # These overrides are only applied when running in a vm. | ||||
|     vm.overrides = { | ||||
|         default.clock.min-quantum = 1024 | ||||
|     } | ||||
| } | ||||
|  | ||||
| context.spa-libs = { | ||||
|     #<factory-name regex> = <library-name> | ||||
|     # | ||||
|     # Used to find spa factory names. It maps an spa factory name | ||||
|     # regular expression to a library name that should contain | ||||
|     # that factory. | ||||
|     # | ||||
|     audio.convert.* = audioconvert/libspa-audioconvert | ||||
|     api.alsa.*      = alsa/libspa-alsa | ||||
|     api.v4l2.*      = v4l2/libspa-v4l2 | ||||
|     api.libcamera.* = libcamera/libspa-libcamera | ||||
|     api.bluez5.*    = bluez5/libspa-bluez5 | ||||
|     api.vulkan.*    = vulkan/libspa-vulkan | ||||
|     api.jack.*      = jack/libspa-jack | ||||
|     support.*       = support/libspa-support | ||||
|     #videotestsrc   = videotestsrc/libspa-videotestsrc | ||||
|     #audiotestsrc   = audiotestsrc/libspa-audiotestsrc | ||||
| } | ||||
|  | ||||
| context.modules = [ | ||||
|     #{ name = <module-name> | ||||
|     #    [ args  = { <key> = <value> ... } ] | ||||
|     #    [ flags = [ [ ifexists ] [ nofail ] ] | ||||
|     #} | ||||
|     # | ||||
|     # Loads a module with the given parameters. | ||||
|     # If ifexists is given, the module is ignored when it is not found. | ||||
|     # If nofail is given, module initialization failures are ignored. | ||||
|     # | ||||
|  | ||||
|     # Uses realtime scheduling to boost the audio thread priorities. This uses | ||||
|     # RTKit if the user doesn't have permission to use regular realtime | ||||
|     # scheduling. | ||||
|     { name = libpipewire-module-rt | ||||
|         args = { | ||||
|             nice.level    = -11 | ||||
|             #rt.prio      = 88 | ||||
|             #rt.time.soft = -1 | ||||
|             #rt.time.hard = -1 | ||||
|         } | ||||
|         flags = [ ifexists nofail ] | ||||
|     } | ||||
|  | ||||
|     # The native communication protocol. | ||||
|     { name = libpipewire-module-protocol-native } | ||||
|  | ||||
|     # The profile module. Allows application to access profiler | ||||
|     # and performance data. It provides an interface that is used | ||||
|     # by pw-top and pw-profiler. | ||||
|     { name = libpipewire-module-profiler } | ||||
|  | ||||
|     # Allows applications to create metadata objects. It creates | ||||
|     # a factory for Metadata objects. | ||||
|     { name = libpipewire-module-metadata } | ||||
|  | ||||
|     # Creates a factory for making devices that run in the | ||||
|     # context of the PipeWire server. | ||||
|     { name = libpipewire-module-spa-device-factory } | ||||
|  | ||||
|     # Creates a factory for making nodes that run in the | ||||
|     # context of the PipeWire server. | ||||
|     { name = libpipewire-module-spa-node-factory } | ||||
|  | ||||
|     # Allows creating nodes that run in the context of the | ||||
|     # client. Is used by all clients that want to provide | ||||
|     # data to PipeWire. | ||||
|     { name = libpipewire-module-client-node } | ||||
|  | ||||
|     # Allows creating devices that run in the context of the | ||||
|     # client. Is used by the session manager. | ||||
|     { name = libpipewire-module-client-device } | ||||
|  | ||||
|     # The portal module monitors the PID of the portal process | ||||
|     # and tags connections with the same PID as portal | ||||
|     # connections. | ||||
|     { name = libpipewire-module-portal | ||||
|         flags = [ ifexists nofail ] | ||||
|     } | ||||
|  | ||||
|     # The access module can perform access checks and block | ||||
|     # new clients. | ||||
|     { name = libpipewire-module-access | ||||
|         args = { | ||||
|             # access.allowed to list an array of paths of allowed | ||||
|             # apps. | ||||
|             #access.allowed = [ | ||||
|             #    /usr/bin/pipewire-media-session | ||||
|             #] | ||||
|  | ||||
|             # An array of rejected paths. | ||||
|             #access.rejected = [ ] | ||||
|  | ||||
|             # An array of paths with restricted access. | ||||
|             #access.restricted = [ ] | ||||
|  | ||||
|             # Anything not in the above lists gets assigned the | ||||
|             # access.force permission. | ||||
|             #access.force = flatpak | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     # Makes a factory for wrapping nodes in an adapter with a | ||||
|     # converter and resampler. | ||||
|     { name = libpipewire-module-adapter } | ||||
|  | ||||
|     # Makes a factory for creating links between ports. | ||||
|     { name = libpipewire-module-link-factory } | ||||
|  | ||||
|     # Provides factories to make session manager objects. | ||||
|     { name = libpipewire-module-session-manager } | ||||
|  | ||||
|     # Use libcanberra to play X11 Bell | ||||
|     #{ name = libpipewire-module-x11-bell | ||||
|     #  args = { | ||||
|     #      #sink.name = "" | ||||
|     #      #sample.name = "bell-window-system" | ||||
|     #      #x11.display = null | ||||
|     #      #x11.xauthority = null | ||||
|     #  } | ||||
|     #} | ||||
| ] | ||||
|  | ||||
| context.objects = [ | ||||
|     #{ factory = <factory-name> | ||||
|     #    [ args  = { <key> = <value> ... } ] | ||||
|     #    [ flags = [ [ nofail ] ] | ||||
|     #} | ||||
|     # | ||||
|     # Creates an object from a PipeWire factory with the given parameters. | ||||
|     # If nofail is given, errors are ignored (and no object is created). | ||||
|     # | ||||
|     #{ factory = spa-node-factory   args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } } | ||||
|     #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] } | ||||
|     #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } } | ||||
|     #{ factory = spa-node-factory   args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } } | ||||
|     #{ factory = adapter            args = { factory.name = audiotestsrc node.name = my-test } } | ||||
|     #{ factory = spa-node-factory   args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } } | ||||
|  | ||||
|     # A default dummy driver. This handles nodes marked with the "node.always-driver" | ||||
|     # property when no other driver is currently active. JACK clients need this. | ||||
|     { factory = spa-node-factory | ||||
|         args = { | ||||
|             factory.name    = support.node.driver | ||||
|             node.name       = Dummy-Driver | ||||
|             node.group      = pipewire.dummy | ||||
|             priority.driver = 20000 | ||||
|         } | ||||
|     } | ||||
|     { factory = spa-node-factory | ||||
|         args = { | ||||
|             factory.name    = support.node.driver | ||||
|             node.name       = Freewheel-Driver | ||||
|             priority.driver = 19000 | ||||
|             node.group      = pipewire.freewheel | ||||
|             node.freewheel  = true | ||||
|         } | ||||
|     } | ||||
|     # This creates a new Source node. It will have input ports | ||||
|     # that you can link, to provide audio for this source. | ||||
|     { factory = adapter | ||||
|         args = { | ||||
|             factory.name     = support.null-audio-sink | ||||
|             node.name        = "sm7b" | ||||
|             node.description = "SM7B" | ||||
|             media.class      = "Audio/Source/Virtual" | ||||
|             audio.position   = "FL,FR" | ||||
|         } | ||||
|     } | ||||
|     { factory = adapter | ||||
|         args = { | ||||
|             factory.name     = support.null-audio-sink | ||||
|             node.name        = "speakers" | ||||
|             node.description = "Speakers" | ||||
|             media.class      = "Audio/Sink" | ||||
|             audio.position   = "FL,FR" | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     # This creates a single PCM source device for the given | ||||
|     # alsa device path hw:0. You can change source to sink | ||||
|     # to make a sink in the same way. | ||||
|     #{ factory = adapter | ||||
|     #    args = { | ||||
|     #        factory.name           = api.alsa.pcm.source | ||||
|     #        node.name              = "alsa-source" | ||||
|     #        node.description       = "PCM Source" | ||||
|     #        media.class            = "Audio/Source" | ||||
|     #        api.alsa.path          = "hw:0" | ||||
|     #        api.alsa.period-size   = 1024 | ||||
|     #        api.alsa.headroom      = 0 | ||||
|     #        api.alsa.disable-mmap  = false | ||||
|     #        api.alsa.disable-batch = false | ||||
|     #        audio.format           = "S16LE" | ||||
|     #        audio.rate             = 48000 | ||||
|     #        audio.channels         = 2 | ||||
|     #        audio.position         = "FL,FR" | ||||
|     #    } | ||||
|     #} | ||||
| ] | ||||
|  | ||||
| context.exec = [ | ||||
|     #{ path = <program-name> [ args = "<arguments>" ] } | ||||
|     # | ||||
|     # Execute the given program with arguments. | ||||
|     # | ||||
|     # You can optionally start the session manager here, | ||||
|     # but it is better to start it as a systemd service. | ||||
|     # Run the session manager with -h for options. | ||||
|     # | ||||
|     #{ path = "/usr/bin/pipewire-media-session" args = "" } | ||||
|     # | ||||
|     # You can optionally start the pulseaudio-server here as well | ||||
|     # but it is better to start it as a systemd service. | ||||
|     # It can be interesting to start another daemon here that listens | ||||
|     # on another address with the -a option (eg. -a tcp:4713). | ||||
|     # | ||||
|     #{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" } | ||||
| ] | ||||
		Reference in New Issue
	
	Block a user