Ratty – A terminal emulator with inline 3D graphics
407 points
6 hours ago
| 56 comments
| ratty-term.org
| HN
JSR_FDED
41 minutes ago
[-]
This is pure Hollywood OS - hackers feverishly entering obscure incantations like “upload virus”…but now with the terminal twisted into a Moebius strip!
reply
d--b
26 minutes ago
[-]
reply
alexprengere
3 minutes ago
[-]
If this turns out to exfiltrate all my keys, I will have some explaining to do to my security department.
reply
pjmlp
4 hours ago
[-]
UNIX still trying to catch up with Xerox workstations in the REPL experience, or general Lisp machines for that matter.

Inline graphics from 1981,

https://youtu.be/o4-YnLpLgtk?t=376

reply
steezeburger
2 hours ago
[-]
That's not 3d
reply
pjmlp
1 hour ago
[-]
The example on the linked video it isn't, correct.

Here is another video, this time with S-PACKAGE used to develop Nintendo 64.

https://www.youtube.com/watch?v=gV5obrYaogU

Which given the REPL capabilities, you can easily embedd them on it, just like the other video.

reply
SpaceNoodled
16 minutes ago
[-]
It's also from 2013
reply
pocksuppet
4 hours ago
[-]
Or TempleOS.
reply
mghackerlady
3 hours ago
[-]
People joke about templeos a lot, but it had some really neat ideas (holy-c is a pretty nice language)
reply
tombert
58 minutes ago
[-]
I've dug around the TempleOS codebase a bit, and while it certainly is impressive for a single guy's work, I think there's been an overcorrection where people act like Terry was some hyper genius instead of "a pretty smart guy".

I kind of got the impression that whenever Terry didn't know how to do something, he would just convince himself that that's not what God wanted anyway and stop doing it.

reply
nurettin
1 hour ago
[-]
It should have been HolyBasic. Mistyping a HolyC indirection in an editor causes the OS to crash.
reply
pjmlp
1 hour ago
[-]
We would still have an issue with bad POKEs though.
reply
nurettin
34 minutes ago
[-]
It didn't cause a problem in my Commodore 64. ROM4L
reply
Onavo
4 hours ago
[-]
That was a work of art. Also Oberon.
reply
em-bee
2 hours ago
[-]
and plan9

also smalltalk

we used oberon in one class in university. i don't remember much unfortunately.

reply
whywhywhywhy
3 hours ago
[-]
>work of art

more like theopneustos

reply
d-us-vb
1 hour ago
[-]
Even Terry Davis wasn't that bold.
reply
drakythe
1 hour ago
[-]
Given that Terry described the manic episodes as "a revelation from God" I think theopneustos is an accurate description. It just means "God Breathed" or "Inspired by God"
reply
jszymborski
2 hours ago
[-]
I came here to mention how it reminded me of the sick 3D icons TempleOS had in its terminal
reply
Sharlin
2 hours ago
[-]
The announcement blog post (https://blog.orhun.dev/introducing-ratty/), which would've been a better submission URL, unsurprisingly says that TempleOS was the direct inspiration of the project.
reply
joouha
1 hour ago
[-]
It's very interesting to learn about the newly proposed glyph protocol [1] in the linked blog post. I was bemoaning the lack of exactly this here about 6 months ago [2]!

[1] https://rapha.land/introducing-glyph-protocol-for-terminals/

[2] https://news.ycombinator.com/item?id=45805072

reply
CTDOCodebases
3 hours ago
[-]
"Don't worry, all of these dependencies are worth it."

That had me in stitches.

reply
xantronix
5 minutes ago
[-]
Was this aided with LLMs or purely for the love of the game? I don't see an AGENTS.md or anything similar in the repo.
reply
noelwelsh
4 hours ago
[-]
I like this. No reason the terminal should only support text. Data science notebooks show one way the terminal can evolve. Lots of interesting stuff happening in this space, with Kitty probably being the most aggressive innovator here [1]. I'm not sure there is an overall vision, though.

[1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/

reply
joouha
2 hours ago
[-]
No evolution necessary! With my project, euporie [1], you can have use your data science notebooks with graphical image outputs, HTML, LaTeX, etc, all in the terminal.

[1] https://github.com/joouha/euporie

reply
panki27
1 hour ago
[-]
I managed to get `pyvista` to render arbitrary 3D shapes directly to the terminal using kitty graphics. It's a giant hack, only way to make it performant is using shm.

https://git.theresno.cloud/panki/kglobe

reply
bcjdjsndon
3 hours ago
[-]
Terry A Davis already did this. It was as crazy then as it is now
reply
ch4s3
2 hours ago
[-]
The person who built this directly cites Terry as the inspiration.
reply
Wololooo
3 hours ago
[-]
Obligatory Temple OS unhinged video.

https://www.youtube.com/watch?v=o48KzPa42_o

Joking apart, the whole thing was both an exercise in madness and genius. Sometimes I wonder what he would have done if he had not gone crazy. We will never know...

reply
AdmiralAsshat
32 minutes ago
[-]
> Sometimes I wonder what he would have done if he had not gone crazy.

At what point do you consider he had "gone crazy" relative to the development of TempleOS? Only when he committed suicide? Shortly before then? Last ____ years of his life?

Without trying to sound insensitive, I'd personally argue the entire OS was the byproduct of a "crazy" individual.

reply
drakythe
21 minutes ago
[-]
The inspiration may have been all "crazy" but the implementation was still really neat, and it takes a lot of effort and skill to get to the point he did before his death. The thing about people who lose touch with reality is that their efforts to create or express something often make no sense to the rest of us. TempleOS, however, works. Terry create an OS from scratch, an entire new language (or variant of a language) in the form of HolyC, and not only does it all work together in a way that requires no disconnect from reality, it works well for his goals and philosophy.

The entire thing may be the result of a person suffering from schizoaffective disorder, but that person still held a great deal of skill to implement that idea and enough of a touch with the reality of computer hardware to make it happen.

reply
alias_neo
3 hours ago
[-]
I wonder if something like this could work for thumbnails in the terminal; I prefer to browse my filesystem from a terminal rather than the point and click file manager typically, and it would be really useful if I could have a grid-style `ls` with terminal based renders of the 3d models (thinking STL/STEP, 3D printing) in that directory. Bonus points if I could preview/rotate the model to inspect it.
reply
em-bee
1 hour ago
[-]
as a compromise i started using nemo/nautilus with a plugin that puts a terminal at the bottom of each tab. so i have a graphical view of the terminal but a commandline in the same folder right next to it. the two don't interact other than being able drag and drop filenames from the filemanager into the terminal, so it is far from what we really want, but it's a small start.
reply
passivepinetree
42 seconds ago
[-]
Do you mind sharing a little more about the plugin you use? A quick online search wasn't very helpful to me but I've also been hoping for something like this.
reply
noelwelsh
3 hours ago
[-]
eza [1] is a step in that direction. It lacks the interactivity, however.

[1]: github.com/eza-community/eza

reply
calvinmorrison
3 hours ago
[-]
You can do this with thumbnails using sixels already
reply
kjs3
2 hours ago
[-]
You could probably do something interesting with Tek 4014 emulation, but I think you're right that sixel would be slick.
reply
the_other
3 hours ago
[-]
Mix this 3d graphics, with data science notebooks, with local LLMs, and perhaps an integrated coding harness, with visibility over your personal data and you’d have something absurdly good.

This might overtake “a haiku+macOS mashup” as my idealised computing future.

reply
miah_
3 hours ago
[-]
At that point you've re-invented emacs.
reply
mghackerlady
3 hours ago
[-]
Greenspun’s Tenth Rule of Programming states that any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
reply
em-bee
57 minutes ago
[-]
well, almost. if emacs offers a graphical file manager i'll consider using it. this seems to be a start: https://github.com/emacs-eaf/eaf-file-manager. the file manager needs to also integrate with a terminal though so i can run unix commands in the same directory. and it needs to support mouse-based operations too. finally, and that's the real kicker, i'd like a better integration of the terminal output and the graphical display by supporting the passing of structured data that the display knows how to handle without terminal escape codes. those need to go away. (which is why sixels are not a solution either)
reply
sublinear
3 hours ago
[-]
> push the state of terminal emulators forward

What's overlooked here are the insane political and economic forces that were required to get anywhere close to the (sort of!) consistent implementation of plain text we have today. These projects try to piggyback off that success yet only contribute back harm. We have standards for a reason.

I'm not saying people can't have fun, but don't try to start a cyberpunk-inspired revolution and then blame the side effects of groupthink and software rot on everyone else when it goes sideways.

reply
sigseg1v
5 hours ago
[-]
Seems... really good?!

Questions:

- rendering capabilities of this seem like it should also be able to handle 2d well, or am I mistaken? every solution I see for getting high quality 2d images or rasterization in terminal is all pretty bad. Could this do better than other solutions or is there a fundamental limit being hit somewhere?

- What happens with ssh given that this is gpu accelerated?

reply
the_gipsy
1 hour ago
[-]
The kitty graphics protocol is pretty good. Ghostty implements it fully.
reply
berkes
4 hours ago
[-]
There are quite a few GPU powered terminal emulators around already.

Is that what you're looking for?

reply
jetbalsa
3 hours ago
[-]
I think they are looking for full 2d graphics, bitmaps, sprites and the likes.
reply
amelius
4 hours ago
[-]
Terminal is slowly becoming a full featured web browser.
reply
iugtmkbdfil834
4 hours ago
[-]
Always has been meme incoming. Also, more seriously, the purpose of a tool is to do a job. The question becomes whether this tool can be made useful. I.. honestly don't know, but I will be finding out soon:D
reply
rexthonyy
28 minutes ago
[-]
It's inevitable
reply
microflash
3 hours ago
[-]
Or Terminal is already a full featured web browser?

https://hyper.is/

reply
yagizdagabak
1 hour ago
[-]
i have been waiting for this.
reply
tekla
3 hours ago
[-]
Isn't there a Terminal that renders everything with React?

Super slow, but I guess thats what web devs want.

reply
EMM_386
2 hours ago
[-]
There are terminal libraries that do this:

https://github.com/vadimdemedes/ink

Which is what Claude Code CLI uses (or was using?) and it caused many issues such as flickering, thrashing, and latency.

reply
shevy-java
4 hours ago
[-]
And rightfully so! \o/
reply
iugtmkbdfil834
5 hours ago
[-]
Rip Terry. May you never be forgotten.

edit: But your spirit lives on ( based on the project:D )

reply
arusahni
1 hour ago
[-]
As do his sprites.
reply
Panzerschrek
1 hour ago
[-]
The question is - why do we still need the terminal abstraction at all?
reply
gavmor
9 minutes ago
[-]
The terminal is keystroke-driven. It's character-selectable. It's reliable in a way that the GUI is not. When I drop frames, I can still enter the commands to rescue myself with some assurance they'll be interpreted, eventually.

I agree, a REPL isn't Unixy in the streams of text kind of way... or is it?

reply
pjmlp
1 hour ago
[-]
I would argue that a proper REPL is much better.
reply
dkersten
1 hour ago
[-]
That’s what I came here to ask. Their demo looks like Compiz back in the day: ok, cool, you have 3d effects, but… why? What does it do for me?

Compiz 3d effects were ultimately a useless gimmick and I predict this is too.

reply
reaperducer
51 minutes ago
[-]
Lack of imagination doesn't mean this isn't innovation.

It's the ability to convey more information in less space.

Top-of-my-head notion: The cursor spins (or changes in another way) to reflect CPU use, or bandwidth use, instead of taking up space elsewhere on the screen.

reply
pelagicAustral
5 hours ago
[-]
Can I really render a 3D rat on my terminal? If I can then I'm sold.
reply
mghackerlady
2 hours ago
[-]
I saw it this morning on reddit, the I beam was replaced with a spinning rat for the demonstration. It was very cool B)
reply
sevenzero
5 hours ago
[-]
This is exactly what I thought as well.
reply
liamwire
2 hours ago
[-]
You had me at spinning rat cursor
reply
arkwin
3 hours ago
[-]
We are one step closer to the terminal in the movie Hackers, and I am all for it.
reply
quotemstr
13 minutes ago
[-]
Cool.

Seriously, though, when are we going to see the convergence of terminals and GUI remoting protocols? People have already departed far from Unix pipeline utilities. "TUI" programs are already GUIs in disguise. Why keep pretending that the terminal (as used by TUI programs) is a different kind of thing?

reply
HumblyTossed
1 hour ago
[-]
How long until we have a web browser in a terminal (not just Lynx, but a full on web browser)?
reply
PUSH_AX
58 minutes ago
[-]
Soon it will just be browsers all the way down.
reply
mghackerlady
55 minutes ago
[-]
there was a project that rendered firefox to the terminal through box drawing characters. When libweb is more complete I kinda want to do something similar
reply
sscarduzio
10 minutes ago
[-]
Well deserved HN #1
reply
rexthonyy
29 minutes ago
[-]
That's quite cool, visually pleasing to the eye and high on data usage.
reply
darkwater
4 hours ago
[-]
What would happen when you use `cat` in Ratty then?
reply
injidup
1 hour ago
[-]
Anybody remember "wobbly windows"? It never sticks.
reply
mghackerlady
54 minutes ago
[-]
I have wobbly windows on whenever I use KDE. I like how it gives the movements more momentum, though I have it turned down by a lot so it isn't distracting
reply
chakintosh
1 hour ago
[-]
People complain about token limits

Then spend their tokens on abominations like this

Make it make sense

reply
torben-friis
1 hour ago
[-]
I much prefer seeing tokens used for silly fun stuff, rather than sad get-rich-quick attempts like filling YouTube and Spotify with LLM crap.
reply
koiueo
5 minutes ago
[-]
Filling GitHub with LLM crap isn't on your list... I wonder why
reply
gavmor
12 minutes ago
[-]
People use their tokens, and then complain of limits. Where's the incongruity?
reply
Gracana
46 minutes ago
[-]
> Make it make sense

It's not hypocrisy when different people do different things.

reply
gosub100
53 minutes ago
[-]
Did this developer complain about token limits?
reply
kspacewalk2
1 hour ago
[-]
I mean... Why not?
reply
basilikum
5 hours ago
[-]
This looks a lot like it'd qualify for a ShowHN. Add "ShowHN: " to the beginning of the title and it should show up in /show
reply
mohamedkoubaa
4 hours ago
[-]
Emojis in a terminal are a step too far for me. This is just... Indulgent.
reply
gorgoiler
1 hour ago
[-]
Hah, reminds me of the Quantel broadcast equipment on the 1990s. Why fade to black when you can fade to 3d butterfly!?
reply
rs545837
1 hour ago
[-]
Damn this was really fun to use.
reply
lackoftactics
2 hours ago
[-]
Hantavirus inspired?
reply
xrd
2 hours ago
[-]
You should know that using a TERMINAL instead of a BROWSER ON THE DANGEROUS INTERNET is the ONLY WAY to *avoid* viruses!
reply
2ndorderthought
5 hours ago
[-]
I actually see some use cases for this. It's one of those should be nonsense projects that somehow isn't.
reply
panzi
4 hours ago
[-]
What use cases do you see?
reply
2ndorderthought
4 hours ago
[-]
Checking 3d models in a directory inside my terminal to see what's what without opening an application and clicking 100 times.
reply
a96
3 hours ago
[-]
.. over ssh. In a tmux. After disconnecting and reconnecting.
reply
drob518
4 hours ago
[-]
Yea, gotta be honest here; I’m struggling to see many use cases here other than 3d graphs. I really don’t need a spinning 3d rat cursor.
reply
jayGlow
2 hours ago
[-]
we could bring back the 3d file browser and render it in the terminal now.

https://youtu.be/dFUlAQZB9Ng?si=3fE-vE8xF5rSVhRR

reply
herrj
2 hours ago
[-]
pranking your co-workers
reply
avaer
4 hours ago
[-]
Game development.
reply
silon42
4 hours ago
[-]
IMO, next crazy step is for terminal to just have wayland or X11 protocol ? (/s or not?)
reply
mghackerlady
2 hours ago
[-]
someone made an x server that renders to sixel[0]

[0]https://news.ycombinator.com/item?id=45341683

reply
brunoborges
1 hour ago
[-]
Cool... why?
reply
ceayo
31 minutes ago
[-]
why would you want this?
reply
antran22
23 minutes ago
[-]
why wouldn't you want to see your htop output on a moebius strip
reply
voidUpdate
5 hours ago
[-]
I was going to comment how it reminded me of TempleOS and the author should look into that, but the accompanying blog post explains how it was inspired by it https://blog.orhun.dev/introducing-ratty/
reply
dstnn
37 minutes ago
[-]
Friggin waste of resources
reply
randusername
3 hours ago
[-]
Here's the bit from the blog post about it:

> When I first got introduced to [TempleOS], I was shocked and impressed by the flashy colors, graphical sprites and uncomprehensible UI. There are so many things that makes it so unique, weird and fascinating at the same time, somehow.... Basically, the command line becomes the direct interface for everything. You can write code, interact with the system and render graphics all in the same place, which is why TempleOS feels so unusual compared to conventional operating systems.

I think this could be a really cool approach. I enjoy tools like Chafa, imgcat, etc but something always feels a little clunky about the separation between text and images. Paradoxically having text and non-text all jumbled up like this feels better somehow.

reply
whywhywhywhy
3 hours ago
[-]
I was gonna comment here "real TempleOS vibes" then the TempleOS logo appeared a moment later in the demo video.
reply
hartjer
1 hour ago
[-]
"Your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should." - Jeff Goldblum (OG Jurassic Park)
reply
wolvoleo
2 hours ago
[-]
This would be nice in VR
reply
tootie
1 hour ago
[-]
Make me think of the infamous Unix scene in Jurassic Park.
reply
mghackerlady
50 minutes ago
[-]
That was an actual file manager if you didn't know, it was called FSN. Theres a FOSS clone called FSV[0]

[0]https://en.wikipedia.org/wiki/File_System_Visualizer

reply
sgt
3 hours ago
[-]
How do I enter zoom mode or pan mode?
reply
neomantra
4 hours ago
[-]
Really fun project! Dude, I spent the last week implementing Kitty Graphics and Clipboard protocols in ghostty-web in the Canvas render.

Then I added WebGL and WebGPU renderers [1], including support for Kitty.

Then I see this this project on a Monday morning... so now I have to implement Ratty Graphics Protocol?!?! [2].

ETA: I looked into this; Ghostty would need patched to support Ratty since Ghostty-Web now defers APC handling there. It would also require pulling in a 3D engine like three.js or otherwise implementing file parsing, lighting, etc. Finally, since local filenames are part of the protocol, a browser would need some file resolver helper, either to get the data over the APC channel or via a URL.

[1] https://github.com/NimbleMarkets/ghostty-web/tree/nm-webgpu

[2] https://github.com/orhun/ratty/blob/main/protocols/graphics....

reply
kokey
1 hour ago
[-]
I am a bit surprised that I had to look hard for someone to mention Ghostty in the comments.
reply
namar0x0309
2 hours ago
[-]
More of this please! Outside the box thinking! Yes and yes!
reply
olivierestsage
2 hours ago
[-]
In a world of slop, one truly noble project emerges
reply
gosub100
1 hour ago
[-]
Has anyone tried to create 3D fonts? It sounds like a ton of work but might look cool if done correctly.

You could also do really cool text highlights by working with light sources and shader effects

Another feature I'm looking for is smooth scrolling when you hit enter. I've had debates before where they claim it's not possible, that the text must jump one line. But I think it's possible, by shifting the frame buffer up.

reply
semiinfinitely
57 minutes ago
[-]
temple OS?
reply
nialv7
41 minutes ago
[-]
Terry A. Davis will be proud
reply
Bluescreenbuddy
52 minutes ago
[-]
Another terminal to murder your battery life
reply
kandros
1 hour ago
[-]
Expect to see Orhun in here before clicking, not disappointed
reply
HackerThemAll
28 minutes ago
[-]
What a twist, having textual window manager within a graphical user interface, and that textual window manager implementing bits of graphics.

You'll soon may be able to implement overlapping graphics windows in TUI within GUI.

This is stupid af.

reply
drakythe
1 hour ago
[-]
My first reaction: "But why?"

My second reaction: "Oh wait is that TempleOS being cited? This is either awesome or terrible."

reply
nickcageinacage
4 hours ago
[-]
so cool. well done
reply
austinrm
1 hour ago
[-]
Excited to see others equally inspired by TempleOS’ 3D feature :)

I tried something similar a few months ago that acts more as a library to ratatui than a separate terminal emulator [0].

Was surprised how far one can get using some off the shelf characters like half-block when rasterizing.

The Glyph protocol mentioned in the blog post is interesting … perhaps custom glyphs could help smooth some of the (literal) rough edges from the low effective resolution of a terminals character grid.

[0] https://github.com/limlabs/ratatui-3d

reply
iugtmkbdfil834
4 hours ago
[-]
Dude. Congrats. You actually made a compelling argument to put rust on my machine:P
reply
BaardFigur
2 hours ago
[-]
Reminds me of TempleOS
reply
mobeigi
34 minutes ago
[-]
So TempleOS was ahead of its time!
reply
shevy-java
4 hours ago
[-]
This is a great idea. I always wanted KDE konsole to e. g. show images inlined as is. This is possible via magick six:-, but I wanted this to be natively. I want the terminal to be able to work with any data and display it in any way. No need to simulate the 1980s era anymore (except for backwards/legacy support). So great idea here really.
reply
berkes
4 hours ago
[-]
Kitty and several other terminal emulators, have built in graphics display already. IIRC, this is called the kitty protocol, but I might be mistaken.
reply
anthk
3 hours ago
[-]
I did that with Sixels, no Rust needed, no 3D crap, no ad-hoc addons, just old vt340 support in XTerm.

That's how I read images under a remote pubnix with tut using a Mastodon account over plain SSH.

Chafa and XTerm. It works.

reply
kjs3
2 hours ago
[-]
I would like to subscribe to your newsletter.
reply
lioeters
3 hours ago
[-]
> inserted 3D objects in the demo above are actually from the TempleOS codebase itself

Brilliant. The dream lives on! This is the best form of paying respects.

It's walking a fine line between madness and genius, and who knows if it'll ever be practical, but more important is the sense of wonder and "fuck yeah" as King Terry expressed so eloquently.

reply
Lucasoato
4 hours ago
[-]
Imagine this with VR dev environments!
reply
rullelito
3 hours ago
[-]
Can anyone explain why this is novel? It seems pretty basic?
reply