今天(1-19)是女友@Christinedog的生日,特地发新版本,祝她生日快乐:)
注:在发布不久后很悲剧地发现,在glib 2.31下编译不通过,于是急忙发了个补丁。目前各大发行版使用的glib是2.30,不会受到影响,不过2012年的新发行版本会有问题。这个bug只影响到编译,因此如果是下载安装包而不是自己编译的话,是不会有问题的。
下面是新版本功能介绍。
由于本子突然挂了,修好要一段时间,只好转用家里的机子。Windows自然是用不惯的,于是趁着这个机会装了个Linux Deepin试试。
从亲戚那里得到了一对USB小音箱,正好弥补本本的声音太小的不足。本本的音量接口长年接着耳机,怕打扰到别人的时候用耳机,平时开音箱。
然而切换耳机和音箱太麻烦了。USB音箱的本质是一块USB声卡,要在这两个设备之间切换,就是在内置声卡和USB声卡之间切换。在Gnome Shell下,最快的切换路径应该是右上角的音量指示器->声音设置->输出->选择输出设备。对于要经常切换的人来说每次都要执行这么大一步是很痛苦的。稍微好一点的方案就是打开声音设置后不关闭,每次要切换就切换到声音设置窗口,然后直接切换设置。但是……有谁愿意整天开着个基本没用的窗口呢?
于是在重复了数十次这样的操作后,我终于受不了了。为什么不直接在音量菜单上加上设备切换的功能呢?我决定把Gnome Shell的音量指示器给hack一下,满足我的需求。
Gnome的音量指示器代码在/usr/share/gnome-shell/js/ui/status/volume.js文件里,主要用到一个叫Gvc的组件,这个组件没有文档,只好看gnome shell里的代码。研究了一晚上,基本实现了我的需求:当设备小于2个时,和系统自带的音量菜单没有区别;当设备大于等于2个时,在音量条下方会显示所有的设备,单击即可切换。如下图所示:

我把改动做成了扩展的形式,启用后会替代原有的音量指示器,禁用后还原。扩展已经提交到Gnome Shell Extension网站上了,地址是https://extensions.gnome.org/extension/142/output-device-chooser-on-volume-menu/,目前还在审核中已经通过审核。
代码依旧托管在github上,地址为https://github.com/tigersoldier/Output-device-chooser-on-volume-menu
PS:在研究代码时发现可以直接用滚轮在音量图标上调整音量大小,不必打开音量菜单。@csslayer表示KDE一直有这个功能,我用gnome2的时候一直没试过,不知道gnome2和ubuntu的sound indicator是不是也有这么贴心的设计。
Update:
OSD Lyrics 0.5计划中的一项新特性就是提供一个HTTP Player接口,使得可以方便地实现网络播放器支持。
作为其副产品之一,豆瓣电台的支持已经初步实现了。代码库在 https://github.com/osdlyrics/osdlyrics-doubanfm。
不过目前OSD Lyrics 0.5还不能正常使用,需要一系列麻烦的操作运行HTTP Server。当然最终0.5版发布时,一定会做到和0.4版一样简单。
上两张效果图:

桌面歌词模式

滚动歌词模式
将来或许会有虾米/1g1g/等等的支持,等我把0.5做得差不多先。(为什么豆瓣的先出来了?因为我自己用嘛:P)
OSD Lyrics 0.4.1发布,加入一些0.4.0没来得及实现的特性:
Update:
以前说过GNOME3的一个缺点,在通知栏聊天时,无法看到ibus的候选词界面,确切地说是候选词界面被通知栏聊天界面挡住了。这是GNOME Shell的架构所决定的,目前没有方法可以绕过(除非修改GNOME Shell)本身。唯一的解决方法就是将ibus的界面用GNOME Shell的那一套(Shell Toolkit, St)实现。
时隔整整一年,OSD Lyrics 终于更新到了0.4.0。该版本带来了一系列新特性:
断断续续的开发,就快一年了,0.4版本终于要出来了。
主要的变化如下:
在实现OSD Lyrics的滚动模式的时候,我发现在拖动改变窗口大小时,窗口内容会变得支离破碎。进一步实验发现,只要是直接在窗口上绘图,必然会导致这个结果。例如下面的python代码: