Now that we have a supported platform list of >= 10.10 we can use the `[NSStatusItem button]` instead of the hacks and tricks we use currently.
shell/browser/api/atom_api_tray.h
}
namespace mate {
class Arguments;
class Dictionary;
}  
namespace electron {
class TrayIcon;
namespace api {
class Menu;
class NativeImage;
class Tray : public mate::TrackableObject<Tray>, public TrayIconObserver {
 public:
  static mate::WrappableBase* New(mate::Handle<NativeImage> image,
                                  mate::Arguments* args);
  static void BuildPrototype(v8::Isolate* isolate,
                             v8::Local<v8::FunctionTemplate> prototype);
 protected:
  Tray(v8::Isolate* isolate,
       v8::Local<v8::Object> wrapper,
       mate::Handle<NativeImage> image);
  ~Tray() override;
  
  void OnClicked(const gfx::Rect& bounds,
                 const gfx::Point& location,
                 int modifiers) override;
  void OnDoubleClicked(const gfx::Rect& bounds, int modifiers) override;
  void OnRightClicked(const gfx::Rect& bounds, int modifiers) override;
  void OnBalloonShow() override;
  void OnBalloonClicked() override;
  void OnBalloonClosed() override;