Show HN: Durdraw – a modern ANSI art editor for modern Unix terminals (github.com)
It's written in Python and curses, and is fairly portable across Unix systems. If you have ever used TheDraw or Aciddraw, the user interface is similar. It can also load/convert, view, edit and save most CP437 (MS-DOS style) ANSI art in a Utf-8 terminal, so you can view ANSI artscene packs in the comfort of your favorite terminal, and even convert them into 256 color Unicode ANSI.
I've been using it for my own ANSI and ASCII art for a number of years, and hope this will help artists work with less restrictions. I think there is a lot of opportunity for ANSI art beyond its dominant 16-color Code Page 437 format. We all have computers with amazing ANSI terminals with modern features. Shouldn't they be the natural home for making text art?
It's still a work in progress, and I'm always adding features. Thanks for checking it out!
30 comments
[ 4.0 ms ] story [ 64.9 ms ] thread1: Some people still make ANSI and ASCII art as a means of exploring the medium.. well, artistically. Check out https://16colo.rs/ and you will see what I mean. They showed around 30 ANSI art packs published for the year 2023. It isn't exactly the heyday of the 90s, but it's not completely dead, either.
2: Some people like to use ASCII art in text user interface programs, in README files, etc. This is probably the real modern use for a program like this.
3: BBSs aren't completely dead, either. :) See: https://www.telnetbbsguide.com/ for examples. Most of them cater to the old IBM-PC style character encoding (or some other antiquated platform) and ANSI standards, but I think there is opportunity to have modern 256 color Unicode BBSs. With social media being so problematic in 2024, why not enjoy a tried and true medium? They usually connect over the internet now, of course.
I admit, the commercial applications are limited. It's mostly just good creative or nostalgic fun.
The absolute best justification for coding. Thank you for your detailed response.
ASCII art diagrams can be automatically rendered to an image, too: https://casual-effects.com/markdeep/
https://sars.pengaru.com/
experimental outdated wasm build @
https://sars.pengaru.com/wasm/
I found it kind of interesting as a medium for quick-n-dirty cheeseball horrid pixel style art. There's something to be said for a legible toilet paper roll in so few glyphs worth of creative effort/time.
I have given some thought to Android and iOS versions, and would like to make it happen, but it isn't a high priority at the moment. That is interesting that you might be interested in an Android version. Maybe sometime this year.
Edit: Just to be clear, animation does not require any programming or coding. You simply create frames, draw, switch between them, copy and edit frames, etc, like a traditional animation studio.
So, it installs in windows powershell https://i.imgur.com/1Yt1V5v.png - but attempting to run it just pops up with "what program do you want to open this with" - I tried it in powershell, Anaconda Python CMD, regular CMD/run as admin - all the same result.
How troubleshoot?
Could I run it in a docker more easily?
Running this on an android table might be fun - but the menu UX might need to be more ribbon-style?
EDIT:
I just threw up a ubuntu VM and installed it there: https://i.imgur.com/nbtmXwN.png
SWEET
Normally, in Windows, the best way to run it in WSL. There is an issue with windows-curses that durdraw doesn't like, and keeps it from running natively in Windows (in powershell, etc) without WSL.
Yes, a tablet or phone version would need to be re-designed to be touch friendly, naturally.
Thanks for checking it out. :)
Question - can you change the canvas size/draw area? I'd like that to be in the INI default config as an option?
I want to have my terminal transparent for tracing an image in the background, but the draw area is in the top left and small, can the draw area be centered in window and configurable in size? or is the limitation of actually it being an in terminal app?
https://i.imgur.com/vdf8fEv.png
--
Edit - I found it, but setting -W and -H dont work, so I just changed the settings in the .py
EDIT: It was -m for the win.
I doubled the default, will it have issues?
1: Use the command line options -W and -H or --width and --height to set the numbers of columns and lines. run "durdraw --help" for more command-line options.
2: Check the help screen and scroll down to the "Canvas Size" section. There are keys for increasing and decreasing the canvas size.
3: You can also use the -m or --max command-line option to start the canvas size at the maximum size for your terminal window.
I will continue to work on the canvas size stuff an making it easier to customize.
I like your idea of optionally centering the canvas in the screen. Thanks for the suggestion. I might do that in a future version. (Same with the .ini file.)
You might also consider increasing your terminal font size so the canvas is not so small, and moving it around to line up with the image in the back.
I'd have to revisit it to make sure it still works well, but it tries to support a transparent terminal by default, with the --blackbg option to force a black background in the canvas.
Edit: Canvas resize keys are: esc-" insert line esc-: delete line esc-> insert column esc-< delete column
Im an idiot, I couldnt launch WSL with my ubuntu vm running. No resources. Ill try that without VMs
I am not sure what you mean by "doubled the default" exactly.
but it was the -m I was looking for. -H -W didnt work on the command line, It looked like you had it set to 80 if -W was -H was >80 it sets it to 80?
https://github.com/cslarsen/jp2a
and there is also this image and video-to-ascii tool in case it might be of use:
https://gist.github.com/motiondesignstudio/9374326
I'd love to steal some of the features from it. Icy Draw joins the many GUI ANSI editors, though (like Moebius and Pablodraw), and Durdraw tries to get away from that by operating using real escape codes and real terminals. We also seem to have a different philosophy on animation.
I think something similar applies today. Most people are using xterms or terminals that implement a large, fairly standard set of xterm and ansi escape codes (including things like Xterm 256 color, Mouse reporting, maybe RGB colors, Unicode). So that's what "modern" ANSI art can and maybe should target. At least raise the standard for terminal art beyond the 1980s IBM-PC to modern, widely implemented standards.
Then there is the problem of there being hundreds of ANSI editors and viewers that expect 16 color Code Page 437 art. Moebius (the ANSI editor) sidesteps this problem by using .utf8.ans to imply a Utf-8 ANSI, which also implies Xterm compatible escape codes (like 256 color). Right now Durdraw does not implement any file suggestions for saving, but in the future I might do that.
If I dont use someone elses tool I'd likely end up making my own anyway haha so saved LOE is always good.
VK100 (aka GIGI) lets you do ReGIS graphics and optionally download BASIC programs to run on the client. It implements VT52 (ANSI) by default, but you could easily extend it to support full VT102 or VT400 codes too.
Thanks for the heads up and interesting manual, vaxman! This might lead to some interesting possibilities/magic for a future version, or alternative drawing program.