追記 (解決)
アップデートによってシステムワイドにpipewire-pulse
が加えられたわけではなく、easyeffects
の依存パッケージにpipewire-pulse
が加えられただけであった。
このため、easyeffects
を削除すれば問題なくアップデートできた。
そのため、本記事の内容は誤解であった。
要点
- 2022年7月のアップデートで
pulseaudio
がpipewire-pulse
に置き換わり、PulseAudio環境が事実上利用不可に manjaro-pulse
パッケージは残っているものの、依存関係が壊れててインストールはできない- この影響で
manjaro-pulse
を使っていた環境はアップデート不可に (依存の壊れたパッケージを消せばOK) - PipeWireになってるTelegramなどのアプリはPipeWire化必須
PulseAudioとPipeWire
PulseAudioはLinuxのオーディオシステム全体をカバーする強力なソフトウェア。 一方、PipeWireは事実上単なるサウンドライブラリ。
PipeWireはPulseAudioに取って代わると息巻いているが、実際はPulseAudio互換ライブラリを用意することで大部分をPulseAudioの資産に頼ってる。
PulseAudioにPipeWire互換APIはないので、PipeWire化してPulseAudio互換ライブラリで今までの運用を維持するのが現実的。 ただ、結構不具合(うまく動作しない)はある。
できればPipeWireへの移行は避けたい気がするが、クライアントプログラム側は結構PipeWireに移行しているため、ちょっと難しい選択。 理由ははシンプルで、ライブラリがPulseAudioよりずっと使いやすいため。
ただし、ffmpegは割とPipeWireに消極的。
PipeWireはその思想や指向など、全体的にWaylandによく似ている。 エッセンシャルな部分ではよくできているが、それ以外の多くのものを切り捨てており、使いこなしているパワーユーザーの使い勝手に大きな悪い影響を与える。
従来のManjaroのサウンドシステム
manjaro-pulse
とmanjaro-pipewire
があり、メタパッケージになっている。
manjaro-pulse
がデフォルトであった。
システムとしてはpipewire
本体は入るのだが、これを鳴らす方法がないため、PipeWireで再生するプログラムは音を鳴らすことができない。
pipewire-pulse
パッケージがPipeWire側のPulseAudio互換レイヤー。
manjaro-pulse
はこのパッケージを使うようになったが、pulseaudio-rtp
やpulseaudio-lirc
などがpulseaudio
に依存しているため、アップデートに失敗する。
PipeWireアプリケーション
Telegramは少し前のアップデートからPulseAudio環境で音が鳴らなくなっている。
pipewire
ライブラリが入っているためか、それとも単純にPipeWireのみをサポートするようになったためかは分からない。
また、他のいくつかのPipeWireに依存しているアプリケーション(数は多くはない)もまた、音を鳴らす方法がない。
これらの問題はmanjaro-pipewire
環境に移行することで解消される。
アップデートについて
選択肢はいくつかある
- アップデートを妨げるパッケージを消す
- 事前に
manjaro-pipewire
環境に移行してからアップデートする - いずれfixされるだろうという考えのもと、待つ
ManjaroのPipeWire環境について
- セッションマネージャーはPipeWire Media SessionよりもWirePlumberのほうが現在は推奨されてる
- Pulseで鳴らされるなら変わらず
pavucontrol
を使って制御可能。PipeWireで鳴らされるものは(当然ながら)別にセッションマネージャーが必要 - 「音がうまく拾えない」「ミュートが正しく機能しない」といった不具合が多い
- Sink/Sourceの認識がおかしくなることがある。偶発的ではなく、おかしくなるデバイスは常におかしい
- デバイスによってはマイクのボリュームコントロールがおかしい。また、起動するたびにボリュームがリセットされる場合がある
- mpvの再生音が他の操作に割り込まれて切れ切れになりやすい。ただ、最近はPulseAudioでも同様の問題が発生するようになった
- レイテンシや音質で気になるところは特にない
- AURの
pulseeffects-legacy-git
から、communityのeasyeffects
に移行することになる。使い勝手は少し良くなる - いくつかの(Telegramを含む)PipeWireクライアントアプリケーションが動作するようになる
- mpvでPipeWireを使うには、OpenALなどを使うようにし、OpenALがPipeWireを使うようにする、といった方法が必要。ただ、ALSAやPulseとして普通に鳴らすことはできる
- ただ、Manjaroの公式パッケージのmpvはOpenALもSDLも使えないため、no way.
pacmd
がpulseaudio
パッケージ、pactl
がlibpulse
パッケージ所属なので、manjaro-pipewire
に移行するとpacmd
が使えないmanjaro-pulse
環境下ではZshにおいてpactl
のload-module
のあとの第二引数にモジュール名に対する補完が効くが、manjaro-pipewire
はサブコマンドしか補完されない。補完の問題はここだけの模様
ひとこと
一部のPipeWire派に踏み荒らされてる感じがして、私は嫌。
メリットを感じてるならまだいいけど、現状ではデメリットしか感じられないので。
最近のFreedesktopはいらんことしかしないなという気持ちでいる。 最近のFreedesktopの人たちはやたらとWindowsやMacを模倣したがる印象で、Unixらしさや、美点を理解していないような感じがする。
PipeWireのシンプルな設計は悪くないけれども、PulseAudioがどれだけの問題を解決したかということを考えると、歴史的経緯や過去のあれこれを知らない人の机上の空論のようだ。 PipeWireがPulseAudio並の資産を持って取って代わろうというのであれば、理解しなくはない。 ライブラリレベルの問題は、それこそOpenALとかがあるので、PipeWireが素晴らしいと称賛する気にもなれない。
また、PipeWireはJackを置き換えるのも現状、現実的ではない。 音楽制作者の基本的な考え方を理解していないように見える。
もちろん、PipeWireの態度にリスペクトがなく、傲慢であるという問題もあるが、実用上デメリットがあるということに比べれば些事である。