dunst 的使用
前言
使用i3桌面时,发现没有一个很好的消息推送工具,
看了Arch wiki后,最终选定dunst作为使用的消息推送显示工具
消息推送体系
- 消息推送体系分为发送端和服务器端
- Libnotify是一个公共的独立于桌面通知推送机制,需要安装libnotify-bin.
之后可以使用notify-send 'hello'
命令来发出通知 - 安装通知服务器后才可以在桌面显示通知内容
- notify-osd是unity桌面的默认通知实现
- gnome好像使用了gnome-osd
- kde好像使用了kdialog作为了notify-send的装饰
因其包装了接口并在不带参数时在画面的正中显示消息,
使用kdialog --passivepopup 'why hello there' 5
可以显示出kde默认的效果 - i3中可以使用dunst作为通知服务的实现
- Libnotify是一个公共的独立于桌面通知推送机制,需要安装libnotify-bin.
介绍
dunst是一个第三方的小巧的可定制的通知组件,默认显示在状态栏,点击后消失.
在pacman官方仓库即可安装.
特性
可以使用键盘来操作通知.具体可以看配置文件中的 shortcuts
部分.
- 关闭通知 Ctrl+空格
- 上一条通知 Ctrl+`
- 使用语境软件打开 C+>
配置
示例下载
官方的wiki种有一个示例的配置可以参考
https://dunst-project.org/screenshots/
配置解说
- 使用ini的配置方式.
- 还可以定义点击通知后直接打开应用,
因此配置了dmenu和默认打开通知的浏览器,
但不用的可以关闭. - 设计上是可以使用键盘的快捷键进行操作的,
但是一般会与i3有许多的热键冲突,
因此也一并关闭. - 可以设置不同的优先级使用不同的颜色和显示时间
关于使用浏览器打开
似乎dunst的桌面通知是不支持回复发消息一方的(比如网页).
如果想用浏览器打开,dunst提供的思路如下
- 通知中的内容(比如一个url)会作为语境(context)
- 该语境会以某种方式传递给语境菜单dmenu(比如按下快捷键)
- dmenu会调用一个用户指定的浏览器打开该url
至于为什么一定要dmenu,(i3-menu,j4,rofi怎么就不行)
又或者为什么一定是一个浏览器来接收内容(其他能在命令行中以 command <string>运行的怎么就没有官方例子呢),
暂时不去想.
实现
-
安装dmenu
-
配置文件中启用dmenu的配置
-
使用notify-send模拟通知
1
notify-send 'hello' 'www.google.com'
-
按键触发(Ctrl+Shift+.)
- 此时会显示dmenu,并在右侧显示要打开的url
- 直接按回车会使用默认值
- 使用tab也会选择默认值,然后再按回车也可以打开
- 如果此时输入其他内容则会去打开其他内容