When showing all apps, hides apps from the system category. Apps can still be accessed by selecting the system tools category. Basically made redundant for 3.8+ with the introduction of app folders, so it won't be updated.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
I thought about the last category issue, but thought getting it by name would cause more issues with localisation. How can I get the System Tools category reliably?
You need to crawl the GMenuTree (Shell.AppSystem.get_tree().get_root_directory(), and then iterate with GMenu methods), and filter for a GMenuTreeDirectory whose menu_id is "System Tools" (unlocalized)
Shell.AppSystem is a class and can't be used directly. I tried using some code from copied from the system: var tree = this._appSystem.get_tree(); var root = tree.get_root_directory(); var iter = root.iter(); var nextType; var i = 0; while ((nextType = iter.next()) != GMenu.TreeItemType.INVALID) { if (nextType == GMenu.TreeItemType.DIRECTORY) { var dir = iter.get_directory(); if (dir.get_is_nodisplay()) continue; global.log(dir.get_name(), i); //this._addCategory(dir.get_name(), i, dir); i++; } } However, even running interactively in Looking Glass, I could not find any attribute or method that would return the unlocalised name. I also tried comparing with a localised string, but _("System Tools") would always return 'System Tools', I'm not sure how to bind the text domain to get the translations from the same place as the categories. Any further help you can give?
Yeah, obviously I meant Shell.AppSystem.get_default().etc... Anyway, the method you want on GMenuTreeDirectory is "get_menu_id()".