我试图在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?
之间有什么区别答案 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文件。
我希望这会有所帮助。