wsdfhjxc added a comment.
Unfortunately, comparing by `item.text` with a non-US language enabled makes the result worse than on previous screenshot (especially the order of items within the `Hardware` group is very odd). To get it consistent regardless of system's language setting it might be better to compare by `item.itemId`. Although `StatusNotifierItem` may have it undefined initially, it can be fixed with a timer hack and waiting till a proper `Id` is available, then updating the `itemId` property and calling `updateItemVisibility()` function. Modifying the comparing function to look at `item.itemId` instead of `item.text` makes the result no better than it was originally. However, if compared strings are slightly altered in a specific way, the result might be better (something like a seed to get the most satisfying pattern). For example: function compareItems(a, b) { var categoryDiff = indexForItemCategory(a) - indexForItemCategory(b) var altA = a.itemId ? a.itemId.replace("org.kde.", "").replace("plasma.", "") : "" var altB = b.itemId ? b.itemId.replace("org.kde.", "").replace("plasma.", "") : "" altA = altA.substring(altA.length / 2, altA.length) altB = altB.substring(altB.length / 2, altB.length) return categoryDiff != 0 ? categoryDiff : altA.localeCompare(altB) } Screenshot below presents the item ordering result after this modification, which is consistent regardless of system's language setting and which looks nicer in my opinion. F5759917: Items.png <https://phabricator.kde.org/F5759917> I don't really have any other ideas on further improvements, so forgive me if you find this one utterly stupid, I promise there will bo no more of them :) REPOSITORY R120 Plasma Workspace REVISION DETAIL https://phabricator.kde.org/D11352 To: Pitel Cc: wsdfhjxc, mart, plasma-devel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol