pw-topの静的(スナップショット)を取得するには?

pw-topの静的(スナップショット)を取得するには?

作成したいスクリプトのパイプラインのpw-topから静的出力を取得する必要があります。配管設備のリストだけが必要です。

例えば、私は走ってpw-top | grep outputから何かをしたいです。基本的にパイプデバイスとそのIDのリストを取得したいと思います。

私が望む出力タイプ(スピーカーとヘッドフォンのみ):

<device name> <id>
<device name> <id>
<device name> <id>

など

私は以下を試しました:

[aggam@aggam-archlinux ~]$ pactl list cards | grep -E 'port.type|Name|Card'
Card #39
    Name: alsa_card.pci-0000_01_00.1
                port.type = "hdmi"
                port.type = "hdmi"
                port.type = "hdmi"
                port.type = "hdmi"
                port.type = "hdmi"
                port.type = "hdmi"
Card #40
    Name: alsa_card.usb-0c76_USB_PnP_Audio_Device-00
                port.type = "mic"
Card #41
    Name: alsa_card.pci-0000_00_1f.3
                port.type = "mic"
                port.type = "mic"
                port.type = "line"
                port.type = "line"
                port.type = "headphones"
                port.type = "spdif"

しかし、

  1. 一部はスピーカーとマイクロ表示されますか?ヘッドフォンだと思います...
  2. これはパルスオーディオデバイスであり、問​​題を避けたいので、パイプワイヤーデバイスIDが欲しいです。

編集2:私のパスワード:

S   ID  QUANT   RATE    WAIT    BUSY   W/Q   B/Q  ERR FORMAT           NAME
S   28      0      0    ---     ---   ---   ---     0                  Dummy-Driver
S   29      0      0    ---     ---   ---   ---     0                  Freewheel-Driver
S   36      0      0    ---     ---   ---   ---     0                  Midi-Bridge
S   42      0      0    ---     ---   ---   ---     0                  alsa_output.pci-0000_01_00.1.hdmi-stereo-extra3
S   43      0      0    ---     ---   ---   ---     0                  alsa_input.usb-0c76_USB_PnP_Audio_Device-00.mono-fallback
S   44      0      0    ---     ---   ---   ---     0                  alsa_output.pci-0000_00_1f.3.analog-stereo
S   45      0      0    ---     ---   ---   ---     0                  alsa_input.pci-0000_00_1f.3.analog-stereo
S   71      0      0    ---     ---   ---   ---     0                  alsa_output.usb-KURZWEIL_MPS-Piano-00.analog-stereo
S   69      0      0    ---     ---   ---   ---     0                  alsa_input.usb-KURZWEIL_MPS-Piano-00.analog-stereo
I   67      0      0   0.0us   0.0us  0.00  0.00    0    F32LE 2 48000 Firefox

ピアノの出力は71です。出力はpactl list short sinks次のとおりです。

42  alsa_output.pci-0000_01_00.1.hdmi-stereo-extra3 PipeWire    s32le 2ch 48000Hz   SUSPENDED
44  alsa_output.pci-0000_00_1f.3.analog-stereo  PipeWire    s32le 2ch 48000Hz   SUSPENDED
401 alsa_output.usb-KURZWEIL_MPS-Piano-00.analog-stereo PipeWire    s16le 2ch 48000Hz   SUSPENDED

ピアノが突然401に変わるので注意してください...

ベストアンサー1

私はそれを考えた!シェルコマンドを使用する代わりに、Pythonスクリプト全体を作成しました。このスクリプトはすべてのデバイスをインポートして辞書を作成し、dmenu / bemenuを使用して目的のデバイスを選択できるようにします。

スクリプトはここにあります。私のgithubにしかし、コードのこの部分は次のとおりです。

sp = subprocess.run(['wpctl', 'status'], stdout=subprocess.PIPE).stdout.decode('utf-8')\
        .split("Sinks")[1].split('├─')[0]
newsp = []

for line in sp.split('\n'):
    if '.' in line:
        newsp.append(line.replace(' ', '')[1:])

devices = {}  # name: id
for line in newsp:
    line = line.split('.')
    devices[line[1].split('[vol')[0]] = line[0].replace('*', '')

おすすめ記事