
i3でArchLinuxを使用しています。近いうちにWaylandとSwayにも切り替えたいので、最近PulseAudioからPipewireに切り替えました。
これまで、Pipewireはうまく機能しています。それでも小さな問題があります。
同じ説明のオーディオデバイスを使用しているため、Pavucontrolでは区別できません。 Pulse を使用して、update-sink-proplist ステートメントをローカルの default.pa ファイルに作成しました。
Pipewireでこれを行う方法、つまりデバイスが接続されている場合にデバイスの説明を変更する方法を知っている人はいますか?
現在私はPipewireのデフォルト設定を使用しています。
私のアプローチ:
私はこれがpw-metadataで動作すると思いましたが、正しいコマンドが見つかりませんでした。
~/.config/pipewire/media-session.d/alsa-monitor.conf に以下を追加しました。
{
matches = [
{
node.name = "~^alsa_output.pci-0000_00_1f.3.output_analog-stereo$"
}
]
actions = {
update-props = {
device.description = "Laptop"
}
}
}
これにより、出力の属性リスト内の対応する項目が変更されますが、pactl list sinks
実際の説明は変更されません。実際、出力は次のようになります。
Sink #45
...
Name: alsa_output.pci-0000_00_1f.3.output_analog-stereo
Description: Built-in Audio Analog Stereo Output
...
Properties:
...
device.description = "Laptop"
...
ご協力ありがとうございます。
答え1
現在の推奨事項に従う場合は、以下を使用してください。電気配管工変えるPipeWireメディアカンファレンス、ノードの説明(またはその他の属性)を変更する方法は、Luaスクリプトを生成して~/.config/wireplumber
正しいパスと名前の下に追加することです。
たとえば、フェリックスの必要に応じてALSAノードの説明を変更したい場合は、次のコンテンツを含む~/.config/wireplumber/main.lua.d/51-alsa-rename.lua
ファイルを作成できます。
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.pci-0000_00_1f.3.output_analog-stereo" },
},
},
apply_properties = {
["node.description"] = "Laptop",
},
}
table.insert(alsa_monitor.rules,rule)
逆に、Bluetoothノードまたはデバイスで何かを変更するには、~/.config/wireplumber/bluetooth.lua.d/51-rename.lua
次のように作成できます。
rule = {
matches = {
{
{ "node.name", "equals", "bluez_output.02_11_45_A0_B3_27.a2dp-sink" },
},
},
apply_properties = {
["node.nick"] = "Headphones",
},
}
table.insert(bluez_monitor.rules,rule)
したがって、Luaスクリプトのファイル名と場所は、次のことを可能にするように設計されています。WirePlumberのマルチパスマージ/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
デフォルトの設定ファイル(例)の後、デバイスファイルをロードして有効にする前に(例:)実行します/usr/share/wireplumber/main.lua.d/90-enable-all.lua
。
変更可能な属性とデバイスまたはノードを選択するための一致規則については、次の記事で説明します。ALSAの構成そしてBluetooth設定。
答え2
デュルードの答えWirePlumberについて述べたことは正しいですが、2023年以降に誰かがこのような状況に直面すると、Luaはアウトになります。SPA-JSON新しいホットスポットですね。
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
touch ~/.config/wireplumber/wireplumber.conf.d/99-renames.conf
正確なファイル名は重要ではありません。
形式は次のとおりです。
monitor.alsa.rules = [
{
matches = [
{ node.name = "alsa_output.usb-Turtle_Beach_Elo_7.1_Air_8502FFFF8102-01.analog-stereo" }
],
actions = {
update-props = {
node.description = "Headset",
device.form-factor = "headset",
device.icon-name = "audio-headset-symbolic",
}
}
}
]
ワイヤー配管工を再起動してください
systemctl --user restart wireplumber.service
とを使用して属性を一致させ変更することができますwpctl status
。リストされたID番号はwpctl inspect ##
どこにありますか?##
wpctl status
私のシステム(openSUSE Tumbleweed)の例は/usr/share/doc/wireplumber/examples/wireplumber.conf.d
。alsa.conf
より多くの文書はここにあります:https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/alsa.html
指が交差すると、2年以上安定しています。
答え3
node.description
あなたの回答(更新する属性)に加えて、あなたが言う設定は次のrules = [...]
ブロックに含まれるべきです~/.config/pipewire/media-session.d/alsa-monitor.conf
。
rules = [
{
matches = [
{
node.name = "~^alsa_output.pci-0000_0d_00.4.analog-stereo$"
}
]
actions = {
update-props = {
node.description = "Headphones"
}
}
}
]
追加のヒントPipeWireのWiki。
答え4
気にしません。私はすでに答えを知っています。
node.description
2回目の試みでは交換する必要がありましたdevice.description
。