删除节点通知程序中的终端图标

时间:2016-01-25 20:51:22

标签: node.js osx-snow-leopard atom-editor electron

我正在使用https://github.com/mikaelbr/node-notifier包在shell中显示通知。

这是我的代码:

var notifier = require('node-notifier');
var path = require('path');

notifier.notify({
  title: 'My awesome title',
  message: 'Hello from node, Mr. User!',
  icon: path.join(__dirname, 'coulson.jpg'), // absolute path (not balloons)
  sound: true, // Only Notification Center or Windows Toasters
  wait: true // wait with callback until user action is taken on notification
}, function (err, response) {
  // response is response from notification
});

notifier.on('click', function (notifierObject, options) {
  // Happens if `wait: true` and user clicks notification
});

notifier.on('timeout', function (notifierObject, options) {
  // Happens if `wait: true` and notification closes
});

通知如下:

enter image description here

正如您所见,终端图标即将出现在名称之前。

你能帮我解决一下这个图标吗?

3 个答案:

答案 0 :(得分:10)

node-notifier已知问题。

来自issue #71

mikaelbr

  

不,我担心通知是如何工作的,因为它是发起消息的终端。避免这种情况的唯一方法是使用自定义终端通知程序,其中交换终端图标为您自己。这不是一项大任务,您可以轻松set customPath通知中心记者。

kurisubrooks

  

这是因为OS X中的通知工作方式。通知会显示引荐的应用图标,因为我们使用terminal-notifier来推送通知,所以我们有终端通知器的图标。

     

要解决此问题,您需要使用自己的app.icns编译终端通知程序。下载源代码,在Xcode中更改自己的AppIcon包,重新编译终端通知程序并将其弹出到node-notifier中。 (/node-notifier/vendor/terminal-notifier.app

     

现在您已在node-notifier中拥有自己的终端通知程序,从OS X Notification Center代码中删除所有图标引用,并运行通知,就好像它没有图标一样。如果您的通知中显示旧的应用图标,则需要清除图标缓存。 (谷歌如何做到这一点)

来自mikaelb的另一个有价值的评论:

  

这是对的。但请记住,node-notifier使用终端通知器(github.com/mikaelbr/terminal-notifier)的分支来添加等待通知完成的选项,因此这应该用于添加您自己的图标。一种简单的方法是从vendor-folder复制/粘贴,并使用customPath指向您自己的供应商。

答案 1 :(得分:2)

我尝试了@Aleksandr M的步骤,但它似乎并不适合我。也许我对这些步骤不太了解。以下是它对我的影响。

我克隆了https://github.com/mikaelbr/terminal-notifier。然后使用xcode打开项目并删除Terminal.icns文件,并将其替换为我的自定义图标Myicon.icns

然后通过将密钥terminal-notifier/Terminal Notifier/Terminal Notifier-Info.plist设置为icon file来修改Myicon

完成此操作后,只需构建项目就行不通了。我必须更改build versionbuild identifier的值(任何新值都可以)see this

之后我用xcode构建了项目,然后复制了构建的.app文件(你可以通过点击xcode Products项目的Products > right click the file > show in finder目录找到它)到我的电子项目

例如,您的最终路径可能如下所示。 electron-project/vendor/terminal-notifier.app

然后我{@ 3}}为@Aleksandr M建议。

这是我的样子

var notifier = new NotificationCenter({ customPath: 'vendor/terminal-notifier.app/Contents/MacOS/terminal-notifier' });

然后它奏效了!

答案 2 :(得分:0)

这解决了我的问题,你只需准备好你的icns文件:

下载后在终端运行此命令:customize-terminal-notifier

** path / customize-terminal-notifier-master / customize-terminal-notifier -i path / Terminal.icns -b com.bundle.identifier