「WirePlumber」の版間の差分
(→デバイス/ノードのプロパティを変更する: 翻訳を修正) |
(→ルール マッチングのためのインターフェース名の取得: 情報を更新) |
||
22行目: | 22行目: | ||
=== ルール マッチングのためのインターフェース名の取得 === |
=== ルール マッチングのためのインターフェース名の取得 === |
||
− | Lua スクリプト |
+ | WirePlumber の Lua スクリプトでは、設定したい対象インターフェースの [https://docs.pipewire.org/page_objects_design.html PipeWire objects] で {{ic|matches}} ルールを指定する必要があります。 |
− | コマンド {{ic| |
+ | システムで利用可能な全てのオブジェクトを表示するには、コマンド {{ic|pw-cli list-objects}} と {{ic|pw-cli dump}} を使用します。 |
+ | オブジェクト {{ic|Node}} は PipeWire グラフ内のシンクまたはソースです。これらは ALSA の {{ic|Device}} に対応します。 |
||
− | 表示するオブジェクトの種類を絞り込むには、 {{ic|<nowiki>[all|Core|Module|Device|Node|Port|Factory|Client|Link|Session|Endpoint|EndpointStream|<id>]</nowiki>}} コマンドに続く {{ic|list-objects}} を一つ追加してください。 |
||
+ | 表示するオブジェクトの種類を絞り込むには、 {{ic|<nowiki>[Device|Node]</nowiki>}} オプションを追加してください。例えば: |
||
− | {{hc|$ pw-cli list-objects Device|output=... |
||
+ | |||
+ | {{hc|$ pw-cli list-objects Device|output= |
||
+ | ... |
||
id 37, type PipeWire:Interface:Device/3 |
id 37, type PipeWire:Interface:Device/3 |
||
object.serial = "264" |
object.serial = "264" |
||
38行目: | 41行目: | ||
device.nick = "HD-Audio Generic" |
device.nick = "HD-Audio Generic" |
||
media.class = "Audio/Device" |
media.class = "Audio/Device" |
||
− | ... |
+ | ... |
+ | }} |
||
+ | |||
+ | オブジェクトタイプのフィルタリングは、{{ic|pw-cli dump}} コマンドにも適用されます。 |
||
+ | |||
+ | もしエンドポイントの特定のクラス (例:"Audio/Sink") を探しているのであれば、 {{ic|media.class}} プロパティを参照してください。 |
||
+ | ほとんどの場合、ALSA を設定するときに必要なプロパティは {{ic|device.name}} か {{ic|node.name}} のどちらかです。 |
||
− | コマンド {{ic|$ pw-cli dump}} でも、このタイプフィルタリングは適用されます。 |
||
+ | {{Tip|{{ic|pw-top}} コマンドは現在使用されている {{ic|Node}} のリストを表示します。}} |
||
− | ALSA を設定するときに必要なオブジェクトは {{ic|device.name}} か {{ic|node.name}} のどちらかです。 |
||
=== デバイス/ノードのプロパティを変更する === |
=== デバイス/ノードのプロパティを変更する === |
2022年5月16日 (月) 10:54時点における版
関連記事
WirePlumber は、PipeWire 用の強力なセッションおよびポリシーマネージャです。モジュール設計に基づき、管理機能を実装し、 Lua プラグインによって、高度な設定と拡張が可能です。
インストール
wireplumber パッケージを インストールしてください。他の PipeWire セッションマネージャーと競合しますので、必ずアンインストールするようにしてください。
WirePlumber は systemd/ユーザー を使ってサーバーを管理し、ソケットを自動で起動します。
オプションとして、ドキュメントを確認するために wireplumber-docs をインストールしてください。
設定
WirePlumber のモジュール設計は、特定の機能の実装を入れ替える際に、残りの機能を再実装する必要がなく、非常に柔軟性があります。詳細な情報は、official documentation で見ることができます。
以下に、簡単な設定例を示します。
ルール マッチングのためのインターフェース名の取得
WirePlumber の Lua スクリプトでは、設定したい対象インターフェースの PipeWire objects で matches
ルールを指定する必要があります。
システムで利用可能な全てのオブジェクトを表示するには、コマンド pw-cli list-objects
と pw-cli dump
を使用します。
オブジェクト Node
は PipeWire グラフ内のシンクまたはソースです。これらは ALSA の Device
に対応します。
表示するオブジェクトの種類を絞り込むには、 [Device|Node]
オプションを追加してください。例えば:
$ pw-cli list-objects Device
... id 37, type PipeWire:Interface:Device/3 object.serial = "264" factory.id = "14" client.id = "49" device.api = "alsa" device.description = "Starship/Matisse HD Audio Controller" device.name = "alsa_card.pci-0000_08_00.4" device.nick = "HD-Audio Generic" media.class = "Audio/Device" ...
オブジェクトタイプのフィルタリングは、pw-cli dump
コマンドにも適用されます。
もしエンドポイントの特定のクラス (例:"Audio/Sink") を探しているのであれば、 media.class
プロパティを参照してください。
ほとんどの場合、ALSA を設定するときに必要なプロパティは device.name
か node.name
のどちらかです。
デバイス/ノードのプロパティを変更する
デバイスやノードのプロパティ(説明やニックネームなど)を変更するには、Lua スクリプトを作成し、~/.config/wireplumber
に適切なパスと名前で追加する必要があります。
例えば ALSA ノードの説明を変更するには、 ~/.config/wireplumber/main.lua.d/51-alsa-rename.lua
のようなファイルを作成して、以下のような内容を記述してください。
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
を作成するとよいでしょう。
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's マルチパスマージ で、デフォルトの設定ファイル
(例:/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
)デバイスをロードして有効にするファイル
(例:/usr/share/wireplumber/main.lua.d/90-enable-all.lua
)の前に実行できるよう設計されています。
デバイスやノードを選択するためのマッチングルールや、変更できるプロパティは ALSA 設定 と Bluetooth 設定 に記載されています。
デバイス/ノードの無効化
WirePlumber v0.4.7 からは、プロパティ device.disabled
または node.disabled
で任意のデバイスやノードを無効にできるようになりました。
~/.config/wireplumber/main.lua.d/51-alsa-disable.lua
rule = { matches = { { { "device.name", "equals", "alsa_card.pci-0000_08_00.4" }, }, }, apply_properties = { ["device.disabled"] = true, }, } table.insert(alsa_monitor.rules,rule)
システム内の alsa_card.*
の名前については、WirePlumber#Obtain interface name for rules matching を参照してください。
参照
- Documentation — オフィシャル ドキュメント
- WirePlumber, PipeWire session manager - George Kiagiadakis (Collabora) による2020年5月のブログ記事で、WirePlumber の仕組みが詳しく説明されています。