- 手艺 tags:
- dbus
- Douban
- exaile
- foss
- gnome-shell
- javascript published: true comments: true
从有这个动机到基本可用,花了整整一天的时间。现在可以通过GNOME-Shell的一个小菜单从外部控制Exaile豆瓣电台了。它的意思就是说如果你使用Gnome-Shell,你可以把Exaile界面扔到一个你不想看到的地方去,比如第n+1个workspace。然后通过左上角的菜单来控制豆瓣电台的播放。见多识广的你不会对此感到太惊奇,其实它和Ubuntu上的Sound Menu Indicator类似,不过是专门给豆瓣电台设计的。
要实现这个功能,需要播放器通过dbus来expose一些接口供外部程序调用,它和Sound Menu是一样的,通过dbus来解耦。开发起来比较困难的是目前GNOME-Shell的API还不成熟,还没有文档,传统的javascript object inspect方法似乎在这个mozjs的环境里也不能用,所以实在是无从知道一些API。更不要提通过gjs来调用dbus了。网上有一些文档起了很大的作用,如果你也感兴趣,这些文章是:
- 开发GNOME-Shell Extension:http://blog.fpmurphy.com/2011/04/gnome-3-shell-extensions.html
- gjs调用dbus: blog.roodo.com/rocksaying/archives/14229429.html
支持dbus的exaile-doubanfm-plugin会在stable之后合并到主干供大家使用。现在和gjs一样,它的API也不稳定,所以放在分支中: https://github.com/sunng87/exaile-doubanfm-plugin/tree/dbus
gnome-shell extension的代码现在也放在github上(其实还不成熟的东西放到bitbucket比较好的)。有兴趣可以了解: https://github.com/sunng87/exaile-doubanfm-gnome-shell-extension
以上都是unstable,仅供吊胃口之用。