Pipewireでデバイスの名前を変更する

Pipewireでデバイスの名前を変更する

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.dalsa.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.description2回目の試みでは交換する必要がありましたdevice.description

関連情報