Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Textual Paint – MS Paint in your terminal (github.com/1j01)
216 points by samwillis on July 25, 2023 | hide | past | favorite | 34 comments


This is by the same person who made jspaint. https://github.com/1j01/jspaint Some of the other projects by the author are also very interesting https://github.com/1j01?tab=repositories&q=&type=&language=&...

There is this pipes screen saver for example https://1j01.github.io/pipes/

EDIT: Website of the author listing some of these projects https://isaiahodhner.io/apps


I already knew about https://yourworldoftext.com

Going through his projects (https://github.com/1j01/diverge) I have discovered https://ourworldoftext.com/ which offers more features like public and private areas on the canvas and a lot more.

In there I discovered https://ourworldofpixels.com/ which is the same except it gives you a virtually infinite public canvas of pixels. There is a lot activity on it.

There are some incredible worlds on it

https://ourworldofpixels.com/countrysim

https://ourworldofpixels.com/planetsim

https://ourworldofpixels.com/jpdld


This is both an excellent demo of what you can build with Textual, and just a brilliantly ridiculous project, it's exciting to see.

I'm looking forward to seeing some commercial products adopt Textual, I hope we see some soon!


My first thought with Textual and most TUIs is always, "but why?" But then I actually look at what they are building, and I realize, "Oh, because it's really cool!"


Very early in my career I wrote a ton of code in Clipper (a dBase clone and compiler).

In some ways I kinda miss doing @SAY, @GET, the TBrowse class etc and their TUI.


I spent most of the 90s writing Clipper code, used to hang out in comp.lang.clipper lots too. Do still sort of miss it.

https://harbour.github.io/ does exist, although it’s a long while since I last played with that.


Clipper, BLINKER and the Brief editor FTW!


I was more of a qedit fan myself (later TSE), but yeah they were good days.

If you want a real blast from that past, there's even still an archived version of The Oasis kicking about: https://harbour.github.io/the-oasis/docs/


My thought was exactly same, “but why?”. It is indeed very cool. But ‘cool’ not enough to drive such an effort for me i guess. I realize the importance, as it can be used over SSH too. A TUI can be very helpful for graphic less servers, say.


Absolutely, I can't wait to get my MS Paint on over ssh. But more seriously, you're absolutely right. There is clearly a large degree of utility in utilizing the terminal as a visual interface/platform. A project such as Textual, which makes development for that platform simpler, is something I can stand behind.


Yes this is downright great. Kudos to the author what a fun throwback/revitalization


This is getting outright ridiculous now. Will & his lot at Textualize are absolutely killing it. Hats off.

I've even almost forgiven him for not calling it Textualise (obviously the correct spelling).


One of those things that seeing it in action is a lot more impressive than what you may imagine.


This had me reminiscing about BBS days and drawing banners with TheDraw ref. https://en.wikipedia.org/wiki/TheDraw


Reminds me of REXPaint, which is a pretty cool project. https://www.gridsagegames.com/rexpaint/index.html


For me it brings memory of DOS applications TheDraw and ACiD Draw from the 90's BBS era. Magical times.


I would love to see something like Monodraw, that could generate centered text boxes and simple diagrams for use in READMEs. Monodraw is great, but I don’t think it’s in development anymore.


Oh man, I've long had the idea for a plain text diagram creator, great to see that someone has gone there before.


I started a library for this a while ago (using rich):

https://github.com/mahrz24/netext

Recently I tried to adopt it to textual as well: https://twitter.com/mahrz24/status/1679816272509386753?s=46&...


Cool, will check it out!


Fantastic project! Would have loved this on DOS back in the days.


DOS didn't have these nice emoji icons, but we had TheDraw back then.


Looks cool - Unfortunately this is the first time I hear about it!


On my MacBook Air 2017, it chokes when loading a 1280x800 JPG (around 192 KB). At least so far works OK when creating new images.


Performance should improve soon.


Reminds me of AutoCAD 2.6 LOL


Someone could probably make an AutoCAD clone similar to this using Textual and maybe a library like https://github.com/sinclairzx81/zero


I expect, at the minimum:

- a rust port

- an emacs port

:-)


Well, Emacs has had a poor man's "Paint" for over two decades:

  ;;; artist.el --- draw ascii graphics with your mouse -*- lexical-binding: t -*-

  ;; Copyright (C) 2000-2023 Free Software Foundation, Inc.
It is not as nice and colorful, but it has a spray tool (yay!). Also, it is actually useful once in a while [0].

[0] https://mbork.pl/2023-07-15_Drawing_ASCII_art_charts_in_Emac...


How about bash? :p

r() { read -n1 -r c; [ "$c" = "$1" ]; }; b=2; stty -echo -icanon; printf '\033[H\033[0m\033[J\033[?1003h'; while true; do r $'\033' || { printf '%s\n' "$c" | grep -qE '[0-7]' && b=$c; continue; }; r \[ || continue; r "M" || continue; r "@" && d=y || d=; read z x y z < <(head -c 2 | hexdump -C); [ $d ] || continue; printf '\033[%d;%dH\033[1;4%dm \033[0m\033[D' $((0x${y}-32)) $((0x${x}-32)) $b; done

(you can change colour with digits 1..7 btw!)


Ok, so I was a bit bored...

- no external grep anymore

- smaller (303 instead of 400 bytes)

- cleanup of mouse mode on exit

  p(){ for i;do printf "\e[$i";done;};r(){ read -rn1 c;[[ $c = $1 ]];};stty -echo cbreak;p H m J ?1003h;trap 'p ?1003l' 0;while d=;do r $'\e'||{ [[ $c =~ [0-7] ]]&&b=$c;continue;};r \[||continue;r M||continue;r @&&d=y;read _ x y _< <(head -c2|od -tu1);[ $d ]&&p "$((y-32));$((x-32))H" "4${b-2}m " m D;done


is there a name/page/nonobfuscated version/git repo for that script?


it's not intentionally obfuscated, it just happened like that :-) The only place I've posted it until now is on my oneliners collection, https://ocv.me/doc/unix/oneliners/#c58b5be6


It needs vim-motions tho




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: