GLib.Notification和Gnome-shell

时间:2015-11-15 18:49:44

标签: notifications vala

我试图在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的先决条件究竟是什么? (Bonus)两个桌面文件与.in?

之间有什么区别

1 个答案:

答案 0 :(得分:1)

您的.desktop文件需要命名为org.gnome.synapse.desktop,并且需要首先安装才能让Gnome找到它,如果您使用{(shapeSelector.subviews[2] as UIView).tintColor = UIColor .redColor() (shapeSelector.subviews[1] as UIView).tintColor = UIColor .redColor() (shapeSelector.subviews[0] as UIView).tintColor = UIColor .redColor() 从源代码安装它,通常需要/usr/local/share/applications/appname 1}}具有root权限。

正如Jens在他的评论中所观察到的,.in文件是Makefile模板,在这种情况下,使用gettext将其处理为desktop.in文件以进行本地化。 .in文件中以make install为前缀的键被解析为源树的po目录中的可用转换,其结果显示在.desktop文件中。实际上只安装了生成的.desktop文件。

我希望这会有所帮助。