
Feature request: hybrid widescreen + correspondence view
Reported by Mike Potts | May 3rd, 2022 @ 09:06 PM
Am trying out MailMate: very nice! I would really like a view which is widescreen, but with the left-hand pane (message list) split vertically with the message list on top and the corresponding list on bottom. ie. two columns: left column is message list on top of correspondence; right column is current message contents. I tried to create a custom layout, but although it looks correct (to me) and is a valid plist file, MailMate ignores it. Here it is:
{
name = "Wide Correspondence";
rootViewer =
{
viewerType = "MmSplitView";
orientation = "horizontal";
children =
(
{
viewerType = "MmBoxView";
orientation = "vertical";
defaultSize = 200;
minWidth = 100;
autoresize = 0;
toggleMenuTitle = "Mailboxes";
toggleKeyEquivalent = "^~@d";
dragRect = { width = 16.0; height = 16.0; location = "bottomRight"; };
children =
(
{
identifier = "mailboxesOutline";
viewerType = "MmMailboxesOutlineView";
stickyMessages = 1;
},
{
viewerType = "MmMailboxesStatusBar";
},
);
},
{
viewerType = "MmBoxView";
orientation = "vertical";
children =
(
{
identifier = "pathControl";
viewerType = "MmPathControlView";
sources = ( { sourceIdentifier = "mailboxesOutline"; } );
},
{
viewerType = "MmSplitView";
collapsibleSubview = 2; // Incomplete support -- no way to get it back (1 = first, 2 = last)
children =
(
{ // THIS WAS JUST THE MESSAGE LIST: SHOULD NOW BE SPLIT VERTICALLY: (EXISTING) MESSAGE LIST ON TOP, (NEW) CORRESPONDENCE ON BOTTOM
viewerType = "MmSplitView";
collapsibleSubview = 2; // Incomplete support -- no way to get it back (1 = first, 2 = last)
orientation = "vertical";
children =
(
{ // THIS IS THE MESSAGE LIST
identifier = "mainOutline";
viewerType = "MmMessagesOutlineView";
minWidth = 200;
defaultSize = 300;
autoresize = 0;
columnSettings = "outlineColumns";
sources = ( { sourceIdentifier = "pathControl"; } );
},
{ // THIS IS THE (NEW) CORRESPONDENCE LIST
identifier = "correspondenceOutline";
viewerType = "MmMessagesOutlineView";
minWidth = 100;
sources = ( { sourceIdentifier = "mainOutline"; } );
selectionSources = ( { sourceIdentifier = "mainOutline"; } );
// FIXME: The transformation does not work 'per' message, i.e., it tries to combine any 'from' with any 'to' in $mainOutline.
transformation = "$ALL_MESSAGES.filter((from.address = $mainOutline.from.address and #recipient.address = $mainOutline.#recipient.address) or (from.address = $mainOutline.#recipient.address and #recipient.address = $mainOutline.from.address))";
defaultColumns = ( "subject", "relativeDate" );
outlineColumn = "subject";
},
);
},
{ // THIS IS THE CURRENT MESSAGE ITSELF: NO CHANGE REQUIRED
inject = ( "messageView.plist" );
},
);
},
);
},
);
};
}
Comments and changes to this ticket
-
benny May 4th, 2022 @ 03:03 PM
- State changed from new to resolved
Make sure you save the file in the correct location:
~/Library/Application Support/MailMate/Resources/Layouts/Mailboxes/WideCorrespondence.plist
You cannot inject the message view since then it does not display what is selected in the correspondence list. Also, the layout system isn't perfect and some setups don't work well, but I believe the following works (based on what I got from another user):
Make sure you use the latest test release for this.
{ name = "Wide Correspondence"; rootViewer = { viewerType = "MmSplitView"; orientation = "horizontal"; children = ( { viewerType = "MmBoxView"; orientation = "vertical"; defaultSize = 200; minWidth = 100; autoresize = 0; toggleMenuTitle = "Mailboxes"; toggleKeyEquivalent = "^~@d"; dragRect = { width = 16.0; height = 16.0; location = "bottomRight"; }; children = ( { identifier = "mailboxesOutline"; viewerType = "MmMailboxesOutlineView"; stickyMessages = 1; }, { viewerType = "MmMailboxesStatusBar"; }, ); }, { viewerType = "MmSplitView"; orientation = "vertical"; collapsibleSubview = 2; // Incomplete support -- no way to get it back (1 = first, 2 = last) children = ( { identifier = "pathOutlineBox"; viewerType = "MmBoxView"; orientation = "vertical"; defaultSize = 250; autoresize = 0; children = ( { identifier = "pathControl"; viewerType = "MmPathControlView"; sources = ( { sourceIdentifier = "mailboxesOutline"; } ); }, { identifier = "mainOutline"; viewerType = "MmMessagesOutlineView"; // columnSettings = "outlineColumns"; // Keeps selected messages in the view even if they no longer match the main query // sources = ( { sourceIdentifier = "mainOutline"; }, { sourceIdentifier = "pathControl"; } ); sources = ( { sourceIdentifier = "pathControl"; } ); minHeight = 50; }, ); }, { viewerType = "MmBoxView"; orientation = "vertical"; defaultSize = 200; autoresize = 0; children = ( { viewerType = "MmLabelView"; label = "Correspondence"; }, { identifier = "correspondenceOutline"; viewerType = "MmMessagesOutlineView"; minWidth = 100; sources = ( { sourceIdentifier = "mainOutline"; } ); selectionSources = ( { sourceIdentifier = "mainOutline"; } ); // FIXME: The transformation does not work 'per' message, i.e., it tries to combine any 'from' with any 'to' in $mainOutline. transformation = "$ALL_MESSAGES.filter((from.address = $mainOutline.from.address and #recipient.address = $mainOutline.#recipient.address) or (from.address = $mainOutline.#recipient.address and #recipient.address = $mainOutline.from.address))"; defaultColumns = ( "subject", "relativeDate" ); outlineColumn = "subject"; }, ); toggleMenuTitle = "Correspondence View"; toggleKeyEquivalent = "^~@c"; }, ); }, { viewerType = "MmBoxView"; orientation = "vertical"; children = ( { identifier = "tagsEditor"; viewerType = "MmTagsEditor"; sources = ( { sourceIdentifier = "correspondenceOutline"; } ); }, { viewerType = "MmMultiMessageView"; identifier = "messageView"; minHeight = 150; minWidth = 250; sources = ( { sourceIdentifier = "correspondenceOutline"; } ); }, ); toggleMenuTitle = "Message View"; toggleKeyEquivalent = "^~@h"; } ); }; }
-
Mike Potts May 5th, 2022 @ 02:58 PM
Awesome: works perfectly: thanks!!
(Also I had missed the "Mailboxes" subfolder in the original blog post, so my original effort wasn't even in the right folder!)
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.
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.