Dunst: 来自 kdeconnect 的重复通知未合并

创建于 2018-12-01  ·  14评论  ·  资料来源: dunst-project/dunst

我正在使用 kdeconnect 将通知从我的手机发送到我的桌面。 出于某种原因,只有呼叫通知不会被 dunst 删除。 一些调试数据:

当我删除图像数据(通过从呼叫联系人中删除它)时,重复数据删除工作。
有图像数据时不进行重删吗?

安装信息

  • 版本: Dunst - A customizable and lightweight notification-daemon 1.3.2 (2018-05-06)
  • 安装类型:Arch Linux 官方包
  • 发行版和版本: Arch Linux

最有用的评论

或者可能对数据进行哈希处理以避免每次都比较整个事情。

glib2 提供了g_compute_checksum_for_data ,因此无需添加另一个依赖项或重新实现它。 MD5 可能比其他可能的算法足够好并且更快。

所有14条评论

好的,查看代码我发现带有原始图标的通知永远不会被视为重复: https ://github.com/dunst-project/dunst/blob/master/src/notification.c#L180

我将考虑添加一个配置选项来禁用此行为。

我将考虑添加一个配置选项来禁用此行为。

不,我们不会为此合并新选项。 还有其他几种方法可以实现这一点:

  • 为您的通知分配一个stack_tag (最近才合并,为此从 AUR 安装dunst-git )。
  • 或者 - 如果你想要一个实现特性 - 实现一个比较,比较两个原始图像。 实施方面,这可能很难。 我不会编写代码,但我会合并这样的功能。 (不知道@tsipinakis对此有何看法)。

感谢您及时的回复!
不幸的是,我无法控制这些通知,所以我无法直接添加stack_tag 。 有什么我想念的吗?

重新实现图像比较——它不只是一个原始的字节到字节的比较吗?
另一种选择是仅当大小相同且具有 N 个相同字节时才考虑原始图标相等(以避免在图像可能很大的情况下进行完整比较)。

不幸的是,我无法控制这些通知,因此无法直接添加 stack_tag。 有什么我想念的吗?

你有规则。 邓斯特的主要特点之一。 :咧嘴笑:

[rule kdeconnect_stack]
appname = kdeconnect
body = 'Incoming call from Contact'
set_stack_tag = kdeconnect_incoming

并自动将所有来自 kdeconnect 的具有指定正文的通知合并在一起。

那只是一个小模型。 规则可以做得更多。 但是首先安装 dunst-git,更改配置并重新启动 dunst( killall dunst然后发送通知,它会自动启动)。

另一种选择是仅当大小相同且具有 N 个相同字节时才考虑原始图标相等(以避免在图像可能很大的情况下进行完整比较)。

我认为这还不够。 大多数应用程序将原始图像缩放到固定大小,然后再将它们发送到 dunst。

非常感谢!
我认为您建议的规则还不够,因为每个呼叫者的通知正文都会有所不同-“来自 X 的来电”,其中 X 是联系人姓名。 我可以使用body = Incoming call from * ,但是如果我收到来自不同呼叫者的连续通知,它们将被错误地视为重复,对吗?

我认为这还不够。 大多数应用程序将原始图像缩放到固定大小,然后再将它们发送到 dunst。
嗯,是的,我认为图像尺寸可能过于简化。 您认为将几个像素作为快速启发式进行比较是否合理?

我可以使用 body = Incoming call from *,但是如果我收到来自不同呼叫者的连续通知,它们将被错误地视为重复,对吗?

没错,这应该可以正常工作。

实施方面,这可能很难。 我不会编写代码,但我会合并这样的功能。 (不知道@tsipinakis对此有何看法)。

我绝对希望看到这个实现。 纯粹的猜测,没有考虑所有可能的实现,一个简单的 memcmp 可以工作,或者可能对数据进行哈希处理以避免每次都比较整个事情。

或者可能对数据进行哈希处理以避免每次都比较整个事情。

glib2 提供了g_compute_checksum_for_data ,因此无需添加另一个依赖项或重新实现它。 MD5 可能比其他可能的算法足够好并且更快。

我会选择@progandy的解决方案。 如果我没记错的话:您可能需要解决一个小问题:可能不会初始化整个字节串。 因此,整个图像字节的普通哈希可能无法解决,因为可能存在未初始化的内存。

@tsipinakis IIUC body = Incoming call from * (连同set_stack_tag )是有问题的,因为它会导致来自不同呼叫者的通知被合并,对吗?

@tsipinakis @progandy
散列图像数据在这里有什么帮助?
我的意思是,计算哈希仍然需要读取两张图像的所有数据(尽管您只会进行一次比较)。 我错过了什么吗?

是的,但通知不只是比较一次。 在每个通知上,整个等待队列和显示的通知都会与传入的通知进行比较。 并且不散列数据将需要一遍又一遍地读取数据。

知道了谢谢!

我目前正在比较。 g_compute_checksum_for_data实际上非常简单。

如果您知道如何构建 dunst,可以查看https://github.com/dunst-project/dunst/compare/master...bebehei :checksummed-icons。 它可以工作,但需要大量抛光,我必须拆分提交。

@infokiller修复正在进行中 (#586)。 如果你能测试一下,我将不胜感激。

抱歉回复晚了-感谢您这样做,在我测试时有效!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

atomheartother picture atomheartother  ·  6评论

phuhl picture phuhl  ·  3评论

existme picture existme  ·  4评论

Kaligule picture Kaligule  ·  5评论

patrick-motard picture patrick-motard  ·  6评论