【问题标题】:GLib.Notification and Gnome-shellGLib.Notification 和 Gnome-shell
【发布时间】:2015-12-30 13:22:00
【问题描述】:

我正在尝试在 Synapse 项目中使用 GLib.Notification api https://code.launchpad.net/~jeremy-munsch/synapse-project/fix-notification/+merge/273323

它正在一些 DE 上工作,除了 gnome-shell。

我的实现基本上是这样的:

var notification = new GLib.Notification (_("Synapse - Pastebin"));
notification.set_body (msg);
var gicon = GLib.Icon.new_for_string ("synapse");
notification.set_icon (gicon);
GLib.Application.get_default ().send_notification (null, notification);

我看到了一些其他相关信息 https://bugzilla.gnome.org/show_bug.cgi?id=710913 https://wiki.gnome.org/HowDoI/GNotification

在最后一个链接:

警告:gnome-shell 使用桌面文件来查找有关通知发件人的额外信息(应用程序图标、名称)。如果您没有基本名称与应用程序 ID 匹配的桌面文件,那么您的通知将不会显示。

我真的不明白这具体意味着/暗示什么。 应用名称为org.gnome.Synapse .desktop 文件包含:

数据/synapse.desktop.in http://paste.ubuntu.com/13287809/

数据/synapse.desktop http://paste.ubuntu.com/13287846/

那么,使用 GLib.Notification 的先决条件到底是什么? (奖励) .in 的两个桌面文件有什么区别?

【问题讨论】:

  • basename 通常表示没有扩展名和路径的文件名:en.wikipedia.org/wiki/Basename
  • .in 文件通常用作 autoconf 的模板(例如 Makefile.in 在运行配置脚本后获取 Makefile)

标签: notifications vala


【解决方案1】:

您的 .desktop 文件需要命名为 org.gnome.synapse.desktop 并且需要先安装它才能让 Gnome 找到它,如果您使用 make install 从源代码安装它,通常在 /usr/local/share/applications/appname 中根权限。

正如 Jens 在他的评论中所观察到的,.in 文件是 Makefile 模板,在这种情况下,Make 使用 gettext 处理 desktop.in 文件以对其进行本地化。 .in 文件中以 _ 为前缀的键被解析为来自源树的 po 目录的可用翻译,您可以在 .desktop 文件中看到其结果。仅实际安装生成的 .desktop 文件。

我希望这会有所帮助。

【讨论】:

  • 我不明白他们为什么对你投了反对票。这实际上是正确的答案。
猜你喜欢
  • 2023-04-09
  • 2011-08-13
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
相关资源
最近更新 更多