最近心血来潮,换到了Ubuntu13.10。经过一段时间的整治,使着还是挺方便的。
唯一不爽的就是系统通知(右上角上面偶尔出现的信息提示条)出现的时间太长了(默认是10s)。
大家都知道,我们平常不论干什么QQ是要登录的,偶也不例外。本人在Firefox下使用的webQQ,每次群里一聊天,那信息提示框过了好几分钟了还以那儿提示老久以前的消息呢,导至换歌的时候我都看不到Deepin音乐的提示了。
这不行啊,太难受了。做为一个不作就会死的程序猿,咱得处理一下这个问题。
Google了一把,可以把系统默认的notify-osd这个系统通知组件换成经过Leolik大神修改的,此修改版可以控制timeout,Ok照https://launchpad.net/~leolik/+archive/leolik 装了一边。
经过notify-send测试timeout是可以生效的,但是现在问题来了每次换哥的时候通知一闪就完了,我靠,之前时间长,现在我还没看清就关掉了
So怀疑是音乐内部设置了超时的时间,但是查看通知插件的代码也没有发现有设置timeout的地方(地址:https://github.com/linuxdeepin/deepin-music-player/blob/master/plugins/notify/__init__.py 大家有兴趣可以看一下)。
随便看的时候在源码目录下发现有一个dbus_notify.py,打开一看内容跟插件中调用的接口特别像,仔细一对照。得就是它了,下面是修正后的代码。大家其实直接修改/usr/share/deepin-music-player/src下的文件就可以了。就添加了一行代码,改了下timeout时间
class DbusNotify(object): def __init__(self, app_name, icon=None): self.app_name = app_name self.icon = icon or app_name self.summary = "" self.body = "" self.hints = {} self.actions = [] self.timeout = 1000 ##修改此处的timeout时间,由于是毫秒记,所以记得×1000。原来是3连一秒都不到,肯定是一闪而过啊 def set_summary(self, summary): self.summary = summary def set_body(self, body): self.body = body def set_icon_from_pixbuf(self, pixbuf): pass def pixbuf_to_dbus(self, pixbuf): pass def set_icon_from_path(self, image_path): self.hints["image-path"] = image_path self.icon = image_path ##此处是在通知栏中显示歌曲的封面,默认的时候竟然没有这条语句,deepin开源也太不负责了吧 def notify(self): bus = dbus.SessionBus() # if not check_dbus(bus, NOTIFICATIONS_SERVICE_NAME): # return False try: proxy = bus.get_object(NOTIFICATIONS_SERVICE_NAME, NOTIFICATIONS_PATH) notify_interface = dbus.Interface(proxy, NOTIFICATIONS_SERVICE_NAME) notify_interface.Notify(self.app_name, 5, self.icon, self.summary, self.body, self.actions, self.hints, self.timeout) except: pass dbus_notify = DbusNotify("deepin-music-player", "deepin-music-player")