csup.mirror

Crystal port of sup email client with notmuch support (mirror of a Fossil repository)

Csup - a Crystal port of the Sup mail client that uses notmuch

(Note: If you are reading this on Github, you can find the original Fossil repository here).

This is a port of the Sup mail client to Crystal. I call it by the unoriginal and unpronounceable name Csup. It uses notmuch as the mail store and search engine. I based this work on Ju Wu's notmuch-enabled variant of Sup, which I call Sup-notmuch. You can find my fork of this Sup-notmuch variant here (Github mirror).

As of this writing (2024-03-09), Csup has nearly all of of the functionality of Sup-notmuch, but is missing:

  • GPG crypto support
  • most of Sup's hooks
  • a few lesser-used commands (such as "kill") that will be added as needed

Most of Csup is a port of code from Sup-notmuch, except for the message threading code, which I rewrote to use notmuch not just for determining the structure of the message thread trees, but also for obtaining the headers and content of the messages. This avoids most instances where Csup has to read the raw message files.

I also eliminated the parallel processing that Sup-notmuch used to load thread data in the background, which required many mutexes and a confusing control flow.

Csup has a built-in SMTP client and an SMTP2GO API client for sending email, so it does not depend on an external program like sendmail for this purpose.

The result is a mail client that looks and behaves almost identically to Sup but is a bit faster (in most cases) and uses much less memory. It is also easier to deploy, being a single compiled binary.

Documentation

See the User Guide for information on how to set up notmuch and Csup.

Acknowledgements

Csup is built on the work of other, smarter people, including (but not limited to) the following:

  • William Morgan and the Sup developers
  • Carl Worth and the notmuch developers
  • Jun Wu for the original notmuch-enabled Sup
  • arcage for the Crystal email shard
  • Samual Black and Joakim Reinert for the Crystal ncurses shard
  • The creators of the beautiful Crystal programming language

Crscope

This repository also includes crscope, a source code browsing tool for Crystal. It is partial reimplementation of cscope, the venerable source code browing tool for C. For more information about crscope, go here.

Repository

csup.mirror

Owner
Statistic
  • 0
  • 0
  • 0
  • 0
  • 2
  • 10 days ago
  • May 9, 2025
License

GNU General Public License v3.0

Links
Synced at

Sat, 01 Nov 2025 15:10:08 GMT

Languages