{"id":13687536,"url":"https://github.com/jtdaugherty/tart","last_synced_at":"2025-04-12T23:42:48.187Z","repository":{"id":37383615,"uuid":"99449400","full_name":"jtdaugherty/tart","owner":"jtdaugherty","description":"Tart - draw ASCII art in the terminal with your mouse!","archived":false,"fork":false,"pushed_at":"2025-03-28T15:24:55.000Z","size":534,"stargazers_count":390,"open_issues_count":1,"forks_count":19,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-12T23:42:44.973Z","etag":null,"topics":["art","ascii","ascii-art","brick","drawing","haskell","mouse","terminal","tui","vty"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtdaugherty.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-05T21:47:33.000Z","updated_at":"2025-04-05T22:56:12.000Z","dependencies_parsed_at":"2024-10-25T18:35:15.894Z","dependency_job_id":"7a4b13f6-5ab7-49ad-ba92-b039dfe9d973","html_url":"https://github.com/jtdaugherty/tart","commit_stats":{"total_commits":328,"total_committers":4,"mean_commits":82.0,"dds":0.009146341463414642,"last_synced_commit":"60cf391a6b5aa6d776179b78c612cbe69a73db18"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtdaugherty%2Ftart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtdaugherty%2Ftart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtdaugherty%2Ftart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtdaugherty%2Ftart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtdaugherty","download_url":"https://codeload.github.com/jtdaugherty/tart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248647256,"owners_count":21139081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["art","ascii","ascii-art","brick","drawing","haskell","mouse","terminal","tui","vty"],"created_at":"2024-08-02T15:00:56.161Z","updated_at":"2025-04-12T23:42:48.168Z","avatar_url":"https://github.com/jtdaugherty.png","language":"Haskell","funding_links":[],"categories":["Haskell","Editors, Drawing \u0026 Diagramming"],"sub_categories":["Imported: Upstream Snippet Gallery"],"readme":"tart - terminal art program\n===========================\n\n```\n _____  _    ____ _____  _\n(_   _)/ \\  |    (_   _)| |\n  | | / ^ \\ |  O  || |  |_|\n  | |/ ___ \\|  _ \u003c | |   _\n  |_|_/   \\_|_| \\_\\|_|  |_|\n```\n\nTart is a program that provides an image-editor-like interface to\ncreating ASCII art - in the terminal, with your mouse! This program is\nwritten using my purely-functional terminal user interface toolkit,\n[Brick](https://github.com/jtdaugherty/brick).\n\n![](screenshots/2.png)\n\nStatus\n======\n\nExpectation management: This is a fun hobby project that I spent time\non when I first created it many years ago. Since then, I have only\ndone a little bit to keep it working. Since it was (and still is)\nmostly intended as a proof of concept, and since I do not use the tool\nactively, I have not been putting much energy into maintaining it beyond\nkeeping it building. While that isn't likely to change, I am happy to\nsupport people who want to contribute to the tool and I may have energy\nto fix small things as they are reported. Use at your own risk. If other\ntools are more mature or perform better, you are probably better off\nusing them!\n\nBuilding\n========\n\n`tart` is a Haskell project. You'll need\n[GHC](https://www.haskell.org/ghc/) (preferably at least 8.2) and\n[cabal-install](http://hackage.haskell.org/package/cabal-install)\n(preferably at least 2.0). Then:\n\n```\n$ git clone https://github.com/jtdaugherty/tart.git\n$ cd tart\n$ cabal new-build\n$ $(find . -name tart -type f)\n```\n\nFeatures\n========\n\n- Drawing tools: freehand, line, box, flood fill, text string\n- Utility tools: repaint, restyle, eyedropper, eraser\n- Multiple graphical styles for boxes\n- Named image layers with reordering, visibility toggling\n- Character selection for freehand and flood fill tools\n- Set foreground color, background color, and text style independently\n- Full mouse interaction and keyboard shortcuts\n- Paste text from clipboard into canvas\n- Undo and redo\n- Text styles: bold, blink, underline, reverse video\n- Load and save ASCII art files (binary)\n- Save plain versions of ASCII art for embedding in documents\n- Save color versions of ASCII art with terminal escape sequences for\n  printing to terminals\n- Import existing plaintext files as the basis for new ASCII art files\n- Set arbitrary canvas size\n\nTerminal Emulator Support\n=========================\n\n`tart` has been tested extensively with the following terminal emulators\nand is known to work well with them:\n\n * OS X: `iTerm2`\n * OS X: `Terminal.app`\n\nPlease let me know if you use `tart` with another emulator and let me\nknow how well it works!\n\nKeybindings\n===========\n\nTools / styles:\n- `0`..`9`: select tool\n- `y`: open the attribute style selector\n- `!`/`@`/`#`/`$`: select attribute style\n- `f`/`b`: open foreground / background palette selectors\n- `c`: set tool drawing character (where applicable)\n- `\u003c`/`\u003e`: decrease / increase tool size (where applicable)\n- `Esc`: cancel tool drag (e.g. box)\n\nCanvas:\n- `w`/`a`/`s`/`d`: move canvas\n- `C`: re-center canvas\n- `v`: set canvas size\n- `-`/`+`: decrease / increase canvas size\n\nLayers:\n- `C-a`: add new layer\n- `C-r`: rename current layer\n- `C-n`/`C-p`: select next/previous layer\n- `C-x`: delete selected layer\n- `C-u`/`C-d`: move current layer up / down\n- `C-v`: toggle selected layer's visibility\n- `C-l`: toggle visibility of layer list\n\nGeneral:\n- `q`: quit (and optionally save)\n- `C-s`: save\n- `u`: undo\n- `r`: redo\n- OS paste: paste text into canvas\n\nHow It Works\n============\n\nTart requires a terminal with mouse support. You use various tools (such\nas freehand drawing, boxes, etc.) to draw ASCII pictures. You can set a\ncurrent foreground and background color. You can also resize the drawing\ncanvas to get the desired output size. When you're finished, you can\nsave to disk, at which point Tart creates three files:\n\n * A binary file (say `foo.tart`) suitable for reloading with Tart for\n   further editing later\n * A text file `foo.color.txt` containing the ASCII art with terminal\n   color escape sequences, suitable for emitting to terminals\n * A text file `foo.plain.txt` containing the ASCII art without terminal\n   color escape sequences, suitable for embedding in documentation\n\nContributing\n============\n\nIf you decide to contribute, that's great! Here are some guidelines you\nshould consider to make submitting patches easier for all concerned:\n\n - If you want to take on big things, talk to me first; let's have a\n   design/vision discussion before you start coding. Create a GitHub\n   issue and we can use that as the place to hash things out.\n - Please make changes consistent with the conventions I've used in the\n   codebase.\n - Please adjust or provide Haddock and/or user guide documentation\n   relevant to any changes you make.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtdaugherty%2Ftart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtdaugherty%2Ftart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtdaugherty%2Ftart/lists"}