2つのVLCインスタンスのターゲットを取得する方法

2つのVLCインスタンスのターゲットを取得する方法

VLCインスタンスを1つだけ実行している場合は、org.mpris.MediaPlayer2.vlcをターゲットとして使用してdbus-sendを介してVLCと通信できます。

$ dbus-send --dest=org.mpris.MediaPlayer2.vlc  ...

2つのVLCインスタンスが実行されている場合、ターゲットxxxxとyyyyは異なります。これらのうちの1人と話すには、xxxxまたはyyyyをターゲットとして使用する必要があります。

$ dbus-send --dest=:xxxx   ...

次のようにして、最初のインスタンスのターゲットを見つけることができます。

$ dbus-send --print-reply --dest=org.freedesktop.DBus  /org/freedesktop/DBusorg.freedesktop.DBus.ListQueuedOwners  string:org.mpris.MediaPlayer2.vlc

method return time=1702494718.199915 sender=org.freedesktop.DBus -> destination=:1.1256 serial=3 reply_serial=2
   array [
      string ":1.1251"
   ]

これにより、目的地は1.1251のようです。

しかし、2番目のインスタンスのターゲットをどのように取得できますか?

答え1

私は常に完全なdbus情報を取得するためにBusctlを使用します。
システムバス(busctl --system)とセッションバス(busctl --user)または完全なリスト(busctl -l)
入力があります。

busctl --user | grep "vlc"

そうすれば、次のようなものが得られます。

:1.641                                              91266 vlc             xxxxx :1.641        session-c2.scope  c2      -
:1.642                                              91266 vlc             xxxxx :1.642        session-c2.scope  c2      -
:1.643                                              91266 vlc             xxxxx :1.643        session-c2.scope  c2      -
:1.644                                              91266 vlc             xxxxx :1.644        session-c2.scope  c2      -
:1.654                                              91361 vlc             xxxxx :1.654        session-c2.scope  c2      -
:1.655                                              91361 vlc             xxxxx :1.655        session-c2.scope  c2      -
:1.656                                              91361 vlc             xxxxx :1.656        session-c2.scope  c2      -
:1.657                                              91361 vlc             xxxxx :1.657        session-c2.scope  c2      -
org.kde.StatusNotifierItem-91266-2                  91266 vlc             xxxxx :1.644        session-c2.scope  c2      -
org.kde.StatusNotifierItem-91361-2                  91361 vlc             xxxxx :1.657        session-c2.scope  c2      -
org.mpris.MediaPlayer2.vlc                          91266 vlc             xxxxx :1.641        session-c2.scope  c2      -
org.mpris.MediaPlayer2.vlc.instance91361            91361 vlc             xxxxx :1.654        session-c2.scope  c2   

orgファイルはアクティブサービスです。
org.mpris.MediaPlayer2.vlc.instance91361という2番目のサービスがあることがわかります。
最初の VLC インスタンスは PID 91266 にあり、2 番目の VLC インスタンスは PID 91361 にあります。

私の例では、次のように呼び出されました。

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc.instance91361

2番目のケースに関する情報を提供します。

- - - - - - ちなみに

dbus サービスのオブジェクトツリーを確認できます。
busctl --user tree org.mpris.MediaPlayer2.vlc.instance91361

あなたは以下を得ます:

└─/org
  └─/org/mpris
    └─/org/mpris/MediaPlayer2

その後、オブジェクトを調べることもできます。
busctl --user introspect org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2

出力:

NAME                                TYPE      SIGNATURE RESULT/VALUE                             FLAGS
org.freedesktop.DBus.Introspectable interface -         -                                        -
.Introspect                         method    -         s                                        -
org.freedesktop.DBus.Properties     interface -         -                                        -
.Get                                method    ss        v                                        -
.GetAll                             method    s         a{sv}                                    -
.Set                                method    ssv       -                                        -
.PropertiesChanged                  signal    sa{sv}as  -                                        -
org.mpris.MediaPlayer2              interface -         -                                        -
.Quit                               method    -         -                                        -
.Raise                              method    -         -                                        -
.CanQuit                            property  b         true                                     emits-change
.CanRaise                           property  b         false                                    emits-change
.CanSetFullscreen                   property  b         false                                    emits-change
.DesktopEntry                       property  s         "vlc"                                    emits-change
.Fullscreen                         property  b         false                                    emits-change writable
.HasTrackList                       property  b         false                                    emits-change
.Identity                           property  s         "VLC media player"                       emits-change
.SupportedMimeTypes                 property  as        29 "audio/mpeg" "audio/x-mpeg" "video/m… emits-change
.SupportedUriSchemes                property  as        21 "file" "http" "https" "rtsp" "realrt… emits-change
org.mpris.MediaPlayer2.Player       interface -         -                                        -
.Next                               method    -         -                                        -
.OpenUri                            method    s         -                                        -
.Pause                              method    -         -                                        -
.Play                               method    -         -                                        -
.PlayPause                          method    -         -                                        -
.Previous                           method    -         -                                        -
.Seek                               method    x         -                                        -
.SetPosition                        method    ox        -                                        -
.Stop                               method    -         -                                        -
.CanControl                         property  b         true                                     emits-change
.CanPause                           property  b         false                                    emits-change
.CanPlay                            property  b         false                                    emits-change
.CanSeek                            property  b         false                                    emits-change
.LoopStatus                         property  s         "None"                                   emits-change writable
.MaximumRate                        property  d         32                                       emits-change writable
.Metadata                           property  a{sv}     0                                        emits-change
.MinimumRate                        property  d         0.032                                    emits-change writable
.PlaybackStatus                     property  s         "Stopped"                                emits-change
.Position                           property  i         0                                        emits-change
.Rate                               property  d         1                                        emits-change writable
.Shuffle                            property  d         false                                    emits-change writable
.Volume                             property  d         0                                        emits-change writable
org.mpris.MediaPlayer2.TrackList    interface -         -                                        -
.AddTrack                           method    sob       -                                        -
.GetTracksMetadata                  method    ao        aa{sv}                                   -
.GoTo                               method    o         -                                        -
.RemoveTrack                        method    o         -                                        -
.CanEditTracks                      property  b         true                                     emits-change
.Tracks                             property  ao        0                                        emits-change
.TrackAdded                         signal    a{sv}o    -                                        -
.TrackListReplaced                  signal    aoo       -                                        -
.TrackMetadataChanged               signal    oa{sv}    -                                        -
.TrackRemoved                       signal    o         -                                        -

定義されたすべてのインターフェースとメソッドが表示されます。

たとえば、インターフェイスorg.mpris.MediaPlayer2.Playerから「OpenUri」メソッドを取得します。

busctl --user call org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
- まずビデオを開きます

busctl --user call org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
- ビデオを2番目に開きます。

呼び出し構文:
=============
SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]]を呼び出して
詳細を確認してください。 - Busctl - ヘルプを参照してください。

良い一日をお過ごしください!

関連情報