Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

Feature reqest: Coloring in the message list

#204

One of the few things I miss in MailMate compared other mailers I've used is the ability to color messages based on sender, subject, etc. in the message list. For example, mutt lets you define coloring criteria in the form of search strings, Thunderbird lets you color based on tags, etc. Sometimes it's nice to be able to quickly see what messages are to me, from me, related to current projects, need to be trained in my spam filter, etc.

In my case, I already have smart mailboxes for all of these things, so being able to color based on the presence of a message in a particular mailbox would be sufficient.

Reported by Robert Ricci · December 27th, 2011 @ 06:19 PM

State: accepted
Milestone: none
Assigned to: benny benny

Activity

  1. benny
    benny
    • Assigned user set to benny
    • State changed from new to accepted

    A search query and a smart mailbox is essentially the same thing in MailMate, and tags can also be matched in a query. So, if a color could be assigned to a smart mailbox then that would probably work for most use cases.

    Now, there are a few questions to resolve first:

    • How should the coloring be done visually? (Currently, a red font is used when a message is pending deletion on the server, but it is rarely seen in practice. And a red dot is shown when a message has the \Deleted flag enabled.)
    • When displaying the smart mailbox itself, should the messages then be colored? (I would say it depends on how dominant the coloring is).
    • How should it be handled when a message is matched by multiple queries (smart mailboxes)?

    In other words, I like the idea, but I need to think about the implementation. Ideas are welcome.

    December 28th, 2011 @ 02:19 PM

  2. Robert Ricci
    Robert Ricci

    The more I think about it, the more I really like the idea of assigning colors to mailboxes - this feels like a very MailMate way to do it, as compared to the match strings, tags, etc. that other mail readers use.

    A few thoughts for how to do it visually:

    1. Color the foreground text based on a configurable color - this is what's commonly done in, eg. Thunderbird
    2. Tint the background of the row
    3. Put some kind of colored 'badge' in the message view

    There are a few variants for 3: Only allow one or allow multiple 'badges', and the badge goes into some existing field (like the subject?) or becomes a new showable/hideable column.

    Personally, I didn't even know about the coloring for messages pending deletion, and I've been using MailMate for a month. So I wouldn't mind if it conflicted with colors I set. Or, heck, you could implement that feature by having a smart mailbox that matches \Deleted messages and has its color set to red. That way, users could disable or modify the behavior if they want.

    As for how to handle matches in more than one colored mailbox: one way to mitigate this would be to support more than one coloring style listed above - eg. I could use background coloring to identify which mailing list a message is from, foreground colors to identify the sender, and badges to mark the spam status. This doesn't make the precedence problem go away, but it does at least let the user set things up in a way that makes it less problematic.

    A possible simple way to handle multiple matches: the one higher up in the MAILBOXES list wins? Doesn't require any new UI, though it might not be obvious to users that's the way things work.

    (Ooh, and wouldn't it be cool if the colors showed up on the thread arcs? That way, I could, for example, easily see where I chimed in, which parts of the thread were explicitly to me, etc.)

    I would be inclined to show the color when looking at the mailbox itself.

    December 28th, 2011 @ 06:16 PM

  3. Philip
    Philip

    I would love some functional colouring!

    Maybe even combine it so there is a "winning" condition, like the hierarchy of the smartboxes idea, but then multiple matches could be shown in the details section of the view window for an individual message.

    Another reference is how Gmail does this with coloured tags. The strong tag font colour on a subtler version of the colour for background make it stand out without dominating, which could happen if you colour the entire row.

    Even better idea is perhaps how Mavericks is handling the display of tags on files. Coloured dots in a dedicated column would feel right at home now and allow multiple matches.

    December 15th, 2013 @ 10:59 PM

  4. Mike K
  5. Chris
    Chris

    I would prefer color coding of messages based on an isolated subset of flags or tags and suggest to use the term "color label" for that.

    I currently use Claws Mail and assign a single color label to each mail based on certain criteria (e.g., private mail, job related mail, shopping mail, ...). Mails are pre-filtered and sorted into subfolders on the server side and usually read on the smart phone first. The assignment of color labels and the allocation to (sub)folders follow different rules. Hence many (sub)folders contain messages in different colors, which is the desired state.

    To comfortably achieve proper color labelling, rules must not only apply to new and unread mail in the inbox (e.g., Apple's Mail.app) but to any new mail in any subfolder. The rules to assign a color label as action should ideally support regular expressions in the conditions.

    How should the coloring be done visually?

    The text in the message list should be displayed in the user defined color of a message's color label. If a message is selected, the background color should become the label color and the text should turn white or black depending on the brightness of the color label.

    Currently, a red font is used when a message is pending deletion on the server, but it is rarely seen in practice. And a red dot is shown when a message has the \Deleted flag enabled.

    I do not need color coded text for that information. A red dot or a red "x" in the "Read" column would be a sufficient indicator of that status, in my opinion.

    When displaying the smart mailbox itself, should the messages then be colored? (I would say it depends on how dominant the coloring is).

    You should only be able to assign one color label at a time to a message and the message should always be displayed in that color in the message list, no matter what mailbox it is displayed in.

    If people want to assign more than one color, this should be solved separately from color labels and would have to be displayed in a different way, since displaying text in multiple colors would be weird. You could, for example, allow more than one flag per message and then show more than one colored flag icon in the "Flag" column.

    How should it be handled when a message is matched by multiple queries (smart mailboxes)?

    This is not an issue if one color is assigned as a label like a flag or tag and the color is not an outcome of smart mailbox query matches. The message would always be displayed in the same assigned color.

    Since this feature request has been submitted years ago, may I ask how likely it is to see this implemented in the near future? I am currently looking for a Mac OS substitute for Claws Mail on Windows and would be happy to pay for MailMate, but color coding is an essential feature to me.

    January 19th, 2017 @ 10:13 PM

  6. benny
    benny

    Update (Nov, 2022): Most users will no longer need this low level feature. Recent test releases allow both changing color and the mailbox icon (see the Mailbox menu). A separate menu option then allows this color to be used in the message list (“Use Color in Message List”). Priority is given to the top-most mailbox using this setting.

    Update: The following has been updated to reflect recent changes. Note that the word style is now used instead of color. If you have used this feature you need rename both the plist file and the main key in the file. This applies to any release of MailMate newer than r5356.

    Just a quick update since I've done some work on this feature. There's no GUI yet, but the basics work and it might already be useful for some of you. You need the latest test release: Hold down ⌥ when clicking “Check Now” in the Software Update preferences pane.

    You need to explicitly enable this feature:

    defaults write com.freron.MailMate MmMessageColorsEnabled -bool YES
    

    You also need to manually configure it by creating this file:

    ~/Library/Application Support/MailMate/Styles.plist
    

    Here's an example file I've used for testing. I shows the use of 3 types of colorings. You can add as many as you like of these 3 types (although only the first 2 are useful for now). It also shows the use of bold/italic fonts:

    {   styles = (
            {   type = keyword;
                keyword = '\\Flagged';
                color = "#00FF00";
                fontStyle = "bold";
    
            },
            {   type = mailbox;
                color = "#00FFFF";
                uuid = 'INBOX';
                fontStyle = "italic"; // boldAndItalic can also be used
            },
            {   /*disabled = ":true";*/
                type = filter;
                color = "#FF0000";
                uuid = '0249F96D-9B86-452A-B34A-83D83B0125FE';
            },
        );
    }
    

    The first one is the keyword type. This colors emails matching a specific IMAP keywords. This can also be used for tags (which always map to an IMAP keyword). The second one is the mailbox type which colors messages which are in any one of the available mailboxes (the uuid value can be put on the pasteboard by selecting a mailbox and then hit ⌘C). The last one is currently a semi-hardcoded option. It makes emails pending deletion colored red similar to what is currently fully hardcoded in MailMate.

    Everything has been created with a GUI in mind. It's likely to be a tableview in the Viewer preferences pane which allows reordering. The first match determines the color for any given message.

    Let me know if any of you try it out and whether it works for you or not.

    Update: Note that a color can also be one of the standard system color names. This will adapt to the use of dark mode. Make sure the color used is supported on your version of macOS. An example is systemRedColor.

    February 2nd, 2017 @ 10:40 PM

  7. Jon B.
    Jon B.

    Being able to color based on the account of the message would also be very useful.

    February 5th, 2017 @ 04:32 AM

  8. Chris
    Chris

    I tried it and it works great. I am thrilled that this has been implemented and happily bought a license.

    I may submit a couple of feature requests regarding other things I noticed during testing, but none of those were dealbreakers to me. Hats off to you for developing this mail client!

    February 7th, 2017 @ 10:50 PM

  9. benny
    benny

    @Jon: You can already do this since an account is just another mailbox. Select an account under “SOURCES” in the mailbox list and hit ⌘C to put its UUID on the pasteboard (it's not really a UUID in this case, but it's a unique string).

    @Chris: Thanks for the support! I'm very much behind on answering tickets these days and it might take quite some time before you get a reply. Sorry in advance!

    February 8th, 2017 @ 10:38 AM

  10. benny
    benny

    If you update MailMate in the future (not released yet) then you might experience that this feature no longer works. This is because I've changed how it works and you need to update and rename Colors.plist. See instructions further up in this ticket. On the plus-side you can now also use bold/italic fonts when styling.

    March 1st, 2017 @ 09:46 AM

  11. Chris
    Chris

    Thanks for the heads-up!

    March 1st, 2017 @ 05:03 PM

  12. Mike K
  13. Dmitry
    Dmitry

    Does anyone have any examples of a plist that works with tags? I can't get it to work for the life of me.

    Here's a my styles file:

    {   styles = (
        {   type = keyword;
            keyword = '\\edtech';
            color = "#FF5050";
    
        },
        {   type = keyword;
            keyword = 'corp';
            color = "#FF5050";
    
        }
    );
    }
    

    August 2nd, 2017 @ 10:07 PM

  14. benny
    benny

    @Dmitry: I don't seem to be able to spot any issues with your example file. Is it also not working on the latest test release (r5408)?

    Is it located here:

    /Users/<username>/Library/Application Support/MailMate/Styles.plist
    

    August 11th, 2017 @ 01:54 PM

  15. Dmitry
    Dmitry

    Benny, I managed to update to 5406 (manually) and it's working as expected.

    Thanks!

    August 11th, 2017 @ 11:44 PM

  16. Elio
    Elio

    This is excellent. It had been one of the features that I missed from other programs but not enough to actually send in a feature request about.

    My main questions at this point:

    1. What is the full list of style types? (keyword, mailbox, filter, more?)
    2. Is there any to do conditionals and group the types together? e.g. with this keyword in this mailbox
    3. Is it possible to have styles that only display in some mailboxes? For example: Color messages sent by me in "All Messages" but don't color them in "Sent Messages".

    There have been some really excellent feature additions to MailMate this year. Thanks!

    September 22nd, 2017 @ 08:13 PM

  17. benny
    benny
    1. This is the full list.
    2. Create a smart mailbox matching the emails and then use the mailbox keyword to color these emails. That should give you the same flexibility as smart mailboxes provide.
    3. No. And I don't see an easy way to implement that.

    September 23rd, 2017 @ 12:35 PM

  18. benny
    benny

    I should add that I still plan to add a GUI for this feature. I don't think this is going to break backwards compatibility with Styles.plist, but you never know :)

    September 23rd, 2017 @ 12:36 PM

  19. Eric Sharakan
    Eric Sharakan

    Hi, as a recent convert to MailMate I've also been missing the ability to color messages via a rule action a la Mail.app (e.g. for messages addressed directly to me). Yes, I know I can achieve the same effect using smart mailboxes and the mailbox style type, but then my sidebar will get cluttered with smart mailboxes I don't plan to interact with directly.

    Being able to color messages directly in a rule would be a nice addition, perhaps as part of adding GUI support for colors?

    January 29th, 2018 @ 05:27 PM

  20. John Jannone
    John Jannone
    keyword = '\\Flagged';
    

    Is there a way to differentiate by which flag (red, green, &c...)

    June 4th, 2018 @ 03:04 PM

  21. benny
    benny

    @John: Not with keyword, but you could make smart mailboxes matching colors and then use the mailbox option instead. (I haven't tested this.)

    June 7th, 2018 @ 02:22 PM

  22. Eelco Chaudron
    Eelco Chaudron

    Is there a way to prioritize coloring? I tried re-arranging the order in the file but this does not work.

    June 11th, 2018 @ 08:00 AM

  23. benny
    benny

    @Eelco: Did you relaunch after making the change? A quick look in the code indicates that first match should win.

    June 11th, 2018 @ 01:11 PM

  24. Eelco Chaudron
    Eelco Chaudron

    @Benny, yes it works after changing the order (and fix one filter ;).

    June 11th, 2018 @ 01:46 PM

  25. John Jannone
    John Jannone

    @Benny this does not seem to work; type=mailbox apparently does not include Smart Mailboxes.


    {   styles = (
    
        {   type = mailbox;
            color = "#FFAA00";
            uuid = 'Orange';
            fontStyle = "bold";    },
    
       {   type = mailbox;
            uuid = 'Red';
            color = "#FF0000";
            fontStyle = "bold";    },
    
              {   type = mailbox;
            uuid = 'Drafts';
            color = "#00FF00";
            fontStyle = "bold";    },
    
    );
     }
    

    June 12th, 2018 @ 01:40 AM

  26. Eelco Chaudron
    Eelco Chaudron

    @John you need to copy in the UUID of the smart mailbox to make it work (the uuid value can be put on the pasteboard by selecting a mailbox and then hit ⌘C). Here is my example:

    {   styles = (
            {   type = mailbox;
                color = "#1c61ce";
                uuid = '4BCD87C5-4073-41CE-BA07-4E3B459914D4'; //To, or CC me
            },
            {   type = mailbox;
                color = "#820000";
                uuid = 'E4058ECB-6F30-46D0-AE26-63E9471C15CA'; //NST Team Members
            },
            {   type = mailbox;
                color = "#137f0f";
                uuid = '8CAC5079-1DEF-4814-A9B5-AF24A7F62291'; //Partners
            },
        );
    }
    

    June 12th, 2018 @ 06:41 AM

  27. John Jannone
    John Jannone

    @Eelco Brilliant, thanks! @Benny resolved.

    June 12th, 2018 @ 03:10 PM

  28. Scott Paterson
    Scott Paterson

    I'm on day 27 of 30 of my trial and I really like MailMate but I'm trying to get one last thing working... which is what is described in this ticket. Can't seem to get the coloring to work.

    I'm using version: Version 1.11.3 (5509)

    I've enabled the feature with the following command:

    defaults write com.freron.MailMate MmMessageColorsEnabled -bool YES

    And I created the Styles.plist file in ~/Library/Application Support/MailMate/Styles.plist as follows:

    { styles = ( { type = keyword; keyword = '\waiting'; color = "#f1f442"; } ); }

    I quit and relaunched MailMate but my messages that I have tagged with the 'waiting' keyword, do not show up in color...

    Any idea what I am doing wrong?

    Thanks,

    -Scott

    July 27th, 2018 @ 03:38 PM

  29. benny
    benny

    Just for the record, Scott's main problem was a faulty server.

    August 20th, 2018 @ 02:06 PM

  30. Muescha
    Muescha

    it would be nice if you display the UUDI somewhere in the Edit Mailbox Dialog or in some context submenu of an mailbox and add a Copy UUDI

    August 20th, 2018 @ 05:41 PM

  31. Scott Paterson
    Scott Paterson

    Upgrading my Red Hat Linux Dovecot IMAP server fixed this particular problem.
    Thanks for your time, Benny.
    -Scott

    August 20th, 2018 @ 06:14 PM

  32. benny
    benny

    @Muescha: Noted. I assume you know that selecting a mailbox and hitting ⌘C puts the UUID on the pasteboard.

    August 23rd, 2018 @ 01:52 PM

  33. Zvi Biener
    Zvi Biener

    Is there a way to capture unread messages this way? If I understand correctly, unread message lack the \Seen flag, but don't have a positive flag that this interface can latch onto. Is this right?

    September 29th, 2018 @ 04:47 PM

  34. benny
    benny

    @Zvi: Sorry about the late response. You are correct and I'll keep in mind that a “negative” comparison would be useful. The only workaround is to setup smart mailboxes which toggles (using rules) another keyword when anything goes read/unread.

    November 22nd, 2018 @ 01:39 PM

  35. Nicholas Sloan
    Nicholas Sloan

    I don't suppose there is any way in MM to colour-label a mailbox or smart mailbox (as opposed to the messages in it)?
    I'd actually find this more useful.
    Thanks,
    Nick

    January 4th, 2019 @ 01:59 PM

  36. benny
    benny

    @Nicholas: No, but as you might have seen, mailbox names are some times red (under SOURCES). I could probably add low-level support to set the color of mailboxes, but maybe you should first describe to me how/why you would use mailbox coloring :) (I like use case based feature requests.)

    By the way, coloring all messages in a mailbox is not very useful when viewing that mailbox, but it could be useful when viewing other mailboxes, for example, it can make Inbox messages from a particular account stand out when viewing the universal Inbox.

    Unrelated, I can inform users of the message coloring feature that today I added that the color is also used in the thread arcs view (as a colored circle around the nodes of any colored messages).

    January 18th, 2019 @ 12:09 PM

  37. Nicholas Sloan
    Nicholas Sloan

    maybe you should first describe to me how/why you would use mailbox coloring :) (I like use case based feature requests.)

    For much the same reason as labelling is useful to distinguish folders in Finder: with a long stack of mailboxes and smart mailboxes, it's quicker to identify them instantly by colour than by reading the names. It can also give the list a recognisable shape and make it easier to navigate. This is not a massive deal, but if it was possible to replace individual standard icons with colorised icons by hacking Mailboxes.plist I'd be happy with that. (Your Low Level Customization page suggests that this should be possible, but I could not find the standard mailbox icon resource to edit, and nor could I work out where in the plist to insert the necessary delta text. Quite likely that I misunderstood your elliptical instructions.)

    January 18th, 2019 @ 02:05 PM

  38. Chauncey
    Chauncey

    @benny how would I tint the background of a row of a message in the message list? For example, I'd like to tint the background of flagged messages yellow.

    April 11th, 2019 @ 04:56 PM

  39. Michael McDonald
    Michael McDonald

    I, too, would be interested in a way to tint the background of a row of a message in the message list. +1 for this as an option, please!

    September 5th, 2019 @ 02:16 PM

  40. Steve Dorner
    Steve Dorner

    Super interested in a UI for this. You'd think doing it by hand wouldn't be too much of a strain, but I'm elderly now...

    October 2nd, 2019 @ 11:56 PM

  41. Sebastian Hagedorn
    Sebastian Hagedorn

    I'm a new MailMate user, and I successfully created a Styles.plist that suits me, but I ran into the problem that my colors only work well with Light Mode. I have automatic appearance switching enabled, and when Dark Mode is activated, my styles are hard to read.

    I see two solutions: two separate Styles.plist sets for Light Mode and Dark Mode, or to disregard the custom styles when Dark Mode is activated.

    Thoughts?

    January 18th, 2021 @ 04:14 PM

  42. benny
    benny

    @Sebastian: I'll keep this in mind. Note that you can likely use system colors like systemRedColor which do adapt to the current mode. The available adaptable colors can be found here.

    Everyone else: I'll be sure to review this ticket when I have time to return to this feature. It is likely that I will have to prioritize re-implementing the message list first though (for many reasons) -- and that one is a pretty big todo item.

    January 20th, 2021 @ 03:29 PM

  43. Sebastian Hagedorn
    Sebastian Hagedorn

    @benny, thanks, that's good advice. I changed all my colors, and when the appearance switched just now, they were still legible. I recommend you add that piece of information to the manual page dealing with styles.

    January 20th, 2021 @ 03:41 PM

  44. benny
    benny

    @Sebastian: I'll add it to the manual (and in this ticket).

    January 22nd, 2021 @ 10:52 AM

  45. Andrew Soltys
    Andrew Soltys

    I love this feature! I have enabled via command line as outlined here: https://manual.mailmate-app.com/hidden_preferences. Is there something I can add to the Styles.plist that would highlight any other messages that are part of the thread/conversation in my inbox (when Organize by Threaded is not enabled)? Similar to the Mail.app feature "Highlight message with color when not grouped." See screenshots of the feature here: https://www.macobserver.com/tips/quick-tip/macos-mail-turning-off-h.... Thanks so much.

    April 29th, 2022 @ 06:58 PM

  46. benny
    benny

    Note that the Mailbox menu itself now provides some support for coloring without this low level approach.

    November 6th, 2022 @ 01:44 PM

  47. Andrew Soltys
    Andrew Soltys

    For some reason all options in the Mailbox/Color menu are greyed out. What am I missing? Thanks!

    August 26th, 2023 @ 09:30 PM

  48. Alan Dobkin
  49. Zvi Biener
    Zvi Biener

    Sorry, Benny, I just opened a new ticket before realizing that the report should go here. But sometime between rev 5937 and 6016, Styles.plist stopped coloring messages in the outline view.

    January 8th, 2024 @ 07:50 PM

  50. Alan Dobkin
    Alan Dobkin

    Refer to #3267 and Benny's note above ("Update (Nov, 2022)") for an explanation and resolution. My understanding is that Styles.plist is no longer supported for coloring messages. However, the new method is quite simple and works well.

    January 8th, 2024 @ 09:12 PM

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.