Home

Awesome

tart - terminal art program

 _____  _    ____ _____  _
(_   _)/ \  |    (_   _)| |
  | | / ^ \ |  O  || |  |_|
  | |/ ___ \|  _ < | |   _
  |_|_/   \_|_| \_\|_|  |_|

Tart is a program that provides an image-editor-like interface to creating ASCII art - in the terminal, with your mouse! This program is written using my purely-functional terminal user interface toolkit, Brick.

Status

Expectation management: This is a fun hobby project that I spent time on when I first created it many years ago. Since then, I have only done a little bit to keep it working. Since it was (and still is) mostly intended as a proof of concept, and since I do not use the tool actively, I have not been putting much energy into maintaining it beyond keeping it building. While that isn't likely to change, I am happy to support people who want to contribute to the tool and I may have energy to fix small things as they are reported. Use at your own risk. If other tools are more mature or perform better, you are probably better off using them!

Building

tart is a Haskell project. You'll need GHC (preferably at least 8.2) and cabal-install (preferably at least 2.0). Then:

$ git clone https://github.com/jtdaugherty/tart.git
$ cd tart
$ cabal new-build
$ $(find . -name tart -type f)

Features

Terminal Emulator Support

tart has been tested extensively with the following terminal emulators and is known to work well with them:

Please let me know if you use tart with another emulator and let me know how well it works!

Keybindings

Tools / styles:

Canvas:

Layers:

General:

How It Works

Tart requires a terminal with mouse support. You use various tools (such as freehand drawing, boxes, etc.) to draw ASCII pictures. You can set a current foreground and background color. You can also resize the drawing canvas to get the desired output size. When you're finished, you can save to disk, at which point Tart creates three files:

Contributing

If you decide to contribute, that's great! Here are some guidelines you should consider to make submitting patches easier for all concerned: