BMPx 0.11.4

We're progressing now well on the DBus interface, a full client like the core GUI is yet not quite possible (a few DBus things need to be sorted out) but something like a control widget is possible without problems. This client is written in PyGTK and uses DBus-Python, and is available in current SVN.

Also in current SVN is a small script for XChat that allows basic control over BMPx from XChat as well as the notorious 'announce to channel'. It requires DBus-Python as well.

Along these lines, 0.11.4 will be released soon, somewhen in the next 1-2 days. Cheers :D

現在我々開発チームのDBusインターフェイスに関する仕事ははかどっている。核となるGUIのような完全なクライアントはそれほど可能なわけではない(幾つかのDBusに関する問題が解決されなければならない。)が、コントロールウィジェットのような何かは問題なく可能だ。このクライアントはPyGTKで書かれ、DBus-Pythonを使用しており、現在SVNで入手可能である。

現在同様にSVNでXChatからBMPxへの基本的な操作を提供する小さなスクリプトが良く知られた「announce to channel」と同様に入手可能である。それは同様にDBus-Pythonを使用している。

ある時点、ここ一日二日の間に0.11.4はすぐにリリースされるだろう。

BMPx 0.11.4 is released. Changes are:

  • Fixed a lot of bugs (consult the ChangeLog file for details)
  • DBus interface was extended
  • A sample client written in PyGTK/DBus-Python was included
  • Also an BMPx-XChat script (also in Python using DBus-Python) was included as well

BMPx 0.11.4がリリースされた。変更点は以下の通りである。

  • 沢山のバグが修正された。詳細はチェンジログ参照のこと。
  • DBusインターフェースが拡張された。
  • PyGTK/DBus-Pythonで書かれたサンプルクライアントが同梱された。
  • PyGTK/DBus-Pythonで書かれたBMPx-XChatスクリプトも同梱された。

GCC4でのコンパイルも通ったが、少し警告が表示されていたので結局gcc32でビルド。control widgetのようなものは結論から言うと起動すら出来なかった。bmp-remoteを起動すると、

$ bmp-remote
Traceback (most recent call last):
  File "/usr/bin/bmp-remote", line 145, in ?
    m = BMPMonitor()
  File "/usr/bin/bmp-remote", line 57, in __init__
    self.bus = dbus.SessionBus()
  File "/usr/lib/python2.4/site-packages/dbus/_dbus.py", line 206, in __init__
    Bus.__init__(self, Bus.TYPE_SESSION)
  File "/usr/lib/python2.4/site-packages/dbus/_dbus.py", line 71, in __init__
    self._connection = dbus_bindings.bus_get(bus_type)
  File "dbus_bindings.pyx", line 1529, in dbus_bindings.bus_get
dbus_bindings.DBusException: Unable to determine the address of the message bus

と出てだめ。BMPx起動時にエラーが出力されているのかと思い、--no-logオプションを付けて起動すると、

$ bmpx --no-log
(途中省略)
BMP-Message: bmp_system_control.c:783: Couldn't connect to session bus: Unable to determine the address of the message bus
dbusデーモンが何かおかしいことが分かった。messagebusサービスは動いているのに不思議だと思いながら、dbus-daemonのmanをみてみると、

There are two standard message bus instances: the systemwide message bus (installed on many systems as the "messagebus" init service) and the per-user-login-session message bus (started each time a user logs in).

--session
Use the standard configuration file for the per-login-session message bus.

ということで、dbus-daemon --sessionを実行してみるも結果変わらず。ふとFedora Developmentのパッケージ一覧を見てみると、dbus-x11パッケージ*1がある。未インストールであったのでYUMからインストールしてみると、

$ bmpx --no-log
(途中省略)
BMP-Message: bmp_system_control.c:815: INITIALIZED (DBus: /org/beepmediaplayer/SystemControl/BmpSystemControl)
$ bmp-remote
Traceback (most recent call last):
  File "/usr/bin/bmp-remote", line 145, in ?
    m = BMPMonitor()
  File "/usr/bin/bmp-remote", line 66, in __init__
    self.bmpx.SendStatus()
  File "/usr/lib/python2.4/site-packages/dbus/proxies.py", line 64, in __call__
    reply_message = self._connection.send_with_reply_and_block(message, timeout)
  File "dbus_bindings.pyx", line 395, in dbus_bindings.Connection.send_with_reply_and_block
dbus_bindings.DBusException: Method "SendStatus" with signature "" on interface "org.beepmediaplayer.SystemControl" doesn't exist

うまく行くと思ったのに、その期待は見事打ち砕かれた。ぼんやりした頭でこれ以上考えてもしょうがないので、今日のところはこれまでとする。BMPx 0.11.2で追加された.desktopファイルだが、少々修正しないとFedora Developmentではアイコンが表示されない。

BMPx 0.11.4 Screen Shot

"Icon=bmpx.png"を"Icon=/usr/share/icons/hicolor/48x48/apps/bmpx.png"に置換するだけだ。

BMPx 0.11.4 Screen Shot

SPECファイルに書こうと思ったが、もう面倒になってしまったので次のバージョンが出た時に直そうと思う。簡単なSEDスクリプトを書くだけなんだけどな。
BMPx 0.11.3で書式が変更されたはずなのに旧来のままである。*2

BMPx 0.11.4 Screen Shot

なぜかメディアライブラリーの検索はどうするのか分からなかった。0.11.4には含まれていないのかもしれない。ウィジェットが動かないのも問題だが、さらに重要なのはサウンドカードが認識されないことである。両方ともいろいろ試してみる必要がありそうだ。

*1:dbus-launchが含まれている。examples/dbus-python/bmp-xchat/READMEにdbus-launchを使えと出ていたことを思い出したが、もっと早く気付くべきだった。そうすれば、python, pygtk2の更新などする必要も(ry

*2:もちろん起動前にrm -rf ~/.bmpxを実行している。