Awesome 用户们,你们有没有觉得 Awesome 那个 naughty 组件的通知很丑?
这样子是不是好一些?
Linux 的桌面通知机制是使用 D-Bus 通信的。所以,要换个桌面通知的流程如下:
- 让旧的桌面守护进程释放对应的 D-Bus 目的地名;
- 运行新的桌面守护进程。
首先安装个新的通知守护进程,比如我安装的xfce4-notifyd
。
阅读 Awesome 的naughty.lua
代码之后,发现 Awesome 其实能够「慷慨」地释放org.freedesktop.Notifications
这个通知用的地址的:
$ awesome-client awesome#return dbus.release_name("session", "org.freedesktop.Notifications") boolean true
使用awesome-client
告诉 Awesome 执行这条语句,释放这个 D-Bus 目的地址。返回true
就表示执行成功了。如果喜欢的话,当然可以把这句写到rc.lua
里去。
其实做到这一步就可以了。在需要时 D-Bus 会自动激活 xfce4-notifyd 的进程。当然也可以手动运行:
$ /usr/lib/xfce4/notifyd/xfce4-notifyd
还可以使用xfce4-notifyd-config
命令来进行简单的配置哦。当然,这个替换对于从 Awesome 脚本里直接调用 naughty 不起效的。
从上边的图片可以看到,XFCE 的通知支持按钮的,Awesome 不支持这个。不过,它们都支持类似这种<span color="blue">蓝色文字</span>
的 Pango 文本标记语法。
要换回使用 Awesome 来显示通知的话,先关掉其它通知守护进程,然后让 Awesome 告诉 D-Bus 它要来处理这个地址上的消息:
awesome# return dbus.request_name("session", "org.freedesktop.Notifications") boolean true
最后来吐槽一下 C 公司的notify-osd
,就是 Ubuntu 上默认那个看上去不错的黑框框。它不支持 Pango 文本标记也就罢了,不能同时显示多条通知只能一个个地来也就罢了,像 fcitx 这样往通知上放点按钮你猜会怎么着?——
竟然出来个夺取窗口焦点的弹框……