diff --git a/etc/pacman.conf b/etc/pacman.conf index 74cc0ee..95df994 100644 --- a/etc/pacman.conf +++ b/etc/pacman.conf @@ -22,7 +22,7 @@ HoldPkg = pacman glibc Architecture = auto # Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -IgnorePkg = linux-lts linux-lts-headers linux-api-headers linux-tkg-muqss-zen2 linux-tkg-muqss-zen2-headers chaotic-nvidia-dkms-tkg chaotic-nvidia-settings-tkg chaotic-nvidia-opencl-tkg chaotic-nvidia-utils-tkg nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia +#IgnorePkg = #IgnoreGroup = #NoUpgrade = @@ -35,7 +35,7 @@ IgnorePkg = linux-lts linux-lts-headers linux-api-headers linux-tkg-muqss-zen2 #CheckSpace #VerbosePkgLists Color -TotalDownload +ParallelDownloads = 6 VerbosePkgLists ILoveCandy @@ -72,8 +72,8 @@ LocalFileSigLevel = Optional # repo name header and Include lines. You can add preferred servers immediately # after the header, and they will be used before the default mirrors. -[testing] -Include = /etc/pacman.d/mirrorlist +# [testing] +# Include = /etc/pacman.d/mirrorlist [core] Include = /etc/pacman.d/mirrorlist @@ -81,8 +81,8 @@ Include = /etc/pacman.d/mirrorlist [extra] Include = /etc/pacman.d/mirrorlist -[community-testing] -Include = /etc/pacman.d/mirrorlist +# [community-testing] +# Include = /etc/pacman.d/mirrorlist [community] Include = /etc/pacman.d/mirrorlist @@ -90,8 +90,8 @@ Include = /etc/pacman.d/mirrorlist # If you want to run 32 bit applications on your x86_64 system, # enable the multilib repositories as required here. -[multilib-testing] -Include = /etc/pacman.d/mirrorlist +# [multilib-testing] +# Include = /etc/pacman.d/mirrorlist [multilib] Include = /etc/pacman.d/mirrorlist @@ -103,11 +103,11 @@ Include = /etc/pacman.d/mirrorlist #Server = file:///home/custompkgs [chaotic-aur] -Server = https://builds.garudalinux.org/repos/$repo/$arch +Include = /etc/pacman.d/chaotic-mirrorlist [blackarch] -Include = /etc/pacman.d/blackarch-mirrorlist +Server = https://blackarch.org/blackarch/$repo/os/$arch +#SigLevel = Never [archlinuxcn] -Server = http://repo.archlinuxcn.org/$arch - +Include = /etc/pacman.d/archlinuxcn-mirrorlist diff --git a/fonts b/fonts new file mode 100644 index 0000000..e905761 --- /dev/null +++ b/fonts @@ -0,0 +1,26 @@ +# Installed fonts +adobe-source-code-pro-fonts +cantarell-fonts +gsfonts +noto-fonts +noto-fonts-cjk +noto-fonts-emoji +noto-fonts-extra +t1lib +ttf-dejavu +xorg-fonts-encodings + +# Used fonts +## GTK +Default Font: Noto Sans Regular 10 +Default Monospace: Source Code Pro Regular 10 + +## QT - QT5ct +General: Noto Sans 10 +Fixed width: Noto Sans 10 + +# Misc +Anti-aliasing: yes +Hinting: Full +Sub-pixel order: None + diff --git a/user-config/bash_aliases b/user-config/bash_aliases index 7b098e5..08a2eae 100644 --- a/user-config/bash_aliases +++ b/user-config/bash_aliases @@ -2,6 +2,8 @@ # Alias for sudo alias sudo='sudo --preserve-env ' +# Sometimes we don't want to preserve env, for example when using gpg keys. +alias sudon='sudo ' #Pastes # alias rs="curl --data-binary @- https://paste.rs" # Replaced by rs() function in .bash_aliases @@ -50,7 +52,7 @@ alias gpush='git push' alias gpull='git pull' # Alias for git commit -m -alias gcommit='git commit -S -m' +alias gcommit='git commit -S --signoff -m' # Alias to kill Signal Private Messenger when crashed alias ksignal='killall -9 signal-desktop' @@ -79,7 +81,7 @@ alias bashell='machinectl shell BlackArch' # Debian alias debct="sudo systemd-nspawn -D $nspawn_root_dir/Debian" -alias debshell='machinectl shell Debian' +alias debshell='machinectl shell edu4rdshl@Debian' # Kali alias kact="sudo systemd-nspawn -D $nspawn_root_dir/KaliLinux" @@ -89,6 +91,10 @@ alias kashell='machinectl shell KaliLinux' alias pact="sudo systemd-nspawn -D $nspawn_root_dir/ParrotSec" alias pashell='machinectl shell ParrotSec' +# Fedora34 +alias fedct="sudo systemd-nspawn -D $nspawn_root_dir/Fedora34" +alias fedshell='machinectl shell Fedora34' + # Alias to start VirtualBox Machines in Headless mode # alias vbstart='VBoxHeadless -s' @@ -100,7 +106,8 @@ alias longdirs='du -hca ./ | sort -n -r | head -n 20' alias longfiles="find ./ -printf '%s %p\n'| sort -nr | head -20" # Alias for pacman -alias u='paru -Syu --noconfirm' +alias u='paru -Syu --noconfirm --nodevel' +alias ud='paru -Syu --noconfirm' alias cu='checkupdates' alias pss='pacman -Ss' alias sa='paru -Ss' @@ -125,7 +132,7 @@ alias ipa='ip -c -br a' # Alias for temporal dir/files alias dtemp='cd $(mktemp -d)' -alias ftemp='$EDITOR $(mktemp).txt' +alias ftemp='$EDITOR $(mktemp)' # Alias for wget in favor of curl alias wget='curl -L -O' diff --git a/user-config/bashrc b/user-config/bashrc index 173327a..6fb3785 100644 --- a/user-config/bashrc +++ b/user-config/bashrc @@ -154,8 +154,11 @@ export PATH="$HOME/.local/bin:$HOME/.local/share/osxcross/target/bin:$HOME/.carg # Output vscode telemetry export DOTNET_CLI_TELEMETRY_OPTOUT=1 +# Steam Proton +# export STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.local/share/Steam" + # Set TERM -export TERM=xterm-256color +# export TERM=xterm-256color # Set rusnapshot database file # export RUSNAPSHOT_DATABASE_FILE="/mnt/defvol/_snapshots/rustnapshot.sqlite" diff --git a/user-config/pipewire/media-session.d/default-nodes b/user-config/pipewire/media-session.d/default-nodes new file mode 100644 index 0000000..28b8c9f --- /dev/null +++ b/user-config/pipewire/media-session.d/default-nodes @@ -0,0 +1,4 @@ +{ + "default.configured.audio.source": { "name": "alsa_input.pci-0000_07_00.4.analog-stereo" }, + "default.configured.audio.sink": { "name": "alsa_output.pci-0000_05_00.1.hdmi-stereo-extra1" } +} \ No newline at end of file diff --git a/user-config/pipewire/media-session.d/default-routes b/user-config/pipewire/media-session.d/default-routes new file mode 100644 index 0000000..cd52b8a --- /dev/null +++ b/user-config/pipewire/media-session.d/default-routes @@ -0,0 +1,10 @@ +{ + "default.route.alsa_card.pci-0000_05_00.1:profile:off": [ ], + "default.route.alsa_card.pci-0000_07_00.4:profile:off": [ ], + "default.route.alsa_card.pci-0000_05_00.1:profile:output:hdmi-stereo-extra1": [ "hdmi-output-1" ], + "default.route.alsa_card.pci-0000_07_00.4:profile:output:analog-stereo+input:analog-stereo": [ "analog-input-front-mic", "analog-output-headphones" ], + "default.route.alsa_card.pci-0000_05_00.1:output:hdmi-output-1": { "mute": false, "volumes": [ 0.032756, 0.032756 ], "channels": [ "FL", "FR" ] }, + "default.route.alsa_card.pci-0000_07_00.4:input:analog-input-front-mic": { "mute": false, "volumes": [ 0.063406, 0.063406 ], "channels": [ "FL", "FR" ] }, + "default.route.alsa_card.pci-0000_07_00.4:output:analog-output-headphones": { "mute": false, "volumes": [ 0.114052, 0.114052 ], "channels": [ "FL", "FR" ] }, + "default.route.alsa_card.pci-0000_07_00.4:output:analog-output-lineout": { "mute": false, "volumes": [ 0.399992, 0.399992 ], "channels": [ "FL", "FR" ] } +} \ No newline at end of file diff --git a/user-config/pipewire/media-session.d/restore-stream b/user-config/pipewire/media-session.d/restore-stream new file mode 100644 index 0000000..c082413 --- /dev/null +++ b/user-config/pipewire/media-session.d/restore-stream @@ -0,0 +1,53 @@ +{ + "restore.stream.Input\/Audio.node.name:effect_input.rnnoise": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Audio\/Source.node.name:effect_input.rnnoise": { "volume": 1.000000, "mute": false, "volumes": [ 0.356884, 0.356884 ], "channels": [ "UNK", "UNK" ] }, + "restore.stream.Input\/Audio.application.name:PulseAudio Volume Control": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "UNK", "UNK" ] }, + "restore.stream.Output\/Audio.application.name:Chromium": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:Chromium input": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "UNK", "UNK" ], "target-node": "effect_input.rnnoise" }, + "restore.stream.Input\/Audio.node.name:NoiseTorch Microphone": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000 ], "channels": [ "MONO" ] }, + "restore.stream.Audio\/Source.node.name:NoiseTorch Microphone": { "volume": 1.000000, "mute": false, "volumes": [ 0.000120 ], "channels": [ "MONO" ] }, + "restore.stream.Input\/Audio.application.name:WEBRTC VoiceEngine": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "UNK", "UNK" ] }, + "restore.stream.Output\/Audio.application.name:WEBRTC VoiceEngine": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:Google Chrome": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:Google Chrome input": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "UNK", "UNK" ] }, + "restore.stream.Output\/Audio.media.role:Music": { "volume": 1.000000, "mute": false, "volumes": [ 0.999954, 0.999954 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:upc.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:upc.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:EpicGamesLauncher.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:EpicGamesLauncher.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:EpicWebHelper.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:EpicWebHelper.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:wine64-preloader": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:ACIII.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:ACIII.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:UplayService.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:UplayService.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:farcry3.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:farcry3.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:wine-preloader": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000 ], "channels": [ "FL", "FR", "FC", "LFE", "RL", "RR" ] }, + "restore.stream.Output\/Audio.application.name:FC3Editor.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:FC3Editor.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:winecfg.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:winecfg.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:ShadowOfTheTombRaider": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:TheDivision.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:TheDivision.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:WatchDogs2.exe": { "volume": 1.000000, "mute": false }, + "restore.stream.Input\/Audio.application.name:WatchDogs2.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:ACU.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:ACU.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.application.name:SoTGame.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000 ], "channels": [ "MONO" ] }, + "restore.stream.Input\/Audio.application.name:SoTGame.exe": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.node.name:pipewire-pulse": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.node.name:pipewire-pulse": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Audio\/Source.node.name:pipewire-pulse": { "volume": 1.000000, "mute": false, "volumes": [ 0.072492, 0.072492 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Audio\/Sink.node.name:pipewire-pulse": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.node.name:pw-cli": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Output\/Audio.node.name:pw-cli": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Audio\/Source.node.name:pw-cli": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Audio\/Sink.node.name:pw-cli": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.node.name:echo-cancel-capture": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000 ], "channels": [ "MONO" ] }, + "restore.stream.Output\/Audio.node.name:echo-cancel-playback": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] }, + "restore.stream.Input\/Audio.application.name:telegram-desktop": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "UNK", "UNK" ], "target-node": "effect_input.rnnoise" }, + "restore.stream.Output\/Audio.application.name:telegram-desktop": { "volume": 1.000000, "mute": false, "volumes": [ 1.000000, 1.000000 ], "channels": [ "FL", "FR" ] } +} \ No newline at end of file diff --git a/user-config/pipewire/pipewire-pulse.conf b/user-config/pipewire/pipewire-pulse.conf new file mode 100644 index 0000000..c29c105 --- /dev/null +++ b/user-config/pipewire/pipewire-pulse.conf @@ -0,0 +1,95 @@ +# PulseAudio config file for PipeWire version "0.3.30" # +# +# Copy and edit this file in /etc/pipewire for systemwide changes +# or in ~/.config/pipewire for local changes. + +context.properties = { + ## Configure properties in the system. + #mem.warn-mlock = false + #mem.allow-mlock = true + #mem.mlock-all = false + #log.level = 2 +} + +context.spa-libs = { + audio.convert.* = audioconvert/libspa-audioconvert + support.* = support/libspa-support +} + +context.modules = [ + { name = libpipewire-module-rtkit + args = { + #nice.level = -11 + #rt.prio = 88 + #rt.time.soft = 200000 + #rt.time.hard = 200000 + } + 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 + ] + #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 + } + } + } + # Noise cancellation + { name = libpipewire-module-filter-chain + args = { + node.name = "effect_input.rnnoise" + node.description = "Noise Canceling source" + media.name = "Noise Canceling source" + filter.graph = { + nodes = [ + { + type = ladspa + name = rnnoise + plugin = librnnoise_ladspa + label = noise_suppressor_stereo + control = { + "VAD Threshold (%)" 90.0 + } + } + ] + } + capture.props = { + node.passive = true + } + playback.props = { + media.class = Audio/Source + } + } + } +] + +stream.properties = { + #node.latency = 1024/48000 + #node.autoconnect = true + #resample.quality = 4 + #channelmix.normalize = false + #channelmix.mix-lfe = false + #channelmix.upmix = false + #channelmix.lfe-cutoff = 0 +} diff --git a/user-config/pipewire/pipewire.conf b/user-config/pipewire/pipewire.conf new file mode 100644 index 0000000..5f6bf8b --- /dev/null +++ b/user-config/pipewire/pipewire.conf @@ -0,0 +1,273 @@ +# Daemon config file for PipeWire version "0.3.30" # +# +# Copy and edit this file in /etc/pipewire for systemwide changes +# or in ~/.config/pipewire 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 + + 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.quantum = 1024 + #default.clock.min-quantum = 32 + #default.clock.max-quantum = 8192 + #default.video.width = 640 + #default.video.height = 480 + #default.video.rate.num = 25 + #default.video.rate.denom = 1 + # + # These overrides are only applied when running in a vm. + vm.overrides = { + default.clock.min-quantum = 1024 + } +} + +context.spa-libs = { + # = + # + # 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 = + # [ args = { = ... } ] + # [ 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 RTKit to boost the data thread priority. + { name = libpipewire-module-rtkit + args = { + #nice.level = -11 + #rt.prio = 88 + #rt.time.soft = 200000 + #rt.time.hard = 200000 + } + flags = [ ifexists nofail ] + } + + # Set thread priorities without using RTKit. + #{ name = libpipewire-module-rt + # args = { + # nice.level = -11 + # rt.prio = 88 + # rt.time.soft = 200000 + # rt.time.hard = 200000 + # } + # 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 } +] +# # Noise Cancelation +# { name = libpipewire-module-filter-chain +# args = { +# node.name = "effect_input.rnnoise" +# node.description = "Noise Canceling source" +# media.name = "Noise Canceling source" +# filter.graph = { +# nodes = [ +# { +# type = ladspa +# name = rnnoise +# plugin = librnnoise_ladspa +# label = noise_suppressor_stereo +# control = { +# "VAD Threshold (%)" 90.0 +# } +# } +# ] +# } +# capture.props = { +# node.passive = true +# } +# playback.props = { +# media.class = Audio/Source +# } +# } +# } +#] + +context.objects = [ + #{ factory = + # [ args = { = ... } ] + # [ 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 = "my-mic" + # node.description = "Microphone" + # media.class = "Audio/Source/Virtual" + # 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 = [ args = "" ] } + # + # 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" } +]