cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
rgfincher
New member
Status: New idea

Apple computers and devices extend the use of IMAP flags (normally just set or unset) to support 7 different colours of flags, using a proprietary modification of IMAP and binary 000 -> 111 settings.  This implementation is backwards compatible with non-Apple devices in that setting any colour of apple flag will just show as flagged on a non-apple device, and setting the single flag colour on a non-Apple device will just set a red colour flag on Apple.  

I think it would be relatively simple to support this standard.  Microsoft Exchange/365 also has multi-coloured flags using its own proprietary standard which I expect you already support. 

4 Comments
Status changed to: New idea
Jon
Community Manager
Community Manager

Thanks for submitting an idea to the Mozilla Connect community! Your idea is now open to votes (aka kudos) and comments.

rgfincher
New member

Screenshot 2025-03-27 at 13.55.51.png

โ€ƒ

This is how I use Apple multi-coloured flags in my Apple Mail.  The same coloured flats persist / sync across my other Apple computers, and IOS/iPadOS devices.  Would be great for Thunderbird Android to also pick these up.

rgfincher
New member
 
 
Binary 000 - remove tag
Binary 001 - set tag (default colour)
Binary 010 - RED FLAG
Binary 011 - ORANGE FLAG
Binary 100 - YELLOW FLAG
Binary 101 - GREEN FLAG
Binary 110 - BLUE FLAG
Binary 111 - PURPLE FLAG
 
 
0 = ( "removeTag:", "\\Flagged", "removeTag:", "$MailFlagBit2", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit0" );
1 = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit2", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit0" );
RED    2 = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit2", "removeTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit0" );
ORANGE 3 = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit2",    "setTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit0" );
YELLOW 4 = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit2",    "setTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit0" );
GREEN  5 = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit2", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit0" );
BLUE 6 = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit2", "removeTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit0" );
PURPLE 7 = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit2",    "setTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit0" );
GREY ????
 
Here are the default key bindings which also shows you how the various 
flags are generated:
 
"F" = {
"0" = ( "removeTag:", "\\Flagged", "removeTag:", "$MailFlagBit0", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit2" );
 
"1" = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit0", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit2" );
 
"2" = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit0", "removeTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit2" );
 
"3" = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit0",    "setTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit2" );
 
"4" = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit0",    "setTag:", "$MailFlagBit1", "removeTag:", "$MailFlagBit2" );
 
"5" = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit0", "removeTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit2" );
 
"6" = (    "setTag:", "\\Flagged",    "setTag:", "$MailFlagBit0", "removeTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit2" );
 
"7" = (    "setTag:", "\\Flagged", "removeTag:", "$MailFlagBit0",    "setTag:", "$MailFlagBit1",    "setTag:", "$MailFlagBit2" );
};
 
Colors are (2-7) red, orange, yellow, green, blue, purple, gray. In 
otherwords, number 4 above is what you need to do to generate a yellow 
flag.Here are the default key bindings which also shows you how the various 
flags are generated:
Lancenet
Strollin' around

 

@rgfincher 

Thunderbird for Android doesn't support tags yet. This will come in a future update.

Apple doesn't use a proprietary IMAP format for their flags. Apple uses regular IMAP keyword for flags just like Thunderbird uses IMAP keywords for their tags. Under the hood Thunderbird tags and Apple flags are the same thing. The issue here is that Apple uses a very stupid system to name their flags. If you open Thunderbird for macOS, add your email account, and create a custom tag named "$MailFlagBit0" you will notice that this custom tag will be already applied to many of your emails, for example, all of your orange flagged emails will have this. The red flag is the same as "starred" status in all the other email clients, so all your red flagged emails will be starred in any other email client.

Thunderbird is not at fault here. In all the other email clients that support IMAP keywords if you create a Tag/Flag named `Family`and you add it to one of your emails the email will carry the "family" IMAP keyword and every email client that supports IMAP keywords that have this tag/flag will show it. Except Apple Mail, because they use "$MailFlagBit0", "$MailFlagBit1", "$MailFlagBit2" and combinations of those to display their flags. If Apple was doing the logical thing and naming the IMAP keywords "orange", "green", "purple", "yellow", "gray" and "blue", then you would be able to just add these as custom tags in Thunderbird and they would show properly.

In theory Thunderbird could implement special tags that are compatible with Apple flags. Like a special tag that says "Blue" in the UI but under the hood it adds those "$MailFlagBitX" IMAP keywords instead of adding the regular "blue" IMAP keyword to the email.

The other solution would be Apple letting users add custom tags that follow the regular IMAP keyword naming system instead of just allowing users to rename their default weirdly named IMAP tags.