.gitignore | ||
build.sh | ||
conf.cr | ||
mread | ||
README.md | ||
taro-ctl.cr | ||
taro-ls.tal |
taro
mblaze frontend in uxn and crystal
build and install
- Configure mblaze
- Install uxn and crystal
- Edit conf.cr and probably the
handle
function in mread - Run build.sh
- Copy
taro-ctl
to your path
usage
The taro-ls
window has three main areas:
- Mailboxes: it's assumed by taro-ctrl that your inbox is named INBOX, and it exists; it's put first, and the rest are shown in alphabetical order
- Mail List: your mail in the default scan-format given in your mblaze-profile is shown here
- Actions: button list and initially hidden text input area
Left clicking on a mailbox switches to that mailbox. Left-clicking on mail selects that mail. You can do multiselect by holding shift when clicking. Right-clicking on mail opens that mail (only the first in the selection if 2 or more are selected). You can also use the Enter
key to open mail.
The buttons on the bottom are as follows (with equivalent keybinds):
- compose [
n
]: open a compose window to write new mail - refresh [
r
]: refresh the current mailbox - mark all read ['.']: this
- search [
/
]: search mail with a regex (only headers, case sensitive) - refile [
m
]: move mail to the given folder - trash [
Del
]: move mail to the Trash folder, unless it's already in the Trash, in which case it's deleted
There is a resize handle in the bottom right - clicking and dragging it resizes the window.
If you try to decrypt/sign with either pinenetry-tty
or pinentry-curses
, GPG will attach it to the stdio of taro-ctl
, not the terminal window where you are viewing/composing mail. Use a graphical pinentry program instead.
TODO
- Make
mread
more user friendly - Implement keybinds for changing mailbox, selecting/scrolling mail, resizing
- Add options to search for case-insensitivity and including body content
- Add option to refile to copy instead of move
- Flag/star messages? I never use this fature if IMAP...
- Real
uxn
implementaions of reader/compose windows? Probably overkill
messages
Messages are in the format [1][2:3][...]
:
- byte 1 is the message type
- bytes 2 and 3 are the length of the message, in bytes
- bytes 4 and beyond are the message itself (payload) - won't be present if the length is 0
Even messages go from taro-ctl
to the uxn
windows.
0
: mailbox list (truncated to 4k - this should be enough)2
: list mail in current mailbox (or search results) (truncated to 32k - if you need more, use search)
Odd messages go from the uxn
windows to taro-ctl
.
1
: change/refresh mailbox; payload is the mailbox to read3
: mark all as read in current mailbox; no payload5
: search mail; payload is the regex7
: refile mail; payload is the beginning and end of the mmsg range in u16, and then the mailbox name9
: trash mail; payload is the beginning and end of the mmsg range in u1611
: read mail; payload is a single u16 message number in the current sequence13
: compose mail; no payload