Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove terminal icon in node notifier

I am using the https://github.com/mikaelbr/node-notifier package to show notifications in shell.

This is my code:

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
});

The notification comes like this:

enter image description here

As you can see a terminal icon is coming before the name.

Can you help me how to remove that icon?

like image 508
Raghav Avatar asked Jan 25 '16 20:01

Raghav


2 Answers

It is known issue with node-notifier.

From issue #71:

mikaelbr:

No, I'm afraid that's how the notification work, as it's the terminal that initiates the message. The only way to avoid this is to use your custom terminal-notifier where the Terminal icon is swapped for your own. It's not a big task, and you can easily set customPath for notification center reporter.

kurisubrooks:

This happens because of the way notifications in OS X work. The notification will show the referring app icon, and because we're using terminal-notifier to push notifications, we have the icon of terminal-notifier.

To work around this, you'll need to compile terminal-notifier with your own app.icns. Download the source, change out the AppIcon bundle with your own in Xcode, recompile terminal-notifier and pop it into node-notifier. (/node-notifier/vendor/terminal-notifier.app)

Now that you have your own terminal-notifier inside node-notifier, remove all the icon references from your OS X Notification Center code, and run the notification as if it has no icon. If the old app icon is showing in your notifications, you need to clear your icon cache. (Google how to do this)

Another valuable comment from mikaelb:

That's correct. But keep in mind, node-notifier uses a fork of terminal-notifier (github.com/mikaelbr/terminal-notifier) to add option to wait for notification to finish, so this should be used to add your own icon. A easy way to do it is to copy/paste from the vendor-folder and use customPath to point to your own vendor.

like image 56
Aleksandr M Avatar answered Nov 18 '22 05:11

Aleksandr M


I tried @Aleksandr M's steps but it didn't seem to work for me. Maybe I didn't understand the steps well enough. Here's how it worked for me.

I cloned https://github.com/mikaelbr/terminal-notifier . Then opened the project with xcode and deleted the Terminal.icns file and replaced it with my custom icon Myicon.icns.

Then edited terminal-notifier/Terminal Notifier/Terminal Notifier-Info.plist by setting the key icon file to Myicon.

After doing this, simply building the project did NOT work. I had to change the values of the build version and build identifier (any new value would do) see this.

Afterwards I just built the project with xcode and then copied the built .app file (you can find it by clicking the Products directory of the project from xcode Products > right click the file > show in finder) to my electron project

e.g your final path may look like this. electron-project/vendor/terminal-notifier.app.

Then I set customPath as @Aleksandr M suggested.

Here's what mine looked like

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

And THEN it worked! 🙂

like image 27
ifedapo olarewaju Avatar answered Nov 18 '22 07:11

ifedapo olarewaju