#204 accepted
Robert Ricci

Feature reqest: Coloring in the message list

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

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.

Comments and changes to this ticket

  • benny

    benny December 28th, 2011 @ 02:19 PM

    • 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.

  • Robert Ricci

    Robert Ricci December 28th, 2011 @ 06:16 PM

    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.

  • Philip

    Philip December 15th, 2013 @ 10:59 PM

    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.

  • Mike K

    Mike K April 25th, 2016 @ 04:09 AM

    Five years on, upvote for this. One of the big drawbacks of MailMate for me is the inability to look at a long list of emails in a folder and not easily be able to tell on sight the ones I sent from the ones I received. It's desperately needed.

  • Chris

    Chris January 19th, 2017 @ 10:13 PM

    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.

  • benny

    benny February 2nd, 2017 @ 10:40 PM

    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.

  • Jon B.

    Jon B. February 5th, 2017 @ 04:32 AM

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

  • Chris

    Chris February 7th, 2017 @ 10:50 PM

    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!

  • benny

    benny February 8th, 2017 @ 10:38 AM

    @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!

  • benny

    benny March 1st, 2017 @ 09:46 AM

    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.

  • Chris

    Chris March 1st, 2017 @ 05:03 PM

    Thanks for the heads-up!

  • Mike K

    Mike K March 29th, 2017 @ 08:12 PM

    Just finally got around to testing this latest update to this - beautiful. For me, this is a major improvement. So much easier to visually distinguish incoming emails & outgoing replies now. Thanks.

  • Dmitry

    Dmitry August 2nd, 2017 @ 10:07 PM

    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";
    
        }
    );
    }
    
  • benny

    benny August 11th, 2017 @ 01:54 PM

    @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
    
  • Dmitry

    Dmitry August 11th, 2017 @ 11:44 PM

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

    Thanks!

  • Elio

    Elio September 22nd, 2017 @ 08:13 PM

    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!

  • benny

    benny September 23rd, 2017 @ 12:35 PM

    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.
  • benny

    benny September 23rd, 2017 @ 12:36 PM

    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 :)

  • Eric Sharakan

    Eric Sharakan January 29th, 2018 @ 05:27 PM

    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?

  • John Jannone

    John Jannone June 4th, 2018 @ 03:04 PM

    keyword = '\\Flagged';
    

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

  • benny

    benny June 7th, 2018 @ 02:22 PM

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

  • Eelco Chaudron

    Eelco Chaudron June 11th, 2018 @ 08:00 AM

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

  • benny

    benny June 11th, 2018 @ 01:11 PM

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

  • Eelco Chaudron

    Eelco Chaudron June 11th, 2018 @ 01:46 PM

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

  • John Jannone

    John Jannone June 12th, 2018 @ 01:40 AM

    @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";    },
    
    );
     }
    

  • Eelco Chaudron

    Eelco Chaudron June 12th, 2018 @ 06:41 AM

    @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
            },
        );
    }
    
  • John Jannone

    John Jannone June 12th, 2018 @ 03:10 PM

    @Eelco Brilliant, thanks! @Benny resolved.

  • Scott Paterson

    Scott Paterson July 27th, 2018 @ 03:38 PM

    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

  • benny

    benny August 20th, 2018 @ 02:06 PM

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

  • Muescha

    Muescha August 20th, 2018 @ 05:41 PM

    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

  • Scott Paterson

    Scott Paterson August 20th, 2018 @ 06:14 PM

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

  • benny

    benny August 23rd, 2018 @ 01:52 PM

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

  • Zvi Biener

    Zvi Biener September 29th, 2018 @ 04:47 PM

    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?

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.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

Mac OS X email client.

Shared Ticket Bins

Referenced by

Pages