Advertisement
Guest User

my pipewire conf

a guest
Aug 7th, 2023
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.65 KB | Gaming | 0 0
  1. # Daemon config file for PipeWire version "0.3.71" #
  2. #
  3. # Copy and edit this file in /etc/pipewire for system-wide changes
  4. # or in ~/.config/pipewire for local changes.
  5. #
  6. # It is also possible to place a file with an updated section in
  7. # /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
  8. # ~/.config/pipewire/pipewire.conf.d/ for local changes.
  9. #
  10.  
  11. context.properties = {
  12. ## Configure properties in the system.
  13. #library.name.system = support/libspa-support
  14. #context.data-loop.library.name.system = support/libspa-support
  15. #support.dbus = true
  16. #link.max-buffers = 64
  17. link.max-buffers = 16 # version < 3 clients can't handle more
  18. #mem.warn-mlock = false
  19. #mem.allow-mlock = true
  20. #mem.mlock-all = false
  21. #clock.power-of-two-quantum = true
  22. #log.level = 2
  23. #cpu.zero.denormals = false
  24.  
  25. core.daemon = true # listening for socket connections
  26. core.name = pipewire-0 # core name and socket name
  27.  
  28. ## Properties for the DSP configuration.
  29. default.clock.rate = 48000
  30. default.clock.allowed-rates = [ 44100 48000 96000 ]
  31. #default.clock.quantum = 1024
  32. default.clock.min-quantum = 16
  33. #default.clock.max-quantum = 2048
  34. #default.clock.quantum-limit = 8192
  35. #default.video.width = 640
  36. #default.video.height = 480
  37. #default.video.rate.num = 25
  38. #default.video.rate.denom = 1
  39. #
  40. #settings.check-quantum = false
  41. #settings.check-rate = false
  42. #
  43. # These overrides are only applied when running in a vm.
  44. vm.overrides = {
  45. default.clock.min-quantum = 1024
  46. }
  47.  
  48. # keys checked below to disable module loading
  49. module.x11.bell = true
  50. # enables autoloading of access module, when disabled an alternative
  51. # access module needs to be loaded.
  52. module.access = true
  53. }
  54.  
  55. context.spa-libs = {
  56. #<factory-name regex> = <library-name>
  57. #
  58. # Used to find spa factory names. It maps an spa factory name
  59. # regular expression to a library name that should contain
  60. # that factory.
  61. #
  62. audio.convert.* = audioconvert/libspa-audioconvert
  63. avb.* = avb/libspa-avb
  64. api.alsa.* = alsa/libspa-alsa
  65. api.v4l2.* = v4l2/libspa-v4l2
  66. api.libcamera.* = libcamera/libspa-libcamera
  67. api.bluez5.* = bluez5/libspa-bluez5
  68. api.vulkan.* = vulkan/libspa-vulkan
  69. api.jack.* = jack/libspa-jack
  70. support.* = support/libspa-support
  71. #videotestsrc = videotestsrc/libspa-videotestsrc
  72. #audiotestsrc = audiotestsrc/libspa-audiotestsrc
  73. }
  74.  
  75. context.modules = [
  76. #{ name = <module-name>
  77. # ( args = { <key> = <value> ... } )
  78. # ( flags = [ ( ifexists ) ( nofail ) ] )
  79. # ( condition = [ { <key> = <value> ... } ... ] )
  80. #}
  81. #
  82. # Loads a module with the given parameters.
  83. # If ifexists is given, the module is ignored when it is not found.
  84. # If nofail is given, module initialization failures are ignored.
  85. # If condition is given, the module is loaded only when the context
  86. # properties all match the match rules.
  87. #
  88.  
  89. # Uses realtime scheduling to boost the audio thread priorities. This uses
  90. # RTKit if the user doesn't have permission to use regular realtime
  91. # scheduling.
  92. { name = libpipewire-module-rt
  93. args = {
  94. nice.level = -14
  95. rt.prio = 90
  96. rt.time.soft = -1
  97. rt.time.hard = -1
  98. }
  99. flags = [ ifexists nofail ]
  100. }
  101.  
  102. # The native communication protocol.
  103. { name = libpipewire-module-protocol-native }
  104.  
  105. # The profile module. Allows application to access profiler
  106. # and performance data. It provides an interface that is used
  107. # by pw-top and pw-profiler.
  108. { name = libpipewire-module-profiler }
  109.  
  110. # Allows applications to create metadata objects. It creates
  111. # a factory for Metadata objects.
  112. { name = libpipewire-module-metadata }
  113.  
  114. # Creates a factory for making devices that run in the
  115. # context of the PipeWire server.
  116. { name = libpipewire-module-spa-device-factory }
  117.  
  118. # Creates a factory for making nodes that run in the
  119. # context of the PipeWire server.
  120. { name = libpipewire-module-spa-node-factory }
  121.  
  122. # Allows creating nodes that run in the context of the
  123. # client. Is used by all clients that want to provide
  124. # data to PipeWire.
  125. { name = libpipewire-module-client-node }
  126.  
  127. # Allows creating devices that run in the context of the
  128. # client. Is used by the session manager.
  129. { name = libpipewire-module-client-device }
  130.  
  131. # The portal module monitors the PID of the portal process
  132. # and tags connections with the same PID as portal
  133. # connections.
  134. { name = libpipewire-module-portal
  135. flags = [ ifexists nofail ]
  136. }
  137.  
  138. # The access module can perform access checks and block
  139. # new clients.
  140. { name = libpipewire-module-access
  141. args = {
  142. # access.allowed to list an array of paths of allowed
  143. # apps.
  144. #access.allowed = [
  145. # /usr/bin/pipewire-media-session
  146. #]
  147.  
  148. # An array of rejected paths.
  149. #access.rejected = [ ]
  150.  
  151. # An array of paths with restricted access.
  152. #access.restricted = [ ]
  153.  
  154. # Anything not in the above lists gets assigned the
  155. # access.force permission.
  156. #access.force = flatpak
  157. }
  158. condition = [ { module.access = true } ]
  159. }
  160.  
  161. # Makes a factory for wrapping nodes in an adapter with a
  162. # converter and resampler.
  163. { name = libpipewire-module-adapter }
  164.  
  165. # Makes a factory for creating links between ports.
  166. { name = libpipewire-module-link-factory }
  167.  
  168. # Provides factories to make session manager objects.
  169. { name = libpipewire-module-session-manager }
  170.  
  171. # Use libcanberra to play X11 Bell
  172. { name = libpipewire-module-x11-bell
  173. args = {
  174. #sink.name = ""
  175. #sample.name = "bell-window-system"
  176. #x11.display = null
  177. #x11.xauthority = null
  178. }
  179. flags = [ ifexists nofail ]
  180. condition = [ { module.x11.bell = true } ]
  181. }
  182. ]
  183.  
  184. context.objects = [
  185. #{ factory = <factory-name>
  186. # ( args = { <key> = <value> ... } )
  187. # ( flags = [ ( nofail ) ] )
  188. # ( condition = [ { <key> = <value> ... } ... ] )
  189. #}
  190. #
  191. # Creates an object from a PipeWire factory with the given parameters.
  192. # If nofail is given, errors are ignored (and no object is created).
  193. # If condition is given, the object is created only when the context properties
  194. # all match the match rules.
  195. #
  196. #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
  197. #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
  198. #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
  199. #{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
  200. #{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } }
  201. #{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
  202.  
  203. # A default dummy driver. This handles nodes marked with the "node.always-driver"
  204. # property when no other driver is currently active. JACK clients need this.
  205. { factory = spa-node-factory
  206. args = {
  207. factory.name = support.node.driver
  208. node.name = Dummy-Driver
  209. node.group = pipewire.dummy
  210. priority.driver = 20000
  211. #clock.id = monotonic # realtime | tai | monotonic-raw | boottime
  212. #clock.name = "clock.system.monotonic"
  213. }
  214. }
  215. { factory = spa-node-factory
  216. args = {
  217. factory.name = support.node.driver
  218. node.name = Freewheel-Driver
  219. priority.driver = 19000
  220. node.group = pipewire.freewheel
  221. node.freewheel = true
  222. }
  223. }
  224. # An example clock reading from /dev/ptp0. Another option is to sync the
  225. # ptp clock to CLOCK_TAI and then set clock.id = tai.
  226. #{ factory = spa-node-factory
  227. # args = {
  228. # factory.name = support.node.driver
  229. # node.name = PTP0-Driver
  230. # node.group = pipewire.ptp0
  231. # priority.driver = 30000
  232. # clock.name = "clock.system.ptp0"
  233. # #clock.id = tai
  234. # clock.device = "/dev/ptp0"
  235. # }
  236. #}
  237.  
  238. # This creates a new Source node. It will have input ports
  239. # that you can link, to provide audio for this source.
  240. #{ factory = adapter
  241. # args = {
  242. # factory.name = support.null-audio-sink
  243. # node.name = "my-mic"
  244. # node.description = "Microphone"
  245. # media.class = "Audio/Source/Virtual"
  246. # audio.position = "FL,FR"
  247. # }
  248. #}
  249.  
  250. # This creates a single PCM source device for the given
  251. # alsa device path hw:0. You can change source to sink
  252. # to make a sink in the same way.
  253. #{ factory = adapter
  254. # args = {
  255. # factory.name = api.alsa.pcm.source
  256. # node.name = "alsa-source"
  257. # node.description = "PCM Source"
  258. # media.class = "Audio/Source"
  259. # api.alsa.path = "hw:0"
  260. # api.alsa.period-size = 1024
  261. # api.alsa.headroom = 0
  262. # api.alsa.disable-mmap = false
  263. # api.alsa.disable-batch = false
  264. # audio.format = "S16LE"
  265. # audio.rate = 48000
  266. # audio.channels = 2
  267. # audio.position = "FL,FR"
  268. # }
  269. #}
  270.  
  271. # Use the metadata factory to create metadata and some default values.
  272. #{ factory = metadata
  273. # args = {
  274. # metadata.name = my-metadata
  275. # metadata.values = [
  276. # { key = default.audio.sink value = { name = somesink } }
  277. # { key = default.audio.source value = { name = somesource } }
  278. # ]
  279. # }
  280. #}
  281. ]
  282.  
  283. context.exec = [
  284. #{ path = <program-name>
  285. # ( args = "<arguments>" )
  286. # ( condition = [ { <key> = <value> ... } ... ] )
  287. #}
  288. #
  289. # Execute the given program with arguments.
  290. # If condition is given, the program is executed only when the context
  291. # properties all match the match rules.
  292. #
  293. # You can optionally start the session manager here,
  294. # but it is better to start it as a systemd service.
  295. # Run the session manager with -h for options.
  296. #
  297. #{ path = "/usr/bin/pipewire-media-session" args = ""
  298. # condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
  299. #
  300. # You can optionally start the pulseaudio-server here as well
  301. # but it is better to start it as a systemd service.
  302. # It can be interesting to start another daemon here that listens
  303. # on another address with the -a option (eg. -a tcp:4713).
  304. #
  305. #{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf"
  306. # condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
  307. ]
  308.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement