I used to daily drive this, most of the effects were minimized but I found that a little bit of white noise really helped make my terminal a lot easier on the eyes to read. I wonder if it is related to how some people find that film grain has a pleasing effect.
For those looking at the screenshots note that the terminal is incredibly customizable, you don't have to have all the effects dialed up to 11!
Sadly bit rot has set in and the project doesn't work that well now days. Also a lack of tab support really hurts it as a daily driving terminal.
I also have it set up to do adaptive theme, so in light mode the galaxy is mostly just a little noise on the black text but in dark mode it’s like I’m piloting a space ship. Highly recommend.
This is fantastic - but I encountered something strange. I was searching `ghostty per window shader` and your site came up as the first hit. Excellent - however, this was the text under the link:
Fun with Ghostty Shaders
22 Feb 2025 — Ghostty doesn't directly support shaders, but a repo with shaders can be cloned to ~/.config/ghostty/shaders. Examples include 'drunkard+retro- ...
Now, no where in the text on the site does it say this - so did google just wrongly summarize and put it in as "website text". To be clear, this isn't an AI overview - its in the main list of links! Maybe this has been happening and i just missed it but its absurd! It doesn't even fit with the text! Thanks for the resource, again, had a lot of fun with that.
What the crap is going on with this. Is Google just blindly making stuff up these days? Why would it show some preview text that doesn’t exist on the page.
Maybe they noticed that everybody ignores/downvotes/hates/hides the AI overviews, so the next attempt to force people to see them is to replace descriptions and previews with generated summaries?
I love it because I have glare/doubling around words. Adding some visual noise can mask my own eye problems, and adding some visual effects with the glowbar and jittering if I feel like it, can really make it easier to focus for some reason.
> Also a lack of tab support really hurts it as a daily driving terminal.
For some, perhaps.
I've not needed tabbed terminals ever since vim got proper terminal support. I run shells within vim, so have them in splits, tabs, etc in a plain xterm.
Sorta like a tmux replacement, but with better editor support :-)
It'd be awesome to run something like this headless, maybe with a frame buffer. I setup my home lab with Freebsd recently and it's just sitting there without a cool CRT screen. :/
People go so overboard on this stuff, the amount of ghosting on the DOS example is insane. I don’t want to spoils anyone’s fun but that’s not really what most screens looked like back then.
Most screens, no. But that one half-dead trash-picked screen that stands out in your memory as emblematic of that time in your life when you were building computers with your own two hands? Certainly.
if you're talking about cutting edge CRTs, many of the last generation actually beat flat panels for years. Some may still in some aspects.
There were plenty of junk CRTs out there used for text only display with insane levels of persistence and other issues that lead to a very unique appearance. It's also sort of moot at this point. The existing CRTs out there that have this behavior have degraded over the years. No one makes new high persistence CRTs that I am aware of. So it's mostly down to our memory of them.
I actually have a flat panel that has over 2 decades degraded and now has some weird persistence going on.
CRTs still run circles around basic cheapo TN panels when it comes to color fidelity, dynamic range, viewing angles, and refresh rate. Upper-mid-to-high-end LCD screens have gotten vastly better, but the baseline is still pretty low.
Most of them weren't, but some were. If all you were doing was looking at screens of text, a long persistence phosphor could be desirable[0].
I've got one that is inside an Apple II monitor. Can confirm, the image looks very flicker-free, but has pretty bad ghosting if you're looking at anything that scrolls. It looks cool but is pretty rough to do any work on. The other green CRTs I have are barely more persistent than a regular black and white TV, and I've never heard of a long persistence color monitor.
> "I don’t want to spoils anyone’s fun but that’s not really what most screens looked like back then."
I don't really see the problem with what's written on the tin here; it's called retro-term and not vintage- or classic-term, after all (I didn't read the project's webpage). In other words: It's correctly advertised as something new that's just fashioned on something from yesteryear. So you can really go overboard with technically inaccurate, kitschy glitchshit that's so popular with crowd. Of course, historically challenged people will fall into the trappings of a romantically distorted past they never were a part of. As they always did and always will. But that's just life.
Amusing that it can lead to a romantically distorted future for those terminal users.
As someone who came up in that era, I would never want to regain those barrel distortions or incoherent pixels I saw in some of the heavy-handed retro terminals. I paid good money for flatter CRTs and also jumped to LCD with a digital input (DVI) as soon as it was a general option I could justify on a work computer order.
I'm also happy not to be hearing the constant whine of CRT coils, HDD drive motors, or even so many cooling fans these days.
depends on how the brightness/contrast was set on the tube. if someone came in to a screen that was off and did not allow it enough time to warm up, it was common to see people adjust these knobs in the mornings. eventually, the tube would warm up, and things would just be too bright.
The single most annoying thing with these old displays was the flicker. Whenever I use one of my real old home computer era monitors it is the only thing that makes it unbearable after a while.
But I'm not surprised they don't go overboard with that in the emulators. They'd probably have to add PSE warnings if they did.
My sister tried to go through broadcast school, with great difficulty especially when she got through the video editing classes. Turns out she has photosensitive epilepsy and all the exposure to CRT monitors made her quite ill. You couldn't convince her to go back to the CRT days for all the tea in China.
It's almost like a caricature of a CRT. I can see the novelty, but hope that people aren't lead to believe monitors looked like this.
I think what bothers me most is the horizontal line that slowly moves across the screen every few seconds. It's an artifact of recording a CRT on film and doesn't occur when you look at a real monitor...
A horizontal-line artifact (not the one depicted in the shader) could totally happen, if you were over-driving a monitor with a higher pixel clock than it was happy with. With this kind of artifact, the two halves of the image would also be slightly horizontally misaligned with respect to one-another, too.
It could happen in home computers connected through the antenna input. I think if power was slightly off the desired frequency this could also happen, but we’d need to test.
It also happens with digital cameras for similar reasons, due to CCD scanning. But yeah, that doesn't happen looking directly at a CRT.
The bloom is also too blobby, because it's a gaussian blur. I ran into the same issue trying to implement a similar effect. The bloom shape needs to sharper to look realistic -- which also means unfortunately a non-separable blur.
Just like back in the day, this would cause me to tire so much faster than I normally do. These things are "cute", but for actually getting shit done, they are an annoyance. Does anyone use something like this for extended periods of time? The clarity of modern terminals is a godsend.
I think it's the blurry text. I installed it once and used it maybe twice. I found that I spent most of my time squinting at the screen like I needed to put my glasses on. I had to quit using it because my face hurt from squinting the whole time.
I used this extensively in a past job where I had to have have a ton of terminals open and monitor/use them all, with each one serving a different role. (We were prototyping some really complicated experiences) I used this tool to give each terminal a distinctive “look”, with some coding for effects. E.G. all green screens were backends, different fonts for the different OSs, etc. It looked wild while in use, but really did help.
sounds like one might have the wrong job then to me.
if your task is boring, update the desktop's background. if your task is boring, spend hours upon hours choosing which font is better for your IDE/terminal. if your task is boring, you'll find anything to put off doing the task
I'd kind of want a terminal that can be used for everything, including browsing, image display, playing videos and so forth. KDE konsole is good but I don't see any logical reason why I need to simulate 1980s terminals in 2025. Right now I use KDE konsole to either display something on the terminal or start some other program (such as gimp etc...) but I'd like the interface to actually be the terminal in itself, as-is.
Plan9 “terminals” were like that. Create a window, and by default the text shell runs in it. If you have vdir installed, and you run that in the same window, you get a semi-graphical file browser. Exit that and then run games/doom and now doom is running in the same window. Exit that and “cpu” into another machine and run riostart and now that same window that did all the other things now is running a window manager on the remote machine, displayed on your machine. Graphical apps, textual apps, everything. All in Rio windows. Smoothly, too. (It is a very different paradigm so I am not going to profess that it is user friendly or anything, but it does work, and it works well once you get your head around it.)
Side question, was there a reason early CRT screens were amber? Or was this perhaps maybe downstream of PLATO & the first plasma (and touch) screens being a Friendly Orange Glow?
The color of the screens is related to the phosphor used to coat the back of the screen, which is excited to glow by the electron beam. According to wiki, amber was used as an "eye-friendly" ergonomic color for similar reasons we use blue blocking filters today.
There was a considerable debate on the ergonomics of terminal colors, where the pseudoscience said green and amber were the best... and white wasn’t very good. I’m not sure what the truth was. Adding a couple of inches to the 12-inch screens of the time would have made a bigger difference in eye fatigue than phosphor color. That said, there was something magical about glowing phosphor...
I contribute to this project (they use my 3278 font) but I think the best way to do this would be to have shaders available to compositor windows. This way, any terminal app (or video player) could tap into a library of CRT shaders.
The only thing missing would be frame-to-frame data availability to make persistence possible - Windows Terminal has shaders, but they can’t access the previous frame.
I like the idea and used it for a couple years, but the lack of functionality was a bummer.
Ghostty with shaders on the other hand gives me all the functionality AND the effects. Some people may not have figured this out yet but you can stack multiple shaders on top of each to get some really cool combination effects.
Super fun but so much not for me. Fricking awesome if you're in the TV or movie business trying to get that effect right. Reminds me of the first time my artist kid used the term "pixel art", which in my memory brings back only frustration from my 1980s restriction to 2, 4, then 16 colors. I love unlimited colors, thank you very much. And I remember being grateful to pay $1,000 for a flat screen monitor around 1995 or so. I adore the crispness of digital output.
Again, not criticizing this effort. Just saying that I love being here in the 21st, thank you very much.
I haven’t used it and have no idea if it works. Now that my eyes are shot I don’t mind losing fidelity for a bit of atmospherics when doing some casual computing (eg checking email with Pine like it’s 1999.)
If I weren’t so lovingly tied to niri I would like to give this shader a go. Nostalgia is one hell of a drug.
It doesn't quite seem to have the same effects, though. It would be nice to see cool-retro-term's extreme CRT effects implemented in an all-points-addressable low-res mode. Perhaps it could even be made to run as a Wayland compositor, similar to hyprland.
But it seems buggy at rendering some unicode characters, I use vertical line[0] for my indentation guides in Neovim, and they look outright hideous in cool-retro-term[1]
Not quite this extreme, but I usually use the old Sun console font in my terminal windows, because I'm an old fart and it makes me happy. Someone at work just the other day looked at my screen and said, "What the heck is wrong with your terminal window???"
Whoa, this sent me back. I cut my teeth on Red Hat Linux 5.2 (pre-RHEL), and I remember when they first added Bluecurve… oh jeez, this means im old, doesn’t it?
Cool project, love the visuals. Wish it would merge as a plugin or something to a project like http://ghostty.org/ while I appreciate the visual fun, there are other pragmatic tools beyond visuals that are handy.
I think the best thing that could happen would be to be able to add shaders to windows in Wayland.
When MacOS 9 was a thing, I had an extension called “out of context menus” that added options such as “Gaussian blur” the the context menus so you could blur a window.
It can only apply shader(s) to the current frame I think. To produce the crt ghosting you'd probably need access to the previous frame (not an expert).
I've tried the shaders in the following repo with ghostty. They definitely work. I ended up keeping a cursor trail shader. https://github.com/0xhckr/ghostty-shaders
Yes, correct! If you check out https://ghostty.org/docs/config/reference, the iPreviousCursor is available, so it can be used against the iCurrentCursor to produce a fading effect. But I think the entire previous framebuffer isn't there (yet).
It's fun to play around with, but unless I'm missing something, it's not possible to specify the size, in rows and columns, of the screen, such as 24x80. It's an odd omission.
Is there some general purpose (linux) software that could apply these kind of post-processing effects to my any terminal? Or failing that, my whole screen?
Neat to use for a few minutes as a novelty/toy. Not something I'd do daily, though. I remember trying it out years ago, and it would peg the CPU at 100%.
2022: https://news.ycombinator.com/item?id=30734137
2018: https://news.ycombinator.com/item?id=17413911
2015: https://news.ycombinator.com/item?id=9093545
2014: https://news.ycombinator.com/item?id=8399461