Today's topic for the rewrite features is: binaries.
As some may have seen from the doxygen documentation and/or the source, several binaries are being built and will be installed. There'll be one main muttng binary and several others being a symlink to it. Upon startup, the binary name is detected an muttng behaves differently. This article briefly explains what these binaries will do as my documentation patch is not yet committed.
Of course, muttng(1) will remain the main interactive client with a curses-based interface. This is also the main binary being installed.
muttng-conf(1) will be, inspired by the postconf(1) command, a command for configuration diagnostics. Currently, the following items are already supported: print variable names and values and print function bindings. For these and all future groups of items, there are the following three modes planned: (1) just print everything as-is, (2) print only changed items and (3) as an add-on to the other two modes, support an "annotated" mode. "Annotated" means that it prints comments with defaults and other descriptions along the main output. Output will be printed in the muttngrc syntax so that the output can be used as a configuration file itself.
muttng-mailx(1) will be a true mailx(1) replacement. Now that there is a command-line option to enable mailx-compatibility. However, it doesn't make sense as scripts or the like must be ported to it. We will turn this into a true replacement so that it, for example, can be used with mechanisms such as Debian's alternates. This will be a really cool feature as all tools will use the users configuration. For example, with it all the hooks and other features being available for the mailx-replacement, users can setup cronjobs and their mail delivery very flexibly.
muttng-query(1) is a temporary addition and it depends on user feedback whether it will stay or not. As the user interface(s) are last on our "roadmap" (because we want to ensure the two library layers are working properly before we start to use them), we need something to test libmuttng with. The query tool will provide a command-line way of dealing with any type of folder. Also it will support a colon mode similar to that of gpg(1) so that output can be parsed by scripts easily. Planned features are listing which mailboxes have new mail, maybe also print which mail is new, maybe search accross folders, etc. Before its addition yesterday some testing code was implemented in muttng(1) where it doesn't fit so I simply created this tool. As said, we're doing a rewrite and are interested in feedback and critics of any type so it depends on users whether this tool will stay and what features it'll offer.
muttng-sync(1) will be a tool supporting bi-directional syncing of arbitrary folders. Possible uses range from simple offline IMAP to syncing two Maildir trees with a workstation and a laptop. As it'll also be built upon libmuttng which will provide transparent support for different mailbox types, it'll be theoretically possible to mirror remote newsgroups to a local Maildir or MBOX file as well as a remote IMAP folder. Not only because users requested an offline IMAP feature (which muttng-sync(1) will be the generalized solution to), but also to test whether the abstraction we make in libmuttng, this tool serves well a real-world test environment.
Any feedback is welcome...