{"id":13440246,"url":"https://github.com/cmang/durdraw","last_synced_at":"2025-03-20T09:32:40.130Z","repository":{"id":15466200,"uuid":"18199420","full_name":"cmang/durdraw","owner":"cmang","description":"Versatile ASCII and ANSI Art text editor for drawing in the Linux/Unix/macOS terminal, with animation, 256 and 16 colors, Unicode and CP437, and customizable themes","archived":false,"fork":false,"pushed_at":"2024-05-17T07:18:04.000Z","size":4214,"stargazers_count":606,"open_issues_count":7,"forks_count":20,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-18T00:07:05.123Z","etag":null,"topics":["animation","ansi","ansi-art","art","ascii","ascii-art","ascii-graphics","bbs","cp437","drawing","editor","linux","ncurses","terminal","text-editor","textmode","tui","unicode","unicode-art","xterm-256color"],"latest_commit_sha":null,"homepage":"http://durdraw.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":null,"patreon":"samfoster","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2014-03-28T03:03:33.000Z","updated_at":"2024-05-30T07:48:09.129Z","dependencies_parsed_at":"2024-01-11T08:38:58.421Z","dependency_job_id":"d1601cae-d0d0-4143-95bf-2d5173c62b10","html_url":"https://github.com/cmang/durdraw","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmang%2Fdurdraw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmang%2Fdurdraw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmang%2Fdurdraw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmang%2Fdurdraw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmang","download_url":"https://codeload.github.com/cmang/durdraw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221745283,"owners_count":16873743,"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":["animation","ansi","ansi-art","art","ascii","ascii-art","ascii-graphics","bbs","cp437","drawing","editor","linux","ncurses","terminal","text-editor","textmode","tui","unicode","unicode-art","xterm-256color"],"created_at":"2024-07-31T03:01:21.049Z","updated_at":"2025-03-20T09:32:40.111Z","avatar_url":"https://github.com/cmang.png","language":"Python","readme":"Durdraw\n=======\n\n                  __                __\n                _|  |__ __ _____ __|  |_____ _____ __ __ __\n               / _  |  |  |   __|  _  |   __|  _  |  |  |  |\\\n              /_____|_____|__|__|_____|__|___\\____|________| | \n              \\_____________________________________________\\|  v 0.29.0\n\n![durdraw-0 28-demo](https://github.com/user-attachments/assets/3bdb0c46-7f21-4514-9b48-ac00ca62e68e)\n\n\n## Overview\n\nDurdraw is an ASCII, Unicode and ANSI art editor for UNIX-like systems (Linux,\nmacOS, etc). It runs in modern Utf-8 terminals and supports frame-based\nanimation, custom themes, 256 and 16 color modes, terminal mouse input, DOS\nANSI art viewing, CP437 and Unicode mixing and conversion, HTML output, mIRC\ncolor output, and other interesting features.\n\nDurdraw is heavily inspired by classic ANSI editing software for MS-DOS and\nWindows, such as TheDraw, Aciddraw and Pablodraw, but with a modern Unix twist.\n\n- [Overview](#overview)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Gallery](#gallery)\n- [Usage](#usage)\n  - [Command Line](#command-line)\n  - [Interactive Usage/Editing](#interactive-usageediting)\n  - [Configuration](#configuration)\n- [Durfetch](#durfetch)\n- [FAQ](#faq)\n- [Other](#other)\n\n---\n\n## Requirements\n\n* Python 3 (3.10+ recommended)\n* Linux, macOS, or other Unix-like System\n\n**Optional Requirements**\n\n1. `ansilove`\n\n    For PNG and animated GIF export, please install `ansilove` (https://ansilove.org/) and make sure it is is in your path.   \n    _PNG and GIF export only works in 16-color mode for now, and only with CP437 compatible characters._\n\n2. `neofetch`\n\n    For [durfetch](#durfetch) support, please install `neofetch` and place it in your path.\n\n## Installation\n\nYou can install `durdraw` via several methods:\n\n- [Via OS Repositories](#via-os-repositories)\n- [Via Source Repository](#via-source-repository)\n- [Via pip](#via-pip)\n\nAfter installing, you should be able to run `durdraw`. Press `esc-h` for help, or try `durdraw --help` for [command-line options](#command-line-usage).\n\n_If you just want to run it without installing, see [Running Without Installing](#running-without-installing). You can also install via the included Dockerfile._\n\n### Via OS Repositories\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/durdraw.svg)](https://repology.org/project/durdraw/versions)\n\n### Via Source Repository\n\n1. Download and extract, or use git to download:\n\n    ```shell\n    git clone https://github.com/cmang/durdraw.git\n    cd durdraw\n    ```\n\n2. Install or upgrade using pip:\n\n    ```shell\n    python3 -m pip install --upgrade .\n    ```\n\n3. Optionally, install some themes and a sample configuration file for your local user into `~/.durdraw/`:\n\n    ```shell\n    ./installconf.sh\n    ```\n    This will place durdraw.ini into `~/.durdraw/` and the themes into `~/.durdraw/themes/`.\n\n\n### Via pip\n\nAlternatively, you can install the pip package pip directly (_Please note that this installation method does not include everything, i.e. the example dur files under `examples/`_, or the entrypoint scripts in the section below)\n\n```shell\n# install `master` branch version:\npython3 -m pip install 'git+https://github.com/cmang/durdraw'\n\n# install specific version:\npython3 -m pip install 'git+https://github.com/cmang/durdraw@0.28.0'\n\n# install `dev` branch version:\npython3 -m pip install 'git+https://github.com/cmang/durdraw@dev'\n```\n\n### Running Without Installing\n\nYou can run Durdraw with:\n\n```shell\n./start-durdraw\n```\n\nTo look at some included example animations:\n\n```shell\n./start-durdraw -p examples/*.dur\n```\n\n## Gallery\n\n### Tutorials\n\n| | |\n|-|-|\n| [![Watch the Tutorial Part 1](https://github.com/cmang/durdraw/assets/261501/ca33c81b-0559-4fc7-a49b-a11768938d3d)](https://youtu.be/vWczO0Vd_54) | [![Watch another video](https://durdraw.org/durdraw-youtube-thumbnail-with-play-button.png)](https://youtu.be/7Icf08bkJxg) |\n\n### Screenshots\n\n| | |\n|-|-|\n| ![durdraw-xmas-example](https://github.com/cmang/durdraw/assets/261501/4137eb2d-0de0-47ca-8789-cca0c8519e91) | ![dopetrans3](https://user-images.githubusercontent.com/261501/210064369-4c416e85-12d0-47aa-b182-db5435ae0c78.gif) |\n| ![durdraw-screenshot](https://user-images.githubusercontent.com/261501/142838691-9eaf58b0-8a1f-4636-a41a-fe8617937d1d.gif) | ![durdraw-linux-unicode-ansi](https://user-images.githubusercontent.com/261501/161380487-ac6e2b5f-d44a-493a-ba78-9903a6a9f1ca.png) |\n| ![cm-doge](https://user-images.githubusercontent.com/261501/210064365-e9303bee-7842-4068-b356-cd314341098b.gif) | ![bsd-color-new](https://user-images.githubusercontent.com/261501/210064354-5c1c2adc-06a3-43c5-8e21-30b1a81db315.gif) |\n\n## Usage\n\n### Command Line\n\nYou can play a `.dur` file or series of `.dur` (or `.ANS` or `.ASC`) files with:\n\n```shell\ndurdraw -p filename.dur\ndurdraw -p file1.dur file2.dur file3.dur ...\n```\n\nOr view a downloaded ANSI artpack with:\n\n```shell\ndurdraw -p *.DIZ *.ASC *.ANS\n```\n\nOther command-line options:\n\n```\nusage: durdraw [-h] [-p PLAY [PLAY ...]] [-d DELAYEXIT] [-x TIMES] [--256color | --16color] [-b] [-W WIDTH] [-H HEIGHT] [-m]\n                     [--wrap WRAP] [--nomouse] [--cursor CURSOR] [--notheme] [--theme THEME] [--cp437] [--export-ansi] [-u UNDOSIZE]\n                     [--fetch] [-V]\n                     [filename]\n\npositional arguments:\n  filename              .dur or ascii file to load\n\noptions:\n  -h, --help            show this help message and exit\n  -p PLAY [PLAY ...], --play PLAY [PLAY ...]\n                        Just play .dur, .ANS or .ASC file or files, then exit\n  -d DELAYEXIT, --delayexit DELAYEXIT\n                        Wait X seconds after playback before exiting (requires -p)\n  -x TIMES, --times TIMES\n                        Play X number of times (requires -p)\n  --256color            Try 256 color mode\n  --16color             Try 16 color mode\n  -b, --blackbg         Use a black background color instead of terminal default\n  -W WIDTH, --width WIDTH\n                        Set canvas width\n  -H HEIGHT, --height HEIGHT\n                        Set canvas height\n  -m, --max             Maximum canvas size for terminal (overrides -W and -H)\n  --wrap WRAP           Number of columns to wrap lines at when loading ASCII and ANSI files (default 80)\n  --nomouse             Disable mouse support\n  --cursor CURSOR       Cursor mode (block, underscore, or pipe)\n  --notheme             Disable theme support (use default theme)\n  --theme THEME         Load a custom theme file\n  --cp437               Display extended characters on the screen using Code Page 437 (IBM-PC/MS-DOS) encoding instead of Utf-8.\n                        (Requires CP437 capable terminal and font) (beta)\n  --export-ansi         Export loaded art to an .ansi file and exit\n  -u UNDOSIZE, --undosize UNDOSIZE\n                        Set the number of undo history states - default is 100. More requires more RAM, less saves RAM.\n  --fetch               Replace fetch strings with Neofetch output\n  -V, --version         Show version number and exit\n```\n\n### Interactive Usage/Editing\n\n- Use the arrow keys (or mouse) and other keys to edit, much like a text editor.\n- You can click highlighted areas of the screen.\n- You can use the \"Esc\" (or \"Meta\") key to access keyboard shortcuts and commands:\n\n```\n   ____________.       _________   __________ _________  _____          _______\n.-\\\\___     /  |______/  _     /.-\\\\___     //  _     /_/  _  \\_.____.  \\     /\n|    |/    /   |    /    /    /:|    |/    /    /    /Y    Y    Y    |  /    /\n|    /    /|   |   /    _   _/ ||    /    /:   _   _/ :    _    |    /\\/    /\n|        /:|   :    :   Y      |:        /:|   Y      |    Y    |          /:H7\n|____     |_________|___|      |_____     |____|      |    |____|____/\\_____|\n.-- `-----' ----------- `------': - `-----' -- `------'----' -----------------.\n|                                                                             |\n`-----------------------------------------------------------------------------'\n\n  .. Art Editing .....................   .. Animation .......................\n  : F1-F10 - insert character        :   : esc-k - next frame               :\n  : esc-1 to esc-0 - same as F1-F10  :   : esc-j - previous frame           :\n  : esc-space - insert draw char     :   : esc-p - start/stop payback       :\n  : esc-c/tab - color picker         :   : esc-n - clone frame              :\n  : esc-left - next fg color         :   : esc-N - append empty frame       :\n  : esc-right - prev fg color        :   : esc-d - delete frame             :\n  : esc-up - change color up         :   : esc-D - set frame delay          :\n  : esc-down - change color down     :   : esc-+/esc-- - faster/slower      :\n  : esc-' - insert line              :   : esc-R - set playback/edit range  :\n  : esc-; - delete line              :   : esc-g - go to frame #            :\n  : esc-. - insert column            :   : esc-M - move frame               :\n  : esc-, - delete column            :   : esc-{ - shift frames left        :\n  : esc-] - next character group     :   : esc-} - shift frames right       :\n  : esc-[ - previous character group :   :..................................:\n  : esc-S - change character set     :\n  : esc-L - replace color            :   .. UI/Misc .........................\n  : esc-y - eyedrop (pick up color)  :   : esc-m - main menu                :\n  : esc-P - pick up character        :   : esc-a - animation menu           :\n  : esc-l - color character          :   : esc-t - mouse tools              :\n  : shift-arrows - select for copy   :   : esc-z - undo                     :\n  : esc-K - mark selection           :   : esc-r - redo                     :\n  : esc-v - paste                    :   : esc-V - view mode                :\n  :..................................:   : esc-i - file/canvas info         :\n                                         : esc-I - character inspector      :\n  .. File Operations .................   : esc-F - search/find string       :\n  : esc-C - new/clear canvas         :   : ctrl-l - redraw screen           :\n  : esc-o - open                     :   : esc-h - help                     :\n  : esc-s - save                     :   : esc-q - quit                     :\n  :..................................:   :..................................:\n\n  .. Canvas Size .....................\n  : esc-\" - insert line              :\n  : esc-: - delete line              :\n  : esc-\u003e - insert column            :\n  : esc-\u003c - delete column            :\n  :..................................:\n\n                                                          esc-j  esc-k\n                                                          Prev   Next  Canvas\nesc-f  esc-g   esc--                                      Frame  Frame   Size\nesc-m  Go to   esc-+      esc-D   esc-R      esc-t        | esc-p|         |\n Main  Frame   Speed      Frame   Play/Edit  Mouse  First | Play/| Last    |\n Menu  Number     |       Delay   Range      Tools  Frame | Pause| Frame   |\n  |    |          |        |       |          |        |  |  |   |  |      |\n[Menu] F: 1/7   \u003cFPS\u003e: 8   D: 0.00 R: 1/8   [Move]     |\u003c \u003c\u003c |\u003e \u003e\u003e \u003e| [80x24]\n\n tab\n esc-c                     esc-S\n Pick        esc-[ esc-]   Charset set   F1-F10         esc-[ esc-]\n Foreground    Character   or Unicode    Insert Special  Prev/Next    Cursor\n Color             Group   Block         Characters     Char Group  Position\n  |                  |        |             |                     \\       |\nFG:██              (1/21)  [Dur..] \u003cF1░F2▒F3▓F4█F5▀F6▄F7▌F8▐F9■F10·\u003e  (12,10)\n\n ANIMATION:\n\n    Use the Animation Menu [Anim] or keyboard commands to insert (esc-n),\n    delete (esc-d), move (esc-M) and edit frames. Use esc-k and esc-j to\n    flip to the next and previous frames. The \"Play\" button (|\u003e or esc-p)\n    starts or stops playback.\n\n    When the animation is playing, all changes made effect all frames\n    within the current playback/edit Range (R: or esc-R). Change playback\n    speed (\u003cFPS\u003e or Frames Per Second) with esc-+ (or esc-=) and esc--.\n    F: shows the current frame number, and you can go to a specific frame\n    with esc-g.\n\n BRUSHES:\n\n    To make a brush, use shift-arrow or esc-K to make a selection, then\n    press b. To use the brush, click the Mouse Tools menu (esc-t) and select\n    Paint (P). You can now use the mouse to paint with your custom brush.\n```\n\n### Configuration\n\n- [Example Themes](#example-themes)\n- [Color Options](#color-options)\n- [Theme Options](#theme-options)\n- [Custom Character Sets](#custom-character-sets)\n\nYou can create a custom startup file where you can set a theme and other options.\n\n\u003e If you did not already do so during installation, you can install a sample configuration (_See step 3 under[Installation via Source Repository](#via-source-repository)_)\n\nHere is an example `durdraw.ini` file, showing the available options:\n\n```ini\n; Durdraw 0.28.0 Configuration File\n\n[Main]\n\n; color-mode sets the color mode to start in. Available options: 16, 256\n;color-mode: 16\n\n; disable-mouse disables the mouse.\n;disable-mouse: True\n\n; max-canvas automatically sets the canvas size to the terminal window size at startup.\n;max-canvas: True\n\n; Cursor mode requests a cursor type from the terminal. Available options: block, underscore, pipe\n;cursor-mode: underscore\n\n; When scroll-colors is enabled, using the mouse wheel in the canvas changes the\n; foreground color instead of moving the cursor.\n;scroll-colors: True\n\n[Theme]\ntheme-16: ~/.durdraw/themes/mutedchill-16.dtheme.ini\ntheme-256: ~/.durdraw/themes/mutedform-256.dtheme.ini\n\n[Logging]\n; filepath is the path to the log file. Default is ./durdraw.log\n;filepath: ./durdraw.log\n\n; level sets the logging level. Available options: DEBUG, INFO, WARNING, ERROR, CRITICAL. Default is WARNING\n;level: WARNING\n\n; local-tz indicates if the computer's local timezone should be used when logging instead of UTC\n;local-tz: False\n```\n\nThe option `'theme-16'` sets the path to the theme file used in 16-color mode, and `'theme-256'` sets the theme file used for 256-color mode.\n\nYou can also load a custom theme file using the `--theme` command-line argument and passing it the path to a theme file, or disable themes entirely with the `--notheme` command line option.\n\n#### Example Themes\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e16-color theme\u003c/td\u003e\n    \u003ctd\u003e256-color theme\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"vertical-align: top;\"\u003e\n\n```ini\n[Theme-16]\nname: 'Purple Drank'\nmainColor: 6\nclickColor: 3\nborderColor: 6\nclickHighlightColor: 5\nnotificationColor: 4\npromptColor: 4\n```\n\n  \u003c/td\u003e\n  \u003ctd style=\"vertical-align: top;\"\u003e\n\n```ini\n[Theme-256]\nname: 'Muted Form'\nmainColor: 104\nclickColor: 37\nborderColor: 236\nclickHighlightColor: 15\nnotificationColor: 87\npromptColor: 189\nmenuItemColor: 189\nmenuTitleColor: 159\nmenuBorderColor: 24\n```\n\n  \u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n#### Color Options\n\n\u003e (_for 16-color mode - color codes numbers for 256-color mode can be found in Durdraw's 256-color selector._)\n\n| code | color   |\n|------|---------|\n| 1    | black   |\n| 2    | blue    |\n| 3    | green   |\n| 4    | cyan    |\n| 5    | red     |\n| 6    | magenta |\n| 7    | yellow  |\n| 8    | white   |\n\n#### Theme Options\n\n| theme option        | description |\n|---------------------|-------------|\n| mainColor           | the color of most text |\n| clickColor          | the color of buttons (clickable items) |\n| clickHighlightColor | the color the button changes to for a moment when clicked |\n| borderColor         | the color of the border around a drawing |\n| notificationColor   | the color of notification messages |\n| promptColor         | the color of user prompt messages |\n| menuItemColor       | the color of menu items |\n| menuTitleColor      | the color of menu titles |\n| menuBorderColor     | the color of the border around menus |\n\n#### Custom Character Sets\n\nYou can create custom character set files and place them in the ~/.durdraw/charsets folder. Character set files must have the file nme extension .ini. Durdraw will automatically scan for these files and include them in the list of character sets (esc-S).\n\nAn example character set file is provided in example-charset.ini:\n\n```ini\n; Custom character set\n; 🭨 🭩 🭪 🭫 🭬🭭🭮 🭯 🮚 🮛 🮜 🮝 🮞 🮟 ◤ ◥ ◢ ◣\n\n[Character Set]\nname: Cool Characters\nencoding: utf-8\n\n[block 1]\nf1: 🭨\nf2: 🭩\nf3: 🭪\nf4: 🭫\nf5: 🭬\nf6: 🭭\nf7: 🭮\nf8: 🭯\nf9: 🮚\nf10: 🮛\n\n[block 2]\nf1: 🮜\nf2: 🮝\nf3: 🮞\nf4: 🮟\nf5: ◤\nf6: ◥\nf7: ◢\nf8: ◣\nf9:\nf10:\n```\n\n## Durfetch\n\n`durfetch` is a program which acts like a fetcher. It uses Neofetch to obtain system statistics and requires that Neofetch be found in the path. You can put keys in your `.dur` files which `durfetch` will replace with values from Neofetch. You can also use built-in example animations.\n\nNote that this feature is in beta, and is far from perfect, but it can be fun to play with. If anyone wants to improve `durfetch`, please feel free.\n\nKeys will only be replaced if there is enough room in the art for the replacement value.\n\nThe following values can be used in your art and automatically interpreted by `durfetch`:\n\n```yaml\n{OS}\n{Host}\n{Kernel}\n{Uptime}\n{Packages}\n{Shell}\n{Resolution}\n{DE}\n{WM}\n{WM Theme}\n{Terminal}\n{Terminal Font}\n{CPU}\n{GPU}\n{Memory}\n```\n\nThe `durfetch` executable takes the following command-line parameters:\n\n```shell\nusage: durfetch [-h] [-r | -l LOAD] [--linux | --bsd] [filename ...]\n\nAn animated fetcher. A front-end for Durdraw and Neofetch integration.\n\npositional arguments:\n  filename              .dur ASCII and ANSI art file or files to use\n\noptions:\n  -h, --help            show this help message and exit\n  -r, --rand            Pick a random animation to play\n  -l LOAD, --load LOAD  Load an internal animation\n  --linux               Show a Linux animation\n  --bsd                 Show a BSD animation\n\nAvailable animations for -l:\n\nbsd\ncm-eye\nlinux-fire\nlinux-tux\nunixbox\n```\n\nHere are some `durfetch` examples:\n\n| | |\n|-|-|\n| ![tux-fetch-colors](https://github.com/user-attachments/assets/4010d18a-1b79-4594-a9cd-17234584f3c8) | ![unixy3](https://github.com/user-attachments/assets/812514d4-0216-4f41-8384-84563fa664b7) |\n\n## Experimental Features\n\nTo enable an external feature, use an ENV var listed below in front of a `durdraw` command, e.g.\n\n```shell\nENABLE_UNDO_TEMPFILES=1 durdraw animation.dur\n```\n\nThe following list of features are experimental and may not work as expected:\n\n```shell\nENABLE_UNDO_TEMPFILES=1 # store undo history using python the `tmpfile` lib instead of memory\n```\n\n## Development\n\n### Testing\n\nTo run the test, you need to have `pytest` installed. You can install it with:\n\n```shell\npython3 -m pip install pytest\n```\n\nThen you can run the tests with:\n\n```shell\npytest -vv test/\n```\n\n## FAQ\n\n#### Q: Durdraw crashed! What do I do?\nA: Oh no! I am sorry and hope nothing important was lost. But you can help fix it. Please take a screenshot of the crash and post it as a bug report at https://github.com/cmang/durdraw/issues/. Please try to describe what you were trying to do when it happened, and if possible, include the name of your terminal, OS and Python version. I will do my best to try to fix it ASAP. Your terminal will probably start acting weird if Durdraw crashed. You can usually fix it by typing \"reset\" and pressing enter.\n\n#### Q: Don't TheDraw and some other programs already do ANSI animation?\nA: Yes, but traditional ANSI animation does not provide any control over timing, instead relying on terminal baud rate to govern the playback speed. This does not work well on modern systems without baud rate emulation. Durdraw gives the artist fine control over frame rate, and delays per frame. Traditional ANSI animation also updates the animation one character at a time, while Durdraw updates the animation a full frame at a time. This makes it less vulnerable to visual corruption from things like errant terminal characters, resized windows, line noise, etc. Finally, unlike TheDraw, which requires MS-DOS, Durdraw runs in modern Unicode terminals.\n\n#### Q: Can I run Durdraw in Windows?\nA: Short answer: It's not supported, but it seems to work fine in the Windows Subsystem for Linux (WSL), and in Docker using the provided Dockerfile. Long answer: Some versions run fine in Windows Command Prompt, Windows Terminal, etc, without WSL, but it's not tested or supported. If you want to help make Durdraw work better in Windows, please help by testing, submitting bug reports and submitting patches.\n\n#### Q: Can I run Durdraw on Amiga, MS-DOS, Classic MacOS, iOS, Android, Atari ST, etc?\nA: Probably not easily. Durdraw requires Python 3 and Ncurses. If your platform can support these, it will probably run. However, the file format for Durdraw movies is a plain text JSON format. It should be possible to support this format in different operating systems and in different applications. See `durformat.md` for more details on the `.dur` file format.\n\n#### Q: Does Durdraw support IBM-PC ANSI art?\nA: Yes! IBM-PC ANSI art popular in the \"ANSI Art Scene\" uses Code Page 437 character encoding, which usually needs to be translated to work with modern terminals. When Durdraw encounters these files, it will convert them to Unicode and carry on. When you save ANSI files, it will ask if you want to use CP437 or Utf-8 encoding.\n\n#### Q: I only see 8 colors in 16 color mode. Why?\nA: Look in your terminal setting for \"Use bright colors for bold,\" or a similarly named option. Durdraw's 16-color mode, like many vintage terminals (including MS-DOS), uses the Bold escape codes to tell the terminal that colors are \"bright.\" This provides compatibility with many older systems. However, some terminals do not support or enable this option by default. Additionally, your terminal decides what colors to assign to the lower 16 colors. In many terminals, Durdraw can override the default 16 color palette. To do this, click on Menu -\u003e Settings and select VGA, Commodore 64 or ZX Spectrum colors.\n\n#### Q: Some or all of the F1-F10 keys do not work for me! What can I do?\nA: You can use ESC-1 through ESC-0 as a replacement for F1-F10. Some terminals will map this to Alt-1 through Alt-0. You can also use the following settings in some terminals to enable the F1-F10 keys:\n\n- **GNOME Terminal**: **Click**: Menu -\u003e Edit -\u003e Preferences -\u003e General, and **uncheck** the box: \n\n  - [ ] Enable the menu accelerator key (F10 by default)\n\n- **Xfce4-Terminal**: **Click**: Menu -\u003e Edit -\u003e Preferences -\u003e Advanced, and **check** the 2 boxes:\n\n  - [x] Disable menu shortcut key (F10 by default)\n  - [x] Disable help window shortcut key (F1 by default)\n\n## Other\n\n- [Links, Media \\\u0026 Thanks](#links-media--thanks)\n- [Support](#support)\n- [Community](#community)\n- [Credits](#credits)\n- [Legal](#legal)\n\n### Links, Media \u0026 Thanks\n\nSpecial thanks to the following individuals and organizations for featuring Durdraw in their content:\n\n- Linux Magazine - https://www.linux-magazine.com/Issues/2024/281\n- Linux Voice Magazine - https://archive.org/details/LinuxVoice/Linux-Voice-Issue-015/page/n71/mode/2up\n- Bryan Lunduke at The Lunduke Journal - https://lunduke.locals.com/post/5327347/durdraw-like-thedraw-but-linux\n- Korben - https://korben.info/editeur-ansi-ascii-unicode-durdraw-creer-art-terminal.html\n- Jill Bryant and Venn Stone at Linux Game Cast - https://www.youtube.com/watch?v=HvZXkqg2vec\u0026t=568s\n- LinuxLinks - https://www.linuxlinks.com/durdraw-ascii-unicode-ansi-art-editor/\n- Harald Markus Wirth (hmw) has made a Web `.dur` Player in JavaScript: https://harald.ist.org/stubs/webdurplayer/\n\nIf you write, podcast, vlog, or create content about Durdraw, or if you simply enjoy using it, I'd love to hear from you! Please reach out to me via the GitHub project page or at samfoster@gmail.com.\n\n### Support\n\nThank you for considering a contribution to help sustain and enhance this project.\n\nFinancial contributions help cover essential costs like development time, domain registration, and web hosting.\n\nYou can donate to this project using any of these platforms:\n\n- [Paypal](https://www.paypal.com/donate/?hosted_button_id=VTPZPFMDLY4X6)\n- [Buymeacoffee](https://buymeacoffee.com/samfoster)\n- [Patreon](https://patreon.com/SamFoster)\n\nOther ways to support Durdraw include reporting bugs, providing feedback, and contributing code. Please refer to the CONTRIBUTING.md file for information and guidelines.\n\nIf you need assistance or have questions about Durdraw, feel free to reach out to us on GitHub. We're happy to help!\n\n### Community\n\nThere are community discussions on Github, where people post art made with Durdraw. Check it out: https://github.com/cmang/durdraw/discussions\n\nWe also have a Discord server for Durdraw users. Join us: https://discord.gg/9TrCsUrtZD\n\nIf you are feeling really old school, you can try the #durdraw IRC channel on irc.libera.chat.\n\n### Credits\n\n- Home page: http://durdraw.org\n- Development: https://github.com/cmang/durdraw\n\nDurdraw is what it is thanks to the following people:\n\n- Sam Foster - Creator, primary developer\n- Tom McKeesick - Performnace enhancements, documentation formatting\n- Alex Myczko - Man page, Debian ambassador\n- sigurdo - Cursor shapes, command-line ANSI export\n- yumpyy - Dockerfile\n- Zhenrong Wang - Documentation updates\n- Frederick Cambus - Documentation update\n- eyooooo - Filename conventions, useful feedback\n- HK - Beta testing, useful feedback\n- ANSI and ASCII artists: `cmang`, `H7`, `LDA`, `HK`\n\n### Legal\n\nDurdraw is Copyright (c) 2009-2025 Sam Foster \u003csamfoster@gmail.com\u003e. All rights reserved.\n\nThe BSD Daemon is Copyright 1988 by Marshall Kirk McKusick.\n\nThis software is distributed under the BSD 3-Clause License. See LICENSE file for details.\n\n","funding_links":["https://patreon.com/samfoster","https://www.paypal.com/donate/?hosted_button_id=VTPZPFMDLY4X6","https://buymeacoffee.com/samfoster","https://patreon.com/SamFoster"],"categories":["Python","\u003ca name=\"graphics\"\u003e\u003c/a\u003eGraphics","Table of Contents","Editors, Drawing \u0026 Diagramming"],"sub_categories":["Imported: Upstream Snippet Gallery"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmang%2Fdurdraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmang%2Fdurdraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmang%2Fdurdraw/lists"}