Удалить значок терминала в уведомлении node

Я использую https://github.com/mikaelbr/node-notifier для отображения уведомлений в оболочке.

Это мой код:

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

Уведомление происходит следующим образом:

введите описание изображения здесь

Как вы видите, значок терминала появляется перед именем.

Вы можете помочь мне удалить эту иконку?

Ответы

Ответ 1

Известна проблема с node-notifier.

Из issue # 71:

mikaelbr:

Нет, я боюсь, как работает уведомление, так как это терминал, который инициирует сообщение. Единственный способ избежать этого - использовать свой пользовательский терминал-уведомитель, где значок терминала будет заменен для вашего собственного. Это не большая задача, и вы можете легко установить customPath для репортера центра уведомлений.

kurisubrooks:

Это происходит из-за того, как работают уведомления в OS X. В уведомлении будет отображаться значок приложения, и потому что мы используем terminal-notifier для ввода уведомлений, у нас есть значок терминала-уведомления.

Чтобы обойти это, вам нужно скомпилировать терминал-уведомитель со своим собственным app.icns. Загрузите исходный код, замените пакет AppIcon своим собственным в Xcode, перекомпилируйте терминал-уведомитель и поместите его в node -notifier. (/node-notifier/vendor/terminal-notifier.app)

Теперь, когда у вас есть собственный терминальный уведомитель внутри node -notifier, удалите все ссылки на значки из вашего кода Центра уведомлений OS X и запустите уведомление, как будто у него нет значка. Если в ваших уведомлениях отображается старый значок приложения, вам необходимо очистить кеш-память. (Google, как это сделать)

Еще один ценный комментарий от mikaelb:

Это правильно. Но имейте в виду, что node -notifier использует вилку терминального уведомителя (github.com/mikaelbr/terminal-notifier), чтобы добавить параметр, чтобы ждать уведомления, поэтому это нужно использовать, чтобы добавить свой собственный значок. Легкий способ сделать это - скопировать/вставить из папки поставщика и использовать customPath, чтобы указать на своего собственного поставщика.

Ответ 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 version и build identifier (любое новое значение будет делать) см. Это.

Затем я только что построил проект с помощью xcode, а затем скопировал встроенный файл .app (его можно найти, щелкнув каталог Products проекта от xcode Products > right click the file > show in finder) к моему электронному проекту

например, ваш конечный путь может выглядеть следующим образом. electron-project/vendor/terminal-notifier.app.

Затем я установить customPath, как предположил @Aleksandr M.

Вот что мое выглядело как

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

И ТОГДА это сработало! 🙂