There's no simple, cross-platform way to register protocol handlers in Electron. Every OS requires a different solution. This seems like something that Electron should smooth over.

There's already a W3C API for this: [`Navigator.registerProtocolHandler`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler). Can Electron implement it?

atom/browser/browser.h
void SetUserTasks(const std::vector<UserTask>& tasks);
  
  
  
  PCWSTR GetAppUserModelID();
#endif
  
  bool OpenFile(const std::string& file_path);
  
  void OpenURL(const std::string& url);
  
  
  void Activate(bool has_visible_windows);
  
  void WillFinishLaunching();
  void DidFinishLaunching();
  
  void RequestLogin(LoginHandler* login_handler);
  
  void PlatformThemeChanged();
  void AddObserver(BrowserObserver* obs) {
    observers_.AddObserver(obs);
  }
  void RemoveObserver(BrowserObserver* obs) {
    observers_.RemoveObserver(obs);
  }
  bool is_shutting_down() const { return is_shutdown_; }
  bool is_quiting() const { return is_quiting_; }
  bool is_ready() const { return is_ready_; }