all repos — taro @ main

mblaze frontend in uxn + crystal

taro-ls: fix bad label; taro-ctl: add backup anti traversal for refile
Iris Lightshard
path traversal fix, license, update to 0.2.7
Iris Lightshard
experimental mailmap
Iris Lightshard


mblaze frontend in uxn and crystal

screenshot - taro-ls showing Archives/2022 mailbox selected with a search query active listing mail from the uxn mailing list, and a reader window open next to it reading the initial uxn metadata proposal, with a prompt at the bottom for managing attachments, replying, forwarding, or quitting

build and install

  1. Install and configure mblaze (as well as probably mbsync and msmtp)
  2. Install uxn and crystal
  3. Edit config and probably the mhandle function in taro-reader (see next section)
  4. Run (optionally with the desktopfile argument to fill out the taro.desktop file and put it in your user-level apps)
  5. Copy taro-ctl to your path



The config file is processed into a bunch of constants for taro-ctl by the build script. Adjust them to your needs:


The .theme file format is supported - it can be crafted with nasu and should be located at TARO_LIB/.theme. The following details the purpose (and default) of each color:

  1. Background and text color when hilighted (black)
  2. Hilight, scrollbar, button hover color (turquoise)
  3. Soft fg color eg. resize handle, textbox help (medium gray)
  4. Foreground/text color (whitish gray)

Any 8x8 1bpp ASCII font in icn format can be used. They can be created/edited in nasu and should located at TARO_LIB/font.icn.


taro is a multi-window MUA with three types of windows:

The windows are managed by a master program, taro-ctl, which talks to them with messages (see below).

mail management

The taro-ls window has three main areas:

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

In the bottom-left of the window is an indicator area with in which the following symbols may appear:

There is a resize handle in the bottom right - clicking and dragging it resizes the window.

Additional keybindings:

reading mail

Reading mail is currently done in a terminal that pipes the mail content into less and gives some keybind options:

The attachment actions loop until you enter nothing or a non-numeric value. The whole script loops until you quit.

writing mail

Writing mail is currently done by opening a terminal and calling mcom, which lets you compose in your EDITOR of choice and prompts for additional action.


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.

what it doesn’t do


messages (IPC)

Messages are in the format [1][2:3][...]:

Even messages go from taro-ctl to the uxn windows.

Odd messages go from the uxn windows to taro-ctl (or from taro-ctl to itself).

socket (other IPC)

taro-ctl creates a socket at TARO_LIB/taro.sock and listens for bytes on it. Every time a byte is written to the socket, taro-ctl will use message 15 to update the inbox. Whatever method you use to sync your maildirs to your mailserver, it can write a byte to this socket when you receive mail!

git clone