今回は、D-Busなるものをさわってみました。
D-Busとは、アプリケーション間で通信を行うためのプロトコルで、実行中のアプリケーションからデータを引き出したり、操作したり出来ます。
詳しくは
http://ja.wikipedia.org/wiki/D-Bus
http://www.ibm.com/developerworks/jp/linux/library/l-dbus/index.html
この辺を参照してください。
これを使うと何がいいのかと言うと、
実行中のアプリケーションから様々なデータを取得したり、アプリケーションを操作したりできます。
今回は、これを使用して audacious から再生中の曲データを拾い、libnotifyで表示してみました。
まずは、ソースコードから。(pythonつかってます)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import dbus
import sys
import pynotify
#接続
bus = dbus.SessionBus()
player = bus.get_object("org.mpris.audacious", "/Player")
#データ取得
info = player.GetMetadata()
#pynotify初期化
pynotify.init("Audacious")
#登録
n = pynotify.Notification(info['title'], info['artist']+' - '+info['album'])
#表示
n.show()
audaciousを起動してから実行すると、曲名などがnotifyで表示されるはずです。
(audaciousが起動していないと例外が発生します)
また、上記ソースにて、
player.Play()
player.Stop()
とすれこば、再生/停止出来ます。
今回は以上です。
私としてはとりあえずこれで目標は達成出来たので。
その目標とは、
PC内の音楽をランダムに聴いていて、たまに思い出せない曲があるといちいち仮想デスクトップを切り替えてaudaciousを表示する必要があるので、その手間が面倒くさい。
notify使って表示出来れば最高じゃないか!と言うのが今回の目標でした。
このプログラムを作成してしばらく使っていましたが、先日、audtoolなるものを発見。
manpageみると・・・全部出来る。
つまり、無理してプログラミングしなくても簡単にやる方法が・・・。はぁ。
ま、少しD-Busに触れられたからよしとしよう。何か使えることあるかも。