pipewire-client.conf(5) -*- nroff -*- pipewire-client.conf(5)

pipewire-client.conf - فایل پیکربندی کلاینت PipeWire

/pipewire/client.conf

/etc/pipewire/client.conf

/usr/share/pipewire/client.conf

/usr/share/pipewire/client.conf.d/

/etc/pipewire/client.conf.d/

/pipewire/client.conf.d/

پیکربندی برای کلاینت‌های بومی PipeWire و برای پلاگین ALSA مربوط به PipeWire.

یک برنامه کلاینت بومی PipeWire پیکربندی پیش‌فرض را برای بارگذاری انتخاب می‌کند، و اگر چیزی مشخص نشده باشد، معمولاً client.conf را بارگذاری می‌نماید.

قالب فایل پیکربندی و منطق جستجوی آن همانند pipewire.conf(5) است.

فایل‌های پیکربندی قطره‌ای (drop-in) به صورت client.conf.d/*.conf قابل استفاده بوده و توصیه می‌شوند. به pipewire.conf(5) مراجعه کنید.

stream.properties

پیکربندی گزینه‌ها برای جریان‌های کلاینت بومی.

stream.rules

پیکربندی قواعد برای جریان‌های کلاینت بومی.

alsa.properties

پیکربندی کلاینت ALSA.

alsa.rules

قواعد تطبیق کلاینت ALSA.

علاوه بر این، بخش‌های پیکربندی زمینه (context) در PipeWire نیز ممکن است مشخص شوند، به pipewire.conf(5) مراجعه کنید.

فایل‌های پیکربندی کلاینت شامل یک بخش stream.properties هستند که گزینه‌های جریان‌های کلاینت را پیکربندی می‌کند:

# ~/.config/pipewire/client.conf.d/custom.conf
stream.properties = {
    #node.latency = 1024/48000
    #node.autoconnect = true
    #resample.disable = false
    #resample.quality = 4
    #resample.window = exp # blackman kaiser
    #resample.cutoff = 0.0
    #resample.n-taps = 0
    #resample.param.exp.A = 0.0
    #resample.param.blackman.alpha = 0.0
    #resample.param.kaiser.alpha = 0.0
    #resample.param.kaiser.stopband-attenuation = 0.0
    #resample.param.kaiser.transition-bandwidth = 0.0
    #monitor.channel-volumes = false
    #channelmix.disable = false
    #channelmix.min-volume = 0.0
    #channelmix.max-volume = 10.0
    #channelmix.normalize = false
    #channelmix.lock-volume = false
    #channelmix.mix-lfe = true
    #channelmix.upmix = true
    #channelmix.upmix-method = psd  # none, simple
    #channelmix.lfe-cutoff = 150.0
    #channelmix.fc-cutoff  = 12000.0
    #channelmix.rear-delay = 12.0
    #channelmix.stereo-widen = 0.0
    #channelmix.hilbert-taps = 0
    #dither.noise = 0
    #dither.method = none # rectangular, triangular, triangular-hf, wannamaker3, shaped5
    #debug.wav-path = 
}

برخی از ویژگی‌ها به جنبه‌های مختلف جریان اشاره دارند:

  • ویژگی‌های عمومی جریان برای شناسایی جریان.
  • ویژگی‌های عمومی جریان برای دسته‌بندی جریان.
  • نحوه زمان‌بندی آن توسط گراف پردازش.
  • نحوه پیوند آن توسط مدیر نشست (session manager).
  • نحوه انجام پردازش داخلی.
  • ویژگی‌هایی برای پیکربندی قالب رسانه.

فهرستی از ویژگی‌های شیء که می‌توان بر جریان‌ها اعمال کرد در pipewire-props(7) Common Node Properties و pipewire-props(7) Audio Adapter Properties یافت می‌شود.

می‌توانید قواعد تطبیق (به pipewire(1) مراجعه کنید) را برای تنظیم ویژگی‌های جریان‌ها و فیلترهای مشخص اضافه کنید.

بخش‌های stream.rules و filter.rules یک کنش update-props فراهم می‌کنند که یک شیء حاوی ویژگی‌ها دریافت کرده و آن‌ها را روی شیء گره (node) جریان و فیلتر به‌روزرسانی می‌کند.

یک بخش stream.rules یا filter.rules را به این صورت در فایل پیکربندی اضافه کنید:

# ~/.config/pipewire/client.conf.d/custom.conf
stream.rules = [
    {
        matches = [
            {
                # all keys must match the value. ! negates. ~ starts regex.
                application.process.binary = "firefox"
            }
        ]
        actions = {
            update-props = {
                node.name = "My Name"
            }
        }
    }
]

این پیکربندی node.name مربوط به Firefox را روی "My Name" تنظیم می‌کند.

یک بخش alsa.properties می‌تواند برای پیکربندی برنامه‌های کلاینت که از طریق پلاگین ALSA مربوط به PipeWire متصل می‌شوند اضافه شود.

# ~/.config/pipewire/client.conf.d/custom.conf
alsa.properties = {
    #alsa.deny = false
    #alsa.format = 0
    #alsa.rate = 0
    #alsa.channels = 0
    #alsa.period-bytes = 0
    #alsa.buffer-bytes = 0
    #alsa.volume-method = cubic         # linear, cubic
}

alsa.deny

دسترسی ALSA را برای کلاینت مسدود می‌کند. در قواعد یا در متغیر محیطی PIPEWIRE_ALSA مفید است.

alsa.format

قالب ALSA مورد استفاده برای کلاینت. این یک نام قالب ALSA است. پیش‌فرض 0 است، که به معنای مجاز بودن تمام قالب‌هاست.

alsa.rate

نرخ نمونه‌برداری مورد استفاده برای کلاینت. پیش‌فرض 0 است، که به معنای مجاز بودن همه نرخ‌هاست.

alsa.channels

تعداد کانال‌ها برای کلاینت. پیش‌فرض 0 است، که به معنای مجاز بودن هر تعداد کانال است.

alsa.period-bytes

تعداد بایت‌ها در هر دوره (period). پیش‌فرض 0 است که به معنای مجاز بودن هر تعداد بایت دوره است.

alsa.buffer-bytes

تعداد بایت‌ها در بافر ALSA. پیش‌فرض 0 است، که به معنای مجاز بودن هر تعداد بایت است.

alsa.volume-method = cubic | linear

این گزینه منحنی بلندی صدا را روی میکسر ALSA کنترل می‌کند. مقادیر ممکن عبارتند از cubic و linear. پیش‌فرض استفاده از cubic است.

امکان تنظیم ویژگی‌های خاص کلاینت ALSA با استفاده از قواعد تطبیق (به pipewire(1) مراجعه کنید) وجود دارد. می‌توانید هر یک از ویژگی‌های ALSA بالا یا هر یک از stream.properties را تنظیم کنید.

# ~/.config/pipewire/client.conf.d/custom.conf
alsa.rules = [
    {   matches = [ { application.process.binary = "resolve" } ]
        actions = {
            update-props = {
                alsa.buffer-bytes = 131072
            }
        }
    }
]

برای متغیرهای محیطی متداول به pipewire(1) مراجعه کنید. بسیاری از آن‌ها برای برنامه‌های کلاینت نیز اعمال می‌شوند.

متغیرهای محیطی همچنین بر برنامه‌های ALSA که از پلاگین ALSA مربوط به PipeWire استفاده می‌کنند تأثیر می‌گذارند.

PIPEWIRE_ALSA

می‌تواند شیئی با ویژگی‌هایی از alsa.properties یا stream.properties باشد که برای ایجاد کلاینت و جریان‌ها استفاده خواهد شد.

برای نمونه:

PIPEWIRE_ALSA='{ alsa.buffer-bytes=16384 node.name=foo }' aplay ...

برنامه aplay را با ویژگی‌های سفارشی اجرا می‌کند.

PIPEWIRE_NODE

به کلاینت ALSA دستور می‌دهد تا به یک سینک یا سورس خاص با object.serial یا node.name مشخص متصل شود.

برای نمونه:

PIPEWIRE_NODE=alsa_output.pci-0000_00_1b.0.analog-stereo aplay ...

باعث می‌شود aplay صدا را روی سینک صوتی مشخص‌شده پخش کند.

توسعه‌دهندگان PipeWire https://gitlab.freedesktop.org/pipewire/pipewire/issues؛ پروژه PipeWire از https://pipewire.org در دسترس است.

libpipewire-module-protocol-pulse(7), pipewire.conf(5), pipewire-pulse(1), pipewire-pulse-modules(7)

1.6.8 PipeWire