* Electron version: 1.4.15
* Operating system: Arch Linux, `Linux yoga 4.7.6-1-ARCH #1 SMP PREEMPT Fri Sep 30 19:28:42 CEST 2016 x86_64 GNU/Linux`.

I'm running Electron under [KDE Plasma 5.9](https://www.kde.org/announcements/plasma-5.8.95.php), but judging from https://github.com/atom/atom/issues/6255 and https://github.com/atom/atom/issues/5970, it could be also reproduced with other versions. This also affects Atom for obvious reasons ;-).

### Expected behavior

* Global menu should work (like in other programs).
* Electron apps shouldn't consume 100% CPU for no reason.

### Actual behavior

* Global menu is visible, but pressing any action does nothing.
* Electron apps consume 100% CPU.

### Workaround

Use `ELECTRON_FORCE_WINDOW_MENU_BAR=1` (disables globalmenu integration).

### How to reproduce

* Install Plasma 5.9 (for other options see linked issues above).
* Run `electron` under Plasma 5.9 with an enabled global menu (I'm using the menu button in the window titlebar option).
* Observe CPU usage, e.g. with `htop`.
* Try to click any entries in the globalmenu, e.g. `Quit` — they do nothing.

### Screenshots

Without `ELECTRON_FORCE_WINDOW_MENU_BAR`:
![spectacle x22161](https://cloud.githubusercontent.com/assets/291301/22151273/8564d130-df2e-11e6-8ad6-70d6a49b7adc.png)

With `ELECTRON_FORCE_WINDOW_MENU_BAR`:
![spectacle y22161](https://cloud.githubusercontent.com/assets/291301/22151382/da2349ea-df2e-11e6-87b2-667dcaf7ccf5.png)

What the menu looks like:
![spectacle b22161](https://cloud.githubusercontent.com/assets/291301/22151468/1e343932-df2f-11e6-824d-113bd1ef86b9.png)

None of the actions work, not even the `File → Quit` one.
atom/browser/ui/views/global_menu_bar_x11.cc
reinterpret_cast<dbusmenu_menuitem_property_set_bool_func>(
          dlsym(dbusmenu_lib, "dbusmenu_menuitem_property_set_bool"));
  menuitem_property_set_int =
      reinterpret_cast<dbusmenu_menuitem_property_set_int_func>(
          dlsym(dbusmenu_lib, "dbusmenu_menuitem_property_set_int"));
  
  server_new = reinterpret_cast<dbusmenu_server_new_func>(
      dlsym(dbusmenu_lib, "dbusmenu_server_new"));
  server_set_root = reinterpret_cast<dbusmenu_server_set_root_func>(
      dlsym(dbusmenu_lib, "dbusmenu_server_set_root"));
}
AtomMenuModel* ModelForMenuItem(DbusmenuMenuitem* item) {
  return reinterpret_cast<AtomMenuModel*>(
      g_object_get_data(G_OBJECT(item), "model"));
}
bool GetMenuItemID(DbusmenuMenuitem* item, int *id) {
  gpointer id_ptr = g_object_get_data(G_OBJECT(item), "menu-id");
  if (id_ptr != NULL) {
    *id = GPOINTER_TO_INT(id_ptr) - 1;
    return true;
  }
  return false;
}
void SetMenuItemID(DbusmenuMenuitem* item, int id) {
  DCHECK_GE(id, 0);
  
  g_object_set_data(G_OBJECT(item), "menu-id", GINT_TO_POINTER(id + 1));
}
}  
GlobalMenuBarX11::GlobalMenuBarX11(NativeWindowViews* window)