在 Gnome 中设置通知图标 Shell >= 3.16(自定义扩展)

Set Notification Icon in Gnome Shell >= 3.16 (Custom Extension)

我 fork 了一个 Gnome Shell 扩展,因为我想修改它以适应我的个人喜好。我想在每次事件发生时发送通知。使用 Main.notify(summary, text) 发送通知本身相当容易。但是,我就是找不到如何设置自定义图标。 [编辑:以下是错误的。我查找了错误的代码]根据 gnome-github 的 repo-shell 我可以通过可选参数定义一个图标:Main.notify(summary, text, params),其中 params将在 MessageTray.js l.367:

中检查
params = Params.parse(params, { gicon: null,
                                secondaryGIcon: null,
                                bannerMarkup: false,
                                clear: false,
                                soundName: null,
                                soundFile: null });

if (params.gicon || params.clear)
    this.gicon = params.gicon;

所以我尝试使用以下命令:

Main.notify(summary, text, {gicon: myicon});

但是 {gicon: myicon} 部分被完全忽略并使用默认图标 :-/. 我是 Javascript 和 GNOME 编程的新手,所以请不要讨厌我:-)

是普遍推荐使用 Main.notify(),还是已弃用?

干杯,Maphardam

我认为 Main.notify() 通常被推荐,因为它被用在一些 "official" 扩展中。

但是,Main.notify()只有两个参数(msg, details),因此您不能使用此函数来设置自定义图标。 但是,您可以复制 Main.notify() 的源代码并根据您自己的需要进行调整。在以下函数中,通知的 source 设置为带有自定义图标的新创建源。

function notify(msg, details, icon) {
    let source = new MessageTray.Source("MyApp Information", icon);
    Main.messageTray.add(source);
    let notification = new MessageTray.Notification(source, msg, details);
    notification.setTransient(true);
    source.notify(notification);
}

例如,您可以用 notify("MyApp", "Test", 'folder-symbolic'); 来调用它。