2

我已经分叉了一个 Gnome Shell 扩展,因为我想修改它以适应我的个人喜好。我想在每次发生事件时发送通知。使用 .发送通知本身相当容易Main.notify(summary, text)。但是,我只是不知道如何设置自定义图标。[编辑:以下是错误的。我查找了错误的代码]根据 gnome-shell 的 github repo,我可以通过可选参数定义一个图标: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(),还是不推荐使用?

干杯,马帕达姆

4

1 回答 1

3

我认为这Main.notify()通常是推荐的,因为它用于一些“官方”扩展。

但是,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');.

于 2015-10-06T15:34:31.743 回答