dunst 的使用

前言

使用i3桌面时,发现没有一个很好的消息推送工具,
看了Arch wiki后,最终选定dunst作为使用的消息推送显示工具

消息推送体系

  1. 消息推送体系分为发送端和服务器端
    1. Libnotify是一个公共的独立于桌面通知推送机制,需要安装libnotify-bin.
      之后可以使用 notify-send 'hello' 命令来发出通知
    2. 安装通知服务器后才可以在桌面显示通知内容
      • notify-osd是unity桌面的默认通知实现
      • gnome好像使用了gnome-osd
      • kde好像使用了kdialog作为了notify-send的装饰
        因其包装了接口并在不带参数时在画面的正中显示消息,
        使用 kdialog --passivepopup 'why hello there' 5 可以显示出kde默认的效果
      • i3中可以使用dunst作为通知服务的实现

介绍

dunst是一个第三方的小巧的可定制的通知组件,默认显示在状态栏,点击后消失.
在pacman官方仓库即可安装.

特性

可以使用键盘来操作通知.具体可以看配置文件中的 shortcuts 部分.

  • 关闭通知 Ctrl+空格
  • 上一条通知 Ctrl+`
  • 使用语境软件打开 C+>

配置

示例下载

官方的wiki种有一个示例的配置可以参考
https://dunst-project.org/screenshots/

配置解说

  1. 使用ini的配置方式.
  2. 还可以定义点击通知后直接打开应用,
    因此配置了dmenu和默认打开通知的浏览器,
    但不用的可以关闭.
  3. 设计上是可以使用键盘的快捷键进行操作的,
    但是一般会与i3有许多的热键冲突,
    因此也一并关闭.
  4. 可以设置不同的优先级使用不同的颜色和显示时间

关于使用浏览器打开

似乎dunst的桌面通知是不支持回复发消息一方的(比如网页).
如果想用浏览器打开,dunst提供的思路如下

  1. 通知中的内容(比如一个url)会作为语境(context)
  2. 该语境会以某种方式传递给语境菜单dmenu(比如按下快捷键)
  3. dmenu会调用一个用户指定的浏览器打开该url

至于为什么一定要dmenu,(i3-menu,j4,rofi怎么就不行)
又或者为什么一定是一个浏览器来接收内容(其他能在命令行中以 command <string>运行的怎么就没有官方例子呢),
暂时不去想.

实现

  1. 安装dmenu

  2. 配置文件中启用dmenu的配置

  3. 使用notify-send模拟通知

    1
    notify-send 'hello' 'www.google.com'
  4. 按键触发(Ctrl+Shift+.)

    1. 此时会显示dmenu,并在右侧显示要打开的url
    2. 直接按回车会使用默认值
    3. 使用tab也会选择默认值,然后再按回车也可以打开
    4. 如果此时输入其他内容则会去打开其他内容