保留 telega 系统通知历史记录

(telega-notifications-mode 1)
(advice-add 'telega-notifications--notify :after
            (lambda (notify-spec)
              (setq telega-notifications--last-id nil)))
(setq telega-notifications-msg-args
      (list :desktop-entry "telegramdesktop"
            :urgency "normal"
            :timeout 5000))

使用 telega-mode-line-mode 来显示未读消息计数会占用 modeline 上的一个位置,存在感太强了,而系统通知的历史记录也能起到计数的效果,所以我觉得用这个就挺好。缺点是系统通知和 telega 里的未读没办法同步,需要手动清系统通知(一不小心成了防撤回功能)。如果维护一个系统消息和 tg 消息之间的对应关系,倒是可以做到同步,只是有点麻烦。

但是实际上 telega 的通知并没有像想象的那样有历史记录。因为 telega 会在发完通知之后再删除通知,代码注释上说是为了解决某些通知不自动消失的 bug,我这里没遇到这种情况(可能是指需要手动清系统通知的问题),所以直接绕过去这个机制。telega 记录了最后一个通知的 id,以此来删除通知,所以在发送通知之后直接把这个 id 置空,让 telega 以为已经删过了就好。

KDE 用户除此之外还需要另一步配置,因为 KDE 5.16 (更新日志) 引入了一个 feature — 不可配置的通知 (non-configurable notifications 我也不知道啥意思) 将不再保留历史记录,所以像 emacs 发的这种通知就没有记录了。

在网上搜了一圈之后,archlinux 论坛上有网友找到一种迂回的办法,用 desktop-entry 参数把通知来源改成别的应用,比如改成 telegramdesktop,KDE 就会认为你这个通知来自于 telegramdesktop,是 “可配置” 的,所以就给你保留历史记录了。


image

1 个赞