Are you sick of not only having to deal with addon channels hijacking your channel order
But also having the channels change colours like an indecisive chameleon?
I was. I made this.
How to do:
Install it. It does the rest.
If you want to override it, set it up how you want, then use /zencc save. It'll then take your setting as the new gospel.
If you want to go back to automatic sorting, use /zencc reset. It'll then go back to automated handling.
If something goes wrong, reset, then re-order, then save. Send me a comment here to say what happened. Better information to me means better fix.
How it do:
Shortly after login, the channels are sorted dynamically. The official blizzard channels, /general, /trade, /services, /localdefense, /lookingforgroup, and /newcomerchat will all get pushed to the default game order for those channels: /1, /2, /3, /4, /5, and /6 respectively.
It's smarter than some of my relatives, so if you aren't a member of one or more of those, it'll skip it and carry on without confusion.
Known addon-only channels from addons like Total RP 3, Musician, Simply RP, and Cross RP will be automatically sifted to the bottom of the stack.
In this scenario, the unlucky person with all default blizzard comms and all of those addons will now have /7, /8, /9, and /10 occupied by those addon channels.
If you have other personal channels you have joined, community groups, etc, these will be pushed into the middle ground between the two blocs.
If you tell it to /zencc save, then it knows this is the order and these are the colours you would like. It'll then use that instead of sorting it for itself.
Previously, on ZenChannelColours:
What do:
/Generalbecomes white/Tradebecomes sky blue/Servicesbecomes muted cyan/LocalDefensebecomes ochre/LookingForGroupbecomes yellow-orange
Whichever of these you have joined will be sorted into that order (/1 General, /2 Trade, etc). Any you don't have will be skipped.
Known issues
Sometimes Musician's own tricky coding to get past the SpaghettiBlizzard will force Musician into a higher ranked channel again. Fixes on /reload.
For the dev-minded:
As with ChannelSort, this caches the priority and addon channels, then uses C_ChatInfo.SwapChatChannelsByChannelIndex() to shuffle them, sorting Blizz defaults first, addons last, community channels in between.
To fix the channel colour bug, I also have it assign ChangeChatColor() by channel name, rather than by slot. This theoretically could work for community channels as well by pattern matching them against GetChannelList() at PLAYER_ENTERING_WORLD, but I haven't actually tried it to see.