function displayNotification(opts) {
  const icon = nativeImage.createFromPath(
    path.join(__dirname, 'app', 'res', 'icons', 'icon.png'),
  );

  if (process.platform === 'win32') {
    tray.displayBalloon({
      title: opts.title,
      content: opts.body,
      icon,
    });

    tray.on('balloon-click', () => {
      opts.onNotificationClick?.();
    });
  }
  else {
    const notification = new electron.Notification({
      title: opts.title,
      body: opts.body,
      icon,
      actions: opts.actions?.map((actionObj) => ({
        text: actionObj.text,
        type: actionObj.type,
      })),
    });

    notification.on('action', (_, index) => {
      opts.actions?.[index].onClick();
    });

    notification.on('click', () => {
      opts.onNotificationClick?.();
    });

    notification.show();
  }
}
Displays Notifications. On Windows, a balloon is displayed
instead of using the Notification API.

@param {object} opts
@param {string} opts.title
@param {string} opts.body
@param {{type: string, text: string, onClick: Function}[]?} opts.actions
@param {Function?} opts.onNotificationClick