12 ms·
Stop Making TUIs
- jbellis 1mo agoUnfortunately we seem to live in an era where your mainstream choices for a cross platform app are "Electron taking 1GB when idle" and TUI.
- tomaskafka 1mo agoNo, that is 2 years ago era. Now it’s “native apps for 5 platforms done almost for free” era for anyone who cares. See Meta’s new AI desktop app (no, I won’t install anything from Zuck on my computer, but I appreciate what they did).
- xgulfie 1mo ago> Now it’s “native apps for 5 platforms done almost for free” era for anyone who cares. Can you elaborate?
- tomaskafka 1mo agoYou can ship native app for each platform much easier nowadays.
- dionian 1mo agofor me : make TUIs and GUIs.
- Surac 2mo agoTUI is a kind of self defense. big corps create and kill gui frameworks faster that one can learn them. Browser based ui is a real waste of resources (and also evolve in a absurd pace). The Console is a last resort to write small (understandable) gui that work on many platforms.
- 0x457 2mo agoHuh? Qt, GTK, Cocoa (AppKit and UIKit), bunch of other linux friendly gui frameworks been around for a long time, even Flutter is still around. What is being killed?
- worthless-trash 2mo agogtk1/gtk2/gtk3 code will require you shipping gtk(version) on modern linux, not all distros have the legacy libraries. Apple deprecated carbon (which was a thing when gtk1 was around). I don't think you have an option for this on their ARM hardware. QT1->N code has the same problem, the older libraries are not shipped on most modern linux. I do absolutely understand if you're going to do static compiles, that can work around that problem, but that arguement nullifies everything, since you can run/write/execute anything in a turing complete system, if you complain you're just not dedicated enough.
- 0x457 1mo agoCarbon was released in 2000 and final release was in 2019. Cocoa, correct me if I'm wrong, was released in 2005. That's 14 years to learn it. Not like you knew Carbon when Cocoa came out because there were like 10 developers making Mac OS X apps before 2007. y'all are slow learners if that's an issue for you, but React doing major breaking changes at least once a year is totally fine.
- worthless-trash 1mo agoyou miss the point entirely bro.
- 0x457 1mo agoThe point is a realease every N years with overlapping year(s) of support is too fast for some?
- frollogaston 1mo ago
- jmorenoamor 2mo agoNo. I like them.
- danpalmer 2mo agoWhat do you like about them? I disagree, but so many people seem to like them that I assume I'm missing something. The main one I've heard before is that they work nicely over SSH, but I assume there must be more?
- TurboHaskal 2mo agoI don't think TUIs are inherently better but some are simply too good versus the alternative. magit and k9s for example.
- anon7000 1mo agoAlso CLI args to TUI are very useful. Like the k9s command flag to take you to any view. It feels more immediate than launching a separate app from the terminal
- mrheosuper 2mo agoLightweight and can run over ssh are 2 main reasons i like them.
- duskdozer 2mo ago(other user) in my typical experience: - keyboard can be used for pretty much everything - less visually busy (no/less animations, background images/color variations. often close to plain text on plain background) - more information dense (fewer things hidden behind hamburger menus, modals, drawers, etc) - more/more easily customizable and documented - more often can provide data directly into the terminal that I'm working in, so don't need to copy/paste through windows etc these aren't necessarily impossible for GUI or universally true for TUI, but maybe I would guess just more an artifact of there being types of people who prefer working in the terminal who are then more likely to make TUIs, and I share their preferences more.
- 2mo ago
- GreenSalem 2mo agoIncoherent and far too long . Lists a bunch of things . Fails to make any clear points . Fails to give real reasons for the few claims it makes .
- PaulRobinson 2mo agoBuilding software for yourself - and only yourself - is a super-power. I can see how LLMs help. I wouldn't want to maintain software for other people entirely vibe coded. I think I might think again about native app development for my own needs, if it's kind of disposable.
- dmos62 2mo agoSpent 2 minutes skimming, didn't manage to find a single talking point. I've no idea what the thesis is. Seemed like a list of things this person built. People talk shit about LLM writing. Well, here's a prime example of why I like LLM-speak. Does this article have personality? Yes. Attitude? Yes. Is it structured and accessible? No. I'll take clarity over personality any day of the week.
- SpaceNugget 2mo agoThat's a false dichotomy. If you launder rambling pointless prose through the llm you don't trade the personality of the writing for a well reasoned argument with clear points, you just lost the personality and gained shitty writing. LLMs aren't magic and can't make your point for you if you don't have one to begin with in the prompt. Garbage in garbage out.
- dmos62 2mo agoI disagree. An editor can definitely make a piece of writing clearer without further input from the author. I often use an LLM to do that. Of course, I didn't mean to imply that there's a dichotomy between personality and clarity. There's a dichotomy between ordinary LLM writing and personality.
- mike_hearn 2mo ago
- kunley 2mo agoWhat is the complaint in the article really about? People write code using the platform X because they like it. It doesn't make sense to try to stop this
- JoshTriplett 2mo agoYou know what's awesome about TUIs? They live in a tab in my terminal. 95% of the time, my system has three windows open: terminal, browser, Signal. Please, make more TUIs and web apps, so they can live in my terminal or my browser.
- walrus01 2mo agoAdditionally, I can with very high confidence run TUI software inside an ssh session to one of my headless machines, and then further within gnu screen or tmux detach and later resume a session with everything I was doing. Even if I switch from my laptop to my desktop, or want to leave a bunch of stuff waiting for a week and come back to it later. Once you get the key bindings for screen or tmux thoroughly memorized it's very easy.
- altmanaltman 1mo agoOkay but TUIs don't matter here though right? You can easily run GUIs over the web with any box anyway if you wanted to. So how is your headless sever running 24x7 (which is what allows feature you talk about, not tmux or tuis) not the reason you can do that but TUIs are? I have a windows box that never shuts down and i remote into it and use it GUI mode to do everything you said but with a proper GUI interface. I also use the terminal but your feature (constantly up + resume + multi device) does not need TUIs to even work.
- dual_dingo 1mo agoA server needs a lot more things to have a GUI compared to what's necessary to just run an SSH daemon that offers CLI/TUI access, where SSH is just providing secure network access for the most basic interface the server has anyway (the TTY).
- altmanaltman 1mo agoOkay but the way the comment described their workflow implies they have a pretty solid server where they actually "work". My point isn't TUI vrs GUI, my point is that you cannot say TUIs are better because cloud computing exists. You can easily replace TUIs with GUIs and enjoy the same features that cloud computing provides, so what makes TUIs special? Is it because they are lightweight and don't consume as much resources? That depends on the app itself, there are several lightweight apps that use a web-based secure GUI instead of TUI, so why specifically do you want to be in the terminal?
- burnoutdv 2mo agoI am team TUI for the matter. Its also a bit funny how the author show cases a bunch of apps that only exist on a very specific setup, IOS Mac devices while TUI can exist everywhere a terminal can reach. The right tool for the right job, noone would srsly use a TUI photoeditor but for many things the simplicity and constraints that a terminal introduces condenses design. I got this article about UI density open since weeks and meant to read it https://mattstromawn.com/writing/ui-density/ https://mattstromawn.com/writing/ui-density/ But from what I could interfere so far..more UI frameworks, more white space, more wasted space. Also..TUIs usually allow me a wide variety of colorschemes out of the box which is nice
- gemisis 2mo agoHot take: Too many people are building GUIs for what should just be a TUI, and vice versa My stances: - Dev tools need a CLI at minimum, TUI for complexity - User facing needs a GUI, CLI for power users If you're building a TUI for a user facing thing, then yeah, you're doing it wrong, but if your target audience is devs then yes, PLEASE do a TUI, and make it nice.
- rochak 2mo agoOr, you know what, don't listen to strangers on internet telling you what you should do. Do what you want.
- hombre_fatal 2mo agoOne of the biggest upsides of TUIs over GUIs is that I can run any number of TUI instances. Meanwhile a GUI's developer has to decide to grace me with the ability to even open more than one window. "A tabbed interface will be sufficient!" -- yay, I'll never be able to view two screens of info at the same time.
- brainwad 2mo agoOpening more than one instance is the default, developers have to actively work to block it. At least on desktop.
- hombre_fatal 2mo agoWhich desktop? It's not true for AppKit, SwiftUI, GTK, Qt, WinUI, or Electron, and I'm not sure what's left.
- annapanna 2mo agoWhat? 99% of my programs I can open more than one window by just executing the program as normal multiple times, the only ones that enforce a kind of singleton execution are things that also acts as a kind of server, one example is Everything search, but it has a "Open new Search window" for multiple windows. And that is the default, you have to explicit code in a lock/global mutex thing to block multiple instances. vscode, electron app, no problem opening multiple windows. Geany, gtk app, no problem opening multiple windows. Can you give an example where this doesn't work?
- hombre_fatal 1mo agoAnything from WhatsApp to the Settings app on macOS where I might want to, say, compare the wifi network settings for two access points. But the point is that the developer has to build the app in a way that lets you do this. Once again, there is no default with the tools I listed. You decide on how you want windowing to work and then build it. At this point, show me examples of needing a mutex to "block" a multi-window default.
- self_awareness 2mo agoDo more TUIs. People are unable to do good GUIs. The web shows this; completely disregarding any UI guidelines by web people established since 80s is a proof that most people have no idea how to make GUIs. I don't know how to make a good GUI. That's why I need good templates and strong guidelines, discipline and spend long time on design. Most people don't do that. TUI is much, much easier. It's also possible to do bad TUIs, but it's easier to do a good TUI than to do an average GUI.
- FabCH 2mo agoCounterpoint: Build more TUIs in Rust using Ratatui: https://ratatui.rs/ https://ratatui.rs/ Why? Because just look at the examples on that page.
- blooalien 1mo agoOr for those coding in Python there's Textual: https://textual.textualize.io/ https://textual.textualize.io/ Or for Go coders there's BubbleTea: https://github.com/charmbracelet/bubbletea https://github.com/charmbracelet/bubbletea Why? Because TUI!
- ChickeNES 1mo agoHeh, I have one in C23 with Ruby, Python, Go, and JS bindings...may have gone overboard. Not going to publish though until I have dogfooded it enough though :P
- intelkishan 1mo agoYeah Textual, is pretty good. I have been building a CYOA(Choose-your-own-adventure) game using it
- wiseowise 1mo ago> Textual Please, don't. One of the main benefits of TUI is being able to freely copy text, I hate opening Textual application and being dropped into this canvas like state.
- olejorgenb 1mo agoA workaround is to use shift + mouse drag to enter terminal native selection mode. (Works in most terminals I believe)
- frollogaston 1mo agoThat's fine until what you need to copy gets extra line-breaks inserted
- jesse_dot_id 2mo agoI'm a fan of a TUI, I think because they are usually pretty intuitive out of necessity. I can usually feel the developer's skill level in the user experience.
- zorked 2mo agoHaha, no. For a while, many years ago, it seemed TUIs were indeed on the way out, but then they were relived by the awesome work of people who wrote GPU-accelerated terminals, widget libraries, who extended terminals with more colors and the ability to show Unicode and graphics. I salute you, heros.
- lukasbm 2mo agoTUIs are just an accessibility nightmare without any of the advantages of a CLI like scriptability. Truly, Truly horrible
- Gormo 1mo agoThat seems at odds with many of the people in this discussion communicating that they find TUIs more accessible.
- smcleod 2mo agoI absolutely love TUIs, they can live in a pane in my terminal, run via SSH on remote machines, use hardly any resources and are very flexible.
- x0xMaximus 2mo agoaerc is the best program I've ever used. tmux from anywhere. May TUIs never die.
- zmmmmm 2mo agoMake more TUIs .... The main thing I like is that TUIs are guaranteed to be navigable by keyboard. So many non-TUI apps don't include shortcuts at all for critical actions. It makes the first week of using the app more efficient and the entire rest of your life less so. Add on to that, I can probably run a TUI on my server. Or my cloud instance. And in my sandbox. Over SSH. So: do make TUIs and bind their keys to Vi-like shortcuts as much as possible and I will use your app every time over a GUI app. Pro tip for Mac users - install Karabiner and bind right-Alt + jklm to cursor movements. Immediate VIM navigation through the whole OS.
- benj111 2mo ago>The main thing I like is that TUIs are guaranteed to be navigable by keyboard I don't disagree with you, but in ye old days you had guis that were navigable by keyboard. And these were discoverable. That one program you use every day, you can spend the time to learn the short cuts. You can still get things done by clicking around though. I suspect the underlying issue is one of limitations. Terminals are limited in what they can do. Guis and the web, you can do so much more, so people do. I think another issue is touch screens. Guis and the web have moved to optimise for those. It decreases information density, forces a move away from the old standards to new much weaker ones. Tuis can't really do touch, so they don't have to make those tradeoffs.
- CalRobert 1mo agoMnemonics made keyboard shortcuts obvious but they’re basically dead now. Holding alt sometimes reveals them.
- skeledrew 2mo agoMaking TUIs isn't the issue. Making them with JS/TS, and in general an ecosystem designed for the web, is the problem. I've used some really good TUI apps in the past, but all these new ones mostly based on web tech are just... sloppily bad. Probably because the dev would rather be in the web browser where it's naturally colorful and scripts can run wild, but mostly-static terminal is where things are currently at. And they're using LLMs, which don't have sufficient data on web-tech-in-terminal since it wasn't really a thing until now, which also ensures they will likely never gain enough data on decent patterns since almost nobody will be engineering said patterns, creating a permanently slop-ridden cycle as future models only have slop projects to learn from.
- PaulRobinson 2mo agoYesterday I was flipping between some TUIs, native apps, web apps and an electron app. I think it was only because I was trying to do a lot in each of them I became really aware of the latency lag in some of these. There are real advantages of TUIs: less CPU; sometimes I want to be using a personal TUI on a personal dev server quickly from a work laptop at lunchtime and an ssh + tmux + TUI is perfect; most modern TUI libraries are significantly less painful to work with than most modern web app frontend libraries; I can change the font size of my terminal easily if I need to, more easily than native (but not web app). But by far the biggest, is they just generally tend to be very fast and responsive compared to everything else.
- codethief 1mo ago> I think it was only because I was trying to do a lot in each of them I became really aware of the latency lag in some of these. While I get your point, a lot of vibe-coded agent TUIs (Claude Code, GitHub Copilot CLI, …) aren't exactly fast, either.
- jbstack 1mo agoA lot of vibe-coded GUIs aren't fast, so this particular issue changes nothing. You're describing a property of the software development method, not TUIs vs GUIs.
- deleted 2mo ago[deleted]
- picafrost 2mo agoAre there not disparities between running an application in the terminal and running a native GUI? I can only speak for macOS, but my experience with bespoke native GUI applications of my own or other developers (pre-built distributions in GitHub assets) is that I must first pass through the layers of the macOS security model: doing a right-click dance to launch the application, changing permissions in security settings, etc. I assume the experience is different depending on how you set up Xcode to compile, how it's signed, etc (I have zero experience with how this works). That said, I do not recall being subjected to any of this using terminal applications. Put differently, a GUI application seems to subject you far more to the whims of Apple or Windows than a TUI and perhaps even a different run context. Maybe the permissions fiddling for this is insignificant. Is there a clear user contract from Apple or Microsoft about this? Naturally, this is a non-issue in Linux.
- knorker 2mo agoSo wrong. They're fast, efficient, work across SSH, in a tmux, and survive the almost daily browser upgrades. And they are easy to run as separate users without VNC or sandbox hell. Like do you want to think about X/Wayland isolation, or do you just want to get shit done?
- swiftcoder 2mo agoAs someone who works on a very GUI-centric OS (i.e. Mac), TUIs just don't integrate very well with the rest of the non-Terminal ecosystem. They don't support standard GUI shortcuts. They don't support drag-and-drop. I can't double-click a file and have it open in a TUI. They don't integrate with spotlight metadata. They don't ship document icons. They have terrible support for accessibility APIs. And so on...
- benj111 2mo agoIt's somewhat an issue with Linux as well. Ctrl c does 2 completely different things. Terminology is different. Etc. Problem is. Terminal applications standardised in the 70s. Guis in the 90s. Although that's being undone by web apps, and the influence of touch screens.
- sgt 2mo agoQuestion about Markdown, I'm intrigued by this. I recently bought FS Notes but it has some bizarre bugs on startup. I might consider some other tool, perhaps also something with better MD support. Is this library you mentioned truly fast? https://github.com/gonzalezreal/swift-markdown-ui https://github.com/gonzalezreal/swift-markdown-ui
- qsera 2mo agoDo more TUIs. Please.
- yellow_lead 2mo agoThis piece is just marketing for all the authors slop coded projects
- curtisblaine 2mo agoClickbaity title. Boring show off of vibe coded apps that only make sense to the author, disguised as think piece. This post has it all.
- jbstack 1mo agoI found most of the article completely unreadable. I was actually beginning to wonder if the HN post had linked to the wrong article, as it had nothing to do with TUIs until the very end. It was just a long list of "look at this slop code I made" and "look, here's another one!".
- deleted 1mo ago[deleted]
- rvz 1mo agoThe whole article reads as a post around jealously on the popularity of TUIs and writes a pseudo-intellectual rant about them. While I don't use most of them, but I can see why TUIs they are popular around devs. But in this post it reads like this: "I don't like slop TUIs because they are popular, but please look at my vibe coded slop GUIs and I like vibe coding them and you should too" One of the worst, if not part of my top ten worst blog posts I have ever seen on this orange site and absolutely do not listen to that horrible take that the author just wrote.
- anthonj 2mo ago"I built my first serious Mac application" I will just stop here. No hates for macs, but your typical cli/tui software devoper is concerned about making their software run on almost anything with an actual os. As soon as I see references to specific operating systems or platform specific libraries my bullshit meter goes off. I was expecting an article about methology and tooling to develop guis, got an apple fan telling stories about ai use.
- anon7000 1mo agoThis is covered towards the end of the article.
- ta8903 1mo agoIt's only "covered" by saying >But remember: I’m not really building applications for other people to use. I’m building them for me. What's the point then? What's the point of writing an entire argument proselytizing towards application developers and ending with saying you're only talking about applications you're writing for yourself?
- anthonj 1mo agoI only see a bunch of references to swift (very much not portable), but I did skip the Q/A style section. I see he mentions portability, but still no mention of actual portable frameworks. The word "macOS, "apple" or "swift" appears ~7 times each. No mention to any other GUI framework other than ...a link to the bloomberg terminal website? I would find the title less misleading if it was "I like swift". Let say someone, as windows or linux user, clicks on this article claiming he/she should stop "doing TUIs", what take away message should he get from it? "GUIs just looks nice but sucks you have no swiftui"? Personally, I was expecting a developer's angle on GUI programming.
- deleted 1mo ago[deleted]
- alerighi 2mo agoTo me TUI have a better user experience than graphical applications. And considering the amount of companies that are still using decades old AS/400 systems instead of new ERP system I'm probably not the only one to think it like this. First, a TUI is usable with only the keyboard. Moving the mouse is a waste of time, and if you are using an application multiple hours a day, it can lead to being more productive. Second, a TUI has no useless animations, elements, etc. It's not pretty, you have on the screen only the stuff you need to do your job, and you are not distracted by useless elements. Third, a TUI works beautifully in a client/server world, where you have one central computer and dumb clients that connects to it, and the connection can be a simple serial connection as well as a network connection. It can be rendered even with an ESP32, making it suitable for embedded HMIs and all kind of computing scenarios. Lastly, the user can choose the font, the colors, the size of the font that are best for him, usually a monospace font that it's surely better to read information multiple hours a day. To me it's the opposite, GUI interfaces were born to make it intuitive to use a computer, but are not as efficient as TUI in terms of productivity.
- benj111 2mo agoThe real shame though is that you can make gui apps efficient. I've used the same systems you describe, except in gui form. And the thing is, with this kind of application, everyone has a different 20% that they spend 80% of their time using. Guis can be as good as the TUI in the 80%, and very handy in the 20% where you aren't so well versed. The issue, is that guis seem to have dropped the ball with regards to efficiency.
- codethief 1mo ago> First, a TUI is usable with only the keyboard. Is it? Many TUIs these days don't allow me to configure my usual key bindings for moving my cursor within input fields. Meanwhile, GTK offers (used to offer) a way to customize key bindings across all GTK applications. (Unfortunately, they removed that feature in recent versions. Now I understand why people always get so upset about the GNOME devs…)
- ammar_az 2mo agoI like to have my freedom in choosing what software I want to make/use, without anyone dictating what is better for me. You like GUIs and want to build/use ones that works in MacOS, that's perfect go ahead and build as much GUIs as you want. However, this wouldn't work for me as I know how bad developing native cross-platform GUI applications is.
- divbzero 2mo agoIt’s a matter of preference: Everything OP says about GUI development getting easier is also true about TUI development getting easier.
- bborud 2mo agoI think it depends on how you work and what the application does. When I'm in a flow state I need things that are fast. GUIs, even on my relatively fast mac are not terribly fast. They take more time to start. They require more screen real-estate, and more management of same. For something to become a GUI app (or a web-based UI) the GUI needs to offer something more valuable than a TUI can offer in terms of interaction. I have one TUI app that wrote a while back to keep track of what I work on. It started off as a "wizard"-style UI. You choose project, then subproject, day, hours, activity and then hours and comment in a sequence of steps. Arrow keys -> enter -> arrow keys -> enter .... -> comment -> enter It takes about 2-3 seconds for me to do. And this is a time-sensitive task: if it isn't fast the user will not do it as often. There is a web interface to do the same thing, but the backend is slow. My TUI utility speeds that up by caching (between sessions) the things that the web UI has to look up (slowly) every time. Then I wrote a more involved UI for it that "looks more like an application". Result? Now we were up to 15-20 seconds of interacting. Oh year it could do more and it certainly looked better, but it was less efficient so I noticed that I would postpone using it to record what I was doing. Because it now had friction. Lots of it. So a couple of weeks later I just did a hard reset and went back to the wizard style, minimalist version. I would make a web UI, but that would burn 2-3 seconds just to navigate the browser there, juggle tabs (which I have too many of already), find the right browser to open the tab in etc. Once there do I keep it for "faster access" or close the tab? Keeping it is almost always the wrong thing. There's a reason I have perhaps 15 different tools in my garage that can attach to a given fastener size. And there's a reason for that. Not all 19mm bolts are treated the same way. Some are low torque and live in tiny spaces. Some require precise fastening torque. Some need a lot of force to come loose - some will only come loose with force and I'm okay with destroying them. This is why I have so many tools that all do essentially the same job: apply rotational force to a piece of metal that has a standardized interface. Similar tasks are not always best solved with the same tool because the context and the details do matter. Same goes for UIs. There are some things TUIs are very good at. Not least portability and remote usability.
- pmontra 2mo agoI like TUIs a lot and I use a TUI instead of a GUI as long as there is one available, but please note the main point of the post, the very last sentence > I barely think about these things as “apps” (I have no intention to distribute them). They’re artifacts of me making my computer do stuff for me, the way I want it to. As a Unix nerd, I’ve always been able to do this, in the language of the command line. Now, it’s just as easy to do that kind of work with graphical interfaces. And so the author (second sentence of the post) > I built my first serious Mac application a few months ago, and since then I’ve built more native UI thingies than in my entire career prior to that. I still build my personal stuff either for the command line (not even TUIs) or in a HTML page but I can see the point of creating a native app. Unfortunately there are some drawbacks: I would have to create the app for GNOME Debian and for Android, while a web app runs on both, and I would have to go all in on vibe coding because my last serious GUI programming has been in the 90s with Motif. The latter point is more or less the point of the author (the LLM does it for you) but it means that programming personal stuff will cost money paid to the LLMs companies. More and more money at each price hike and the multi thousand dollars box to run local models only makes the expense happen immediately instead of diluting over a long period.
- closetheloopdev 2mo agoIf you want to live only in the terminal, you can also use one of the text-based browsers [1] instead of Chrome, Firefox, etc. browsh [2] can also play YouTube videos if you'd like. You can also just use the system console with tmux or GNU screen if you absolutely don't want any graphics at all. The TUI programs usually do not consume a lot of resources. They are also very fast and optimized for keyboard-only navigation. [1] https://en.wikipedia.org/wiki/Text-based_web_browser https://en.wikipedia.org/wiki/Text-based_web_browser [2] https://github.com/browsh-org/browsh https://github.com/browsh-org/browsh
- hiAndrewQuinn 2mo agoI like TUIs, and I chose to build e.g. https://taskusanakirja.com/ https://taskusanakirja.com/ as a TUI for a couple of reasons, some of which are in this article and some not. Cross platform compatibility was a big one since at the time I started building it I didn't actually have a Windows or Mac machine handy to test this out. One thing I think which is overlooked is the raw feeling of speed a good TUI can give you. The lowest grade consumer laptop could probably download my little dictionary program and still get true search-on-keystroke performance, because there is virtually nothing slowing down that path, no animations, no nothing. Now most of that comes down to the data structures involved and making sure nothing ever has to go over a network, but I still appreciate the sheer simplicity of the approach. It's also nice to know that I can probably recompile this same exact code 50 years from now and still get it to run exactly as intended, since GUI frameworks have waxed and wanted in popularity, but terminals truly don't seem to be going anywhere.
- lelanthran 2mo ago> One thing I think which is overlooked is the raw feeling of speed a good TUI can give you. The lowest grade consumer laptop could probably download my little dictionary program and still get true search-on-keystroke performance, because there is virtually nothing slowing down that path, no animations, no nothing. Now most of that comes down to the data structures involved and making sure nothing ever has to go over a network, but I still appreciate the sheer simplicity of the approach. Recently, I posted a GUI mp3 playing program written purely in Tcl/Tk using shell scripts for some things. On my 2011 desktop, filtering for a specific mp3 across all the mp3s stored on my computer (about 80GB of mp3s) takes single-digit milliseconds. I can only imagine what a modern desktop, with an SSD, will do! GUI apps don't have to be laggy. My Qt and Lazarus apps aren't laggy at all, and are far more snappy and responsive than the clear majority of TUIs I use (like CC).
- eloisius 2mo agoThe LLM fetishists really do themselves a disservice with these wild, over-the-top statements about AI capabilities. I’d be willing to bet money that giving Claude a screenshot of part of this blog post would not producing “something useful” for any reasonable interpretation of useful. This reminds me of a line from Peter Diamandis’ Abundance (basically the only thing I remember) that described Google using a “stroke of HTML” to organize the worlds information.
- anon7000 1mo agoIt’s extremely easy to try it and find out. No reason to bet money.
- farhadhf 2mo agoThe CLI/TUI split in the article is right, but to me the more interesting boundary now is human-facing vs agent-facing interfaces. For most things TUIs lose on both sides. We run an internal agentic development harness we experimentally built for working on large-ish projects. first version started as a TUI, but it quickly became unusable for the large scale projects it was meant to work on (essentially PRD to PR, with planning loops, task decomposition loops and dependency aware execution / review loops). The TUI was too state-bound for another agent to drive reliably, and too cramped for a human to review at scale. We ended up replacing the TUI with a headless cli, and every interface we've built for the harness has become either a text artifact (mostly for agents to work) or a web view (for humans to drive and review).
- cube2222 2mo agoYeah, I think I agree with this. I think making GUIs and reverse engineering proprietary APIs are two things that frontier models make really pleasant - e.g. I made a menu-bar app (very similar to your temperatures dropdown, similar graph, SwiftUI) which connects via bluetooth to my Inkbird CO2 sensor, graphs the CO2 level over time, and looks fabulous. The skills are useful, thanks for linking them! They'll be useful for my future projects like this. FWIW I've had good luck with using Claude Design first to do mocks. At the same time, I think there's still the "is this worth doing a hyper-customized version of this software, if I'm also then responsible for fixing the bugs?". But I think increasingly as we improve our agentic workflows and make them more self-contained loops driving the result to completion, this becomes kind of a non-issue. In general, I do think LLMs are bringing about a new age of hyper-customization, which I welcome.
- knorker 2mo agoIf there's anything that's anachronistic, it's native apps. You want it graphical: Make a webapp. You don't: Make a TUI. What exactly is the use case for native apps? Even lots of legacy code can build to WASM now. (yes, I'm exaggerating a bit, but not much)
- err4nt 1mo agoAs a web developer who has just begun building native apps: running outside of the various sandboxes browser based apps are quarantined in. Deeper file system access, better access to hardware and sensors, notifications where helpful, deeper integration into the operating system (open with, file previews, widgets to launch the app, etc) and performance. Some things the web does well, some things it does less well than native. With a native wrapper around a web app you can leverage the best of both!
- sochowski 1mo ago> But there’s one of the problems with TUIs: even with a good framework, like Ratatui, Textual, or Bubbletea, you’re fighting the terminal to come asymptotically close to what every native framework does well out of the box. Scrolling and scroll targets are an obvious example. maybe the answer is... you just don't need features like scrolling? this guy is trying to fit a square peg into a circle hole
- rvz 1mo agoThe entire article is close to rage bait and should be dismissed as such.
- Hizonner 1mo ago"Stop liking things I don't like!!"
- JKCalhoun 1mo ago"I’m glipping balls like everybody else." Well, that's a new one, ha ha (guessing "tripping balls" on GLP-1). (And here I am too, about to be glipping balls… like everybody else, I suppose.)
- deleted 1mo ago[deleted]
- joshka 1mo agoAs a ratatui library maintainer, NO - please don't stop making TUIs ;) As a developer outside of that, I love the scratch the itch apps stuff mentioned in here. I have a vibe coded SwiftUI chess repertoire builder app that fits in that same sort of space that I'm currently working on, where I'd probably not have chosen to explore the idea if not for coding agents. I agree with the article that the terminal is an odd shape which you're fighting against historical specs, etc. The key observation I have though is that the mismatch of terminal apps and libraries to deal with this are all fundamentally built around character cells and cursor movement plus various CSI/OSC/ASC/DEC/xterm/... protocols which are complex and have varying support and interact in weird ways. To get a good terminal UX, I think the answer to this is probably to throw all that compatibility mess away and redesign a modern terminal protocol that bakes in accessibility, regions, scrolling, selection, proper keyboard, etc. I know Mitchell Hashimoto has a bit of a different perspective on this, which seems like it's to define some more protocol stuff and continue to build up on things. I think that probably gets to 95% pretty well. But a 100% good is a full replacement.
- anon7000 1mo ago> To get a good terminal UX, I think the answer to this is probably to throw all that compatibility mess away and redesign a modern terminal protocol that bakes in accessibility, regions, scrolling, selection, proper keyboard, etc. Why not just… a GUI framework or layout that’s meant to be keyboard driven and information dense?
- jeroenhd 1mo agoTUIs run on any OS with minor patches to support quirks, GUI frameworks need a lot of work. TUIs don't need to follow any OS guidelines, cross-platform GUIs always look bad outside of the "main" platform. If you're only targeting macOS/Windows/Gnome/KDE then the solution is easy: just grab a GUI control set and go ham. Then there's remote access: you can spawn an X11 app through X forwarding and have a terrible laggy experience on Linux, you can use RemoteApps on Windows to have a good remote experience (but almost no other platform), you can use VNC to have an awful cross-platform experience, or you can use a TUI and have all the graphs and interactivity you need over a responsive, low-bandwidth connection on any combination of client+server.
- newtonianrules 1mo agoNo.
- likeclockwork 1mo agoNo.
- gr_norm 1mo agoAgree with the rest of the comments here: keep making TUIs. Fully keyboard-driven, compact interfaces that live in my terminal with the rest of my CLI devtools are the best!
- cpach 1mo agoThis makes me curious. What are your favourite TUI applications? The only one I use is Copilot (inside of a VM). ALl other applications I use are GUI/CLI/webapps.
- folkrav 1mo agoNot OP but, I regularly use : - yazi as a file explorer - lazygit for git - tmux/zellij as multiplexers - fzf left and right for a bunch of utils (terminal history, switching between projects in zellij/tmux when working in multi-project workspaces, etc) - neovim as a text editor - glow for markdown reading - currently on pi for my home harness, CC at work I'm probably missing a few but those are the ones I use more or less daily.
- frollogaston 1mo agoVim and Tmux. Does psql count too? I'm not really a fan of TUIs aside from that, most stuff is just CLIs. Claude etc do make sense as TUIs too, but I don't like they way they were implemented. They mess with basic terminal features like copy/paste or scroll when there's no reason to. And they're somehow heavier than actual GUIs.
- sjbzbeiks 1mo agoTabs vs spaces. I’ve always appreciated the positive side of TUIs and appreciated less the positive side of GUIs. I didn’t grow up with a computer at all and in one of my first adult jobs I had to use a TUI at Papa John’s for punching in orders, it was 20x faster than anything I used after it at other restaurants that were GUI driven (keyboard speed wins for me, fit my brain perfectly). I think I learned it in 5 minutes. I was just a normy trying to pay bills. I dunno why we gotta be insulting to people’s preferences, the article is genuinely bad about this.
- jbstack 1mo agoI like TUIs for largely the same reasons as you, but I don't think this is actually a valid criticism of the article. It specifically addresses this by pointing out that you can make your GUI keyboard driven if you want to, so this isn't really an advantage of TUIs per se. It just happens that TUIs tend to be keyboard focussed while GUIs tend to be mouse focussed. But that's a design choice rather than an inherent property of TUIs vs GUIs. I agree that I found the article to be poorly written. Mainly because it takes a long time to make its point. I didn't really need to see a million examples of the author's vibe coded slop before getting to the topic which the title suggested the article would be about.
- notpushkin 1mo ago> I didn't really need to see a million examples of the author's vibe coded slop before getting to the topic which the title suggested the article would be about. Agreed. One would hope the article would go into detail of how to make a great GUI (including tips on how to make sure it’s easy to navigate with a keyboard).
- WhyNotHugo 1mo agoWhat you're comparing is really "keyboard-driven" via "mouse-drive". A GUI can be keyboard-driven and as fast as a TUI. The sad truth is that the status quo for GUIs is absolutely terrible, and most were rushed out and not properly tested to check if they're really usable without a mouse.
- rvz 1mo agoOld man yells at terminal. Who tf cares about what the author who appears to be new to building native desktop apps (and vibe codes them) says about terminal apps? I am not writing my code 3 times for each native platform even for agents and then dealing with signing keys just for it to break on a OS update. Terminal apps for developers survive all of this. The entire article is just a massive rant with woefully weak points. I guess agents really does amplifies both Gell-Mann Amnesia and Dunning-Kruger in others.
- inatreecrown2 1mo agoThe nice thing about TUIs is: they are platform independent. Whereas with SwiftUI apps you are bound to macOS.
- raincole 1mo agoTUI apps are only platform independent if you make them so. GUI apps are only platform independent if you(r framework) make them so. It's a quite common illusion that TUI apps are "automatically" platform independent. Even knowing which terminal emulator intercepts which shortcuts and how they handle width change, control character, mouse events, images, etc and design around them is not a trivial task. On the other hand, making platform independent GUI apps haven't been easier. Just use Electron. Yes, performance blahblah, but thousands of Electron apps work on millions of machines just fine.
- dzikimarian 1mo agoThey don't work fine. I run lot's of TUIs because they are snappier. You may bury this problem with money buying 64gb laptop, but that facade falls as soon as you launch local LLM and discover there's no space left for Spotify.
- raincole 1mo agoBelieve or not, millions of programmers (presumably the most tech-savvy demographic) use VSCode for their daily job.
- dzikimarian 1mo agoBecause it currently has best support for their stack. Being tech-savvy means also you understand, you can't move entire plugin ecosystem of vsc to notepad++ and call it reasonable.
- theultdev 1mo agoYou can't ssh into a swift app.
- himata4113 1mo agoI feel like this is the typical MacOS user stereotype.. Cosmetics over efficiency. No, for the love of god never stop making TUI's.
- rixrax 1mo ago"Q: Son, what is window manager needed for? A: Running multiple terminals on one display."
- laktak 1mo agotmux
- globular-toast 1mo agoI agree with the author, as long as you keep the good bits of TUIs, i.e. keyboard driven and fast. There is absolutely no reason why a GUI shouldn't be strictly better than a TUI. I'll just copy a comment I made about this in another thread: TUIs are just GUIs that use a grid of characters instead of pixels. They are strictly worse than true GUIs, by definition. The only thing I liked TUIs for is running over SSH, but can any of these newer ones really run over SSH with any kind of decent performance anyway? I think people are confused and think they like TUIs because they like them being keyboard driven etc. But this could all be done with a GUI. The other factor is probably just fashion. Similar to how some kids are now listening to music on cassette tapes, which are objectively worse than other media in almost all respects. The less cynical take is it's like vinyl: it does come with compromises but gives us back some of the things we lost over the years. The actual interesting text-based interface is the CLI. I've seen a few examples of TUIs that really should be a CLI and would be much more useful as such.
- rayiner 1mo agoI find it hilarious that Claude is still a piece of shit web app. Claude can just make apps! Why not release native ones? At least the TUI is pretty good.
- raincole 1mo agoOr, perhaps, stop making pomodoro apps, todo list apps with budgeting as their 'unique' killer feature, and damned Markdown viewers. Seriously.
- blipmusic 1mo agoKeep making TUIs. Keep making whatever you want. These "terminals weren't made for that" kind of comments are a bit tiresome. I can run TUIs on machines I only have ssh access to and they are often leaner than the corresponding GUI variant - though perhaps less so with today's fancier TUIs. 'top' has a TUI and isn't exactly new, some interactivity - yes, even in a terminal - can be nice. I'm currently trying to create a GUI version (immediate mode library) of a CLI tool of mine and it's mostly a shit show and three times the work of a data-in-data-out CLI tool. Good learning experience, though. I should note that I don't care whether the GUI version has a "native feel" or not (if you have the time to do so, be my guest), only whether it's functional and reasonably fast, since otherwise that's even more work for an open-source tool. Though, when I undoubtedly make the more interactive TUI version later on (ratatui just seems too nice not to try! :-)) it will probably bring a similar complexity development wise. Then again I'm not into agentic coding at all so maybe the joke's on me. On the other hand, at the moment I need to learn about the data I'm processing, the GUI library/framework I use, and being able to help the people I work with troubleshoot the equipment that collects said data. I'd miss out on most of that if I coded by prompt. Perhaps I'll try later, perhaps not. Keep making TUIs, or GUIs for that matter.
- petesergeant 1mo agoI’m absolutely into agentic coding and you’re still right. A TUI can live easily in a tmux window on a machine I can SSH into from my phone. Also: yes, you can vibecode a UI, but the author’s point reduces to absurd conclusion that you shouldn’t write and distribute any software at all.
- WhyNotHugo 1mo agoMaybe on macOS you have great APIs, libraries and toolkits for making high quality GUIs, but if you're wanting to write open source software or target open source platforms, your options are limited and poor. On the Linux/BSD side, most toolkits are of not great quality, you'll inherit all sorts of subtle bugs and quirky behaviours. Most of the software that's of _great_ quality doesn't use the toolkit, but interfaces with the compositor directly. The effort for developing GUIs under such circumstances is dramatically higher than a TUI, and a TUI is usually "good enough". I really would prefer GUIs for a lot of things. But when a TUI takes a few weeks to make, the equivalent GUI would take a few months to make.
- discreteevent 1mo agoUse Qt or Flutter
- trueno 1mo agoqt is exhausting. flutter is actually awesome these days but the last thing i want to do is commit to dart
- CamperBob2 1mo agoqt is exhausting Good luck exhausting Claude. As long as you keep feeding in quarters, it will keep hacking Qt.
- WhyNotHugo 1mo agoQt is fully of bugs on Wayland, some of which are unfixable because the API makes guarantees that are impossible to uphold. I've reported a few issues upstream where there's no apparent path to fixing them (after years), and have reported countless bugs to applications which are just a bug/incoherency in Qt that can't be fixed. Flutter is an absolute nightmare to install and work with. Even now the few bleeding-edge distributions where it's available are lagging behind many releases because of the pain that it is to maintain it. I don't want that level of pain as a pre-condition to building my software.
- bvrmn 1mo agoIt's funny I'm currently creating a TUI. A mutt like mail client. I didn't have any second though to consider GUI for the project because it's so ridiculous. It's inherently cross-platform (msys under windows). It allows to copy any part of UI. It doesn't require dependencies other than curses.
- mkayokay 1mo ago[dead]
- frou_dh 1mo agoThe typical TUI fan is a nerd with no clue about typography so therefore they don't notice any problem with being shown elements that have no reason to be monospaced in monospace. i.e. ignorance is bliss in the world of typography.
- Gormo 1mo agoPerhaps the average TUI fan is someone who correctly recognizes the negligible relevance of typography in optimizing their computing workflows, and prefers monospace fonts for purely functional reasons, which naturally take precedence over merely aesthetic concerns when working with functional tools. The total abandonment of the form-follows-function principle on the part of purely visual designers, who worry about what software looks like without considering what it's for, has led to 10-15 years of cumulative usability degradation in almost all categories of software. TUI and CLI software remains one of the last bastions of people actually designing interfaces for functionality and usability.
- frou_dh 1mo agoYou can't dismiss typography as irrelevant and trivial aesthetics. It's a whole field encompassing many things including legibility to humans. There's nothing more "functional" than principled crafting of legibility for each UI element. And no, a crude "Just use the same font in a single size for everything" approach is not the endgame for legibility. Just because there have been some crappy industry trends doesn't mean the answer is to turn away and permanently regress to the confines of a terminal emulator.
- Gormo 1mo ago> You can't dismiss typography as irrelevant and trivial aesthetic. Sure I can. That's not to say that it's completely useless and not worthy of any attention at all, just that it is far removed from the primary considerations of software design -- it absolutely is an aesthetic matter that is not an important consideration until functional design is settled.
- mikedd 1mo agoStop telling people what to do :/ Let people enjoy things.
- tim-projects 1mo agoI'm currently building a winamp clone that works over ssh, using textual. So I'll have to hard disagree
- akho 1mo agoA wiki that's somehow not in a browser, a tv remote replacement without obvious keyboard shortcuts, a jupyter lookalike with no editing (as far as I can tell), and two chat interfaces with skills. Good for you, but not like how I use computers.
- lawnchair 1mo ago> Our field has a weird relationship with terminal and command line interfaces. The time has come to re-evaluate it. I like chocolate I like vanilla
- yeodev 1mo agoI think OP is missing the point of TUIs: They kinda work everywhere. While I need to fuck around with a operation systems native UI libraries like WinUI, SwiftUI, GTK, etc. I can just build an app in the terminal and be fine with it running on almost all platforms. I'd take TUI apps over electron apps everytime as long as the UX is good.
- lo0dot0 1mo agoNo. TUIs do not work everywhere. They can break because of terminfo which I really don't want to deal with. I hate wasting time on such configuration issues.
- migueldeicaza 1mo agoPossible, but rare in practice. Nowadays, you are more likely going to struggle with plugging your laptop into a 320Volt outlet than have a terminfo problem.
- swader999 1mo agoIt's interesting going to order auto parts or construction materials. All old tui like console programs if you look at what they use. They are good and quick at them too.
- steve1977 1mo agoTUIs are really the worst of both worlds IMHO. The one advantage that a terminal has, is that commands can be concise and scriptable. But that only really applies to CLI. A TUI is just a poor man emulation of a GUI, without any advantages.
- cerved 1mo agoThe advantage is that you can run it in a terminal... So in tmux, over ssh, etc.
- steve1977 1mo agoWhy or how is that an advantage over proper GUIs via some remote desktop protocol?
- frollogaston 1mo agoLatency. My home setup has a different number of screens vs the single virtual display on the headless workstation/instance. I don't want to deal with a Linux GUI shoved into my Mac via screenshare. Linux screenshare host is finicky in the first place. I do lots of stuff via CLIs anyway. I connect to multiple remote instances at once. All those reasons make it easier to SSH.
- Retr0id 1mo agoStop making TUIs, stop making GUIs, and make more CLIs. Claude can read the help text and efficiently drive it directly, without needing a vision model in the loop. Then I can go outside and do more something more interesting while Claude plays computers without me.
- porridgeraisin 1mo agoClaude (and many models, deepseek, etc) can operate a TUI just fine by reading and sending control codes to a PTY.
- thayne 1mo ago> Nothing is stopping you from designing a dense and economical GUI. Then why isn't it done more often? I suspect part of the reason is that most gui frameworks are not really designed for making dense economical interfaces. > you probably don’t need a user interface on prod. You need a command line interface on prod that I don't need one, but I often want one. Being able to run vim, htop, etc. on servers is quite useful. Also, it isn't just prod servers. It's also nice to run tuis on VMs and containers that don't have access to graphics. > I’m not really building applications for other people to use. I’m building them for me. TUI affordances are an awfully big hit to take to get Linux users of programs I don’t even want to publish. Ok. That's fine. But then why are you trying to convince other people not to make TUIs? If I make an app you find useful, wouldn't you prefer me to make a TUI you can run on your Mac to a linux-only GUI?
- lee_ars 1mo ago> Then why isn't it done more often? Because it tends to require a lot of thought and effort along totally separate engineering pathways than most of the actual functional coding. Good UI design is not easy, and the skills to do it don't directly overlap with good coding skills. It's hard. > I suspect part of the reason is that most gui frameworks are not really designed for making dense economical interfaces. Don't blame the tooling for a broad failing of many developers. It's because constructing a genuinely dense and economical interface for most apps requires considerable time and effort, and frankly, most developers are crap at understanding how users other than themselves use applications. Those that aren't crap at it tend to have worked in large teams with dedicated UX people to help drag them away from their preconceptions.
- thayne 1mo agoBut TUI's are more likely to have dense, economical, keyboard driven interfaces. Part of that may be the target audience, but I also think TUI Frameworks make it easier to make good keyboard navigation and interactions than most GUI frameworks.
- Kon5ole 1mo agoThe aggressive headline is a hook which is what bloggers have to do I guess, but it doesn't need to be polarizing. The argument boils down to "If you made a TUI only because making a native app is hard, then LLM's fix that for you now". Making GUI apps has been way too hard on all platforms since forever. Frankly I think it's gotten worse for 20 years. People started fleeing to web wrappers like Electron to escape the horrors of native UI development. So if that was the reason why you made a TUI, take heed. LLM's can chew through UI frameworks for you. But I solidly believe TUIs are often better than GUIs even if they were equally easy to make. They liberate your app from having to follow the fracture and fashions of GUI's - Liquid glass, Windows 8, SwiftUI, WinUI3, QT, GTK or whatever. A TUI allows muscle memory that you learned on Solaris in the 90s to work fine in windows 11 in 2026.
- Razengan 1mo agoHave there been any attempts at graphical TUIs? As in, using graphics, vectors, but with a fully text-based UI?
- unexpectedtrap 1mo agoPlan 9 is essentially exactly that, which clearly was inspired by the Oberon’s GUI. By the way, does then Emacs count as such? Or maybe you should take a look at Genera, however, I’ve never really tried it. Also the original Metro design as in WP 7/8/8.1 or Windows 8/8.1 relied heavily on the pure text, and the only place populated with a lot of icons was that iconic tiled start screen, although this is probably not what you mean.
- greatgib 1mo ago> Next: TUIs work over SSH connections. If you need a user interface on prod, it’s going to be a TUI. With X based apps, you can run GUI apps through SSH. That was all the rage for light remote access to resource hungry desktop app a few decades ago... But that being said, in my opinion, a few limited TUI apps are useful, but most of them nowadays are young "cool kids" that wants to be cool by using "terminal apps" without really having really embraced the spirit of the terminal and commands. For them, using GUI apps would look like a basic computer user and not an expert nerd. The magic of the terminal, is not that you run things in almost black and white with low graphics, but that you were supposed to use "simple" commands that you can scripts and pipe one through each others at will.
- voodooEntity 1mo agoTbh in a time where more and more applications are shipped as vibecoded electron based bloated bug-collections that are slow and take stupid amounts of resources i'd rather have even more TUI's than less.....
- bentt 1mo agoTUIs are by definition keyboard first. TUIs are a creative constraint. TUIs are an invitation for programmers. TUIs are doing "less" to render. TUIs don't need to be "responsive". Hello World is TUI.
- yoz-y 1mo agoMake guis where guis make sense. I, for one, like to stay in my tmux session as much as possible. And sure, for programs for one go ham on the ui.
- bitwize 1mo agoGoing into this article my attitude was "don't tell me what to do!" but I kind of see his point. Back in the late 1980s, there was no question—the Mac changed everything, and everyone agreed that graphical was the superior interface. But we in the Unix world were slow to convert fully, because of a couple of problems: * designing GUIs is hard, especially for programmers; * writing GUI code is hard (and often tedious). So good GUI apps really came from teams of elite designers and developers. The best ones all worked for Apple. There was an acceptable second tier that all came from major companies. If you wanted to write a custom one-off tool for yourself, however, you'd be in for some pain and the result would be jank. But LLMs solve both problems. Point Claude at a description and some mockups of an app, and it will give you that app, or at least a slick-looking prototype that is suitable for your use if not the wider market's. So we no longer have an excuse. ALL our apps should be graphical, because creating graphical apps is now easy.
- Gormo 1mo ago> Back in the late 1980s, there was no question—the Mac changed everything, and everyone agreed that graphical was the superior interface. No, they didn't. The Mac's GUI benefitted in certain specific applications, like DTP, early on, but the Mac was an also-ran for most serious productive work for a very long time, and even when GUIs became standard in the PC ecosystem, it wasn't until the late '90s that productivity apps decisively moved from the DOS-based TUI world to Windows GUI applications. > So good GUI apps really came from teams of elite designers and developers. The best ones all worked for Apple. The folks who actually managed to build interface paradigms that successfully reconciled complex business functionality with sufficiently easy-to-master GUIs worked mainly for IBM and Microsoft. The CUA paradigm was the winner here. People seem to forget that Apple had next to zero penetration into the business computing market, and nearly went bankrupt, back in the '90s.
- ewwefwef 1mo agoIf your program use slow internet like tui I cant write tui program. no problem.
- matheusmoreira 1mo agoNo, thanks. I don't want a mere "user" interface, I want a programmer's interface. I don't like the command line because I'm a "unix nerd", I like it because it lets me rapidly cook up little programs and execute them. Here's an example I just pulled out of my shell history: c=3afba1a; reset; laptop "virtdev ssh liblinux -- git -C liblinux format-patch -1 ${c} --stdout" | tee /dev/tty | termux-clipboard-set This huge oneliner clears the screen, logs into my laptop via ssh, then logs into my development virtual machine, then generates a patch from the specified commit, and this data gets piped into my Termux terminal and my phone's clipboard. Then I paste it into the ChatGPT app for code review. I didn't need to think to write this, I just wrote it right there in the terminal using the shell's line editor, just because I needed it, and it completely solved my problem. It's as easy as pressing up on keyboard now, and I can easily turn it into a script if needed. Nobody had to bend over backwards to add monstruous features to the apps to accomodate me. I knew what my computer needed to do, and I made it do it. In my opinion we need more of this, not less. More unix and less iphones.
- embedding-shape 1mo agoI agree, authors whole "The time has come to re-evaluate terminal and command line interfaces." is weird, if anything we should be moving MORE towards terminal and command line usage. Another example from recent history, I just wanted a easy way to mount all connected drives, so whipped up: lsblk -l | grep -i part | cut -d " " -f 1 | xargs -I{} sudo mount -m /dev/{} /mnt/{} # automount_all How would you even approach this with a GUI? You'd need something like Automator or whatever is called on macOS, then manually pipe GUI elements together (or some other way?), and finally there is no automated way of actually testing that it works, so once it breaks because the inevitable OS upgrade, you'll need to manually fix it. Then whatever solution you came up with or used, is almost never reusable for other things. Meanwhile, a shell alias/function just sits there, easy to see what it does, can control anything in your computer, GUI or not (one way or another), lets you build up your own "database" of tools that all compose together (again one way or another) and finally is easy to put under automated testing.
- croes 1mo ago
- xlii 1mo agoMore TUIs, and with eye candies too! :) Since I wrote my own terminal multiplexer that puts terminals on infinite zoomable canvas [0] and I just can't get enough of putting weird stuff like asciiquarium, cmatrix or tty-clock all around (tried peaclock but it's slightly too fiddly for my taste). There are fun projects just to run in TUIs like astroterm or weathr, but I'd say that the space is still open to terminal toys. The only problem I have with TUIs is that they're boring after a while but something that can be solved with often theme switching. [0]: https://race-term.com https://race-term.com (commercial)
- imrebuild 1mo ago"But remember: I’m not really building applications for other people to use. I’m building them for me." You are free to build anything you like, and whatever you build won't affect me at all.
- krzyk 1mo agoBenefit of TUIs is that sometimes they are extension of CLI. Sometimes I can use `du` to check what uses so much space, but sometimes ncdu is better for me. And the best part - I can use both when I ssh to another machine, using the same command line, without thought. While GUIs need added thought, to switch from CLI to GUI on the remote one would need to use a different interface, or have X11 forwarding on (which is also a good option) and x11 libs on the other side. Or use some other connectivity. ssh is simple, works on most servers I have access to.
- vidarh 1mo ago> And the best part - I can use both when I ssh to another machine, Exactly. I'm currently on vacation and has checked in on long running Claude Code sessions over ssh every few days. I could have used X11 forwarding or VNC if I needed a GUI app, but the connection I'm on is currently slow and unstable, and using text mode has been far more palatable, especially since I can use tmux (or in the case of Claude Code, just using "claude agents" and let it background the sessions itself).
- Asooka 1mo agoIf writing a GUI was as easy and stable as writing a TUI, yeah we should write more GUIs. I can run practically any ancient TUI program on a terminal emulator, but running a GUI program that uses an older version of GTK means going through dependency hell to compile and install all the old library versions. If they even compile with the new GCC... I really wish we had a standard way to spawn a webview (or similar) and connect stdin/out to it.
- stego-tech 1mo agoJust adding in my perspective: TUIs, at least to me and some friends in my circles, do something that native applications don’t: demand focus from the user. Sure, modern terminals and TTY environments have visual tabs and virtual terminals that let you quickly toggle between multiple apps, and you can of course manually code your screen to split apps across a single “window” if you really want to get into the guts of things. But for several folks in my close circles (myself included), the fact that each TUI occupies an entire screen by default, forces us to focus on what’s going on and what tasks we’re trying to accomplish in a way native UIs don’t. On the desktop I can flit between Discord and Telegram and multiple games and several Firefox windows full of tabs and the video encode I’m working on and hey did that bank transaction go through let’s check my email except UGH music streaming went off the rails so let me go back to my client and- You get the idea. For folks who lack the neurotransmitters to maintain consistent focus or wave off distractions, a terminal environment acts as an accessibility device in and of itself. btop on 1, irssi on 2, Hermes (Qwen 35B) on 3, with 4 as my primary workspace and 5 as a fallback. Simple. Clean. Efficient. Lightweight. I generally concur with the author that we should be “summoning” (I love that word for reasons that deserve their own essay/comment) more native UI apps that are as information-dense as, well, Bloomberg Terminal. There’s no reason we can’t build something as powerful and focused for the everyman for, say, inventory collections, or K8s constructs, or network architecture, all in a native UI. There’s nothing wrong with the GUI, only that at some point we let ourselves get suckered for the narrative that GUIs have to be easy, simple, and opaque, as opposed to transparent and (logically) complex. We can and should build GUIs that flow logically like the commands they’re executing behind the scenes; hell, we should be able to open a console log of every action we took in the GUI and the associated command(s) it executed, so we can better learn to transpose from GUI to CLI ourselves and build more capable or complex automations. GUI isn’t bad. TUI isn’t bad. What’s bad is presuming one or the other is superior to everything (or for everyone) else, or worse, assuming one cannot function in a given way comparable or equivalent to the other.
- stianhoiland 1mo agoYou can't tell someone who doesn't like the command line why it's so awesome. EDIT > CLIs have purposes for which they’re irreplaceable. Building a CLI is almost always a good idea. Building a TUI almost never is. Oh, right. I can see that, but I go the other way: When I have a CLI, don't give me GUIs; give me files. Actually, just give me files and daemons. I'll do the rest, thank you!
- Decabytes 1mo agoIsn’t the GUI version of a TUI just an Electron app?
- avmich 1mo agoTUIs are good for users, because they don't require using mouse as much - I didn't see this argument covered.
- ewy1 1mo agothis blog post is mostly shadowboxing and showing off their llm-made software; kind of disappointing
- z3c0 1mo agoYeah, the holier-than-thou vibe-coder is a new cliche I'm not enjoying.
- mcapodici 1mo agoTUIs allow you to have infinitely many running in tmux and also work over ssh so there is that.
- lo0dot0 1mo agoActual GUIs also work over the network, either as a web service rendered in the browser or a desktop app with a backend network connection.
- singpolyma3 1mo agoTUIs are just a kind of GUI. And rarely a particularly good kind
- kelvinjps10 1mo agobuilt my first serious Mac application This the first thing if they stop making tuis we linhx users will get slow electron apps I prefer a tui over an eletron app or even worse not getting any apps at all
- ReactiveJelly 1mo agoWow that's a lot of snark
- seanclayton 1mo agoAh, people who build and enjoy TUIs have never built a GUI. What a wonderful assumption to make about people :)
- rafram 1mo agoThe post doesn’t say that.
- lo0dot0 1mo ago> shorthand inputs that make common operations (like “take the gradient of this expression”) quick to type There's a shorthand that derives from the Phoenician string instrument : nabla . Latex has it as \nabla
- JodieBenitez 1mo ago> Stop Making TUIs No, I don't think I will :) It's great for admin tools, alongside CLIs. It's portable, it's fast, it's discoverable, it has zero bullshit effects, it's as secure as my shell, it's efficient. And what is this point about agents making it easy to generate GUIs ? They are equally good (if not better) at generating TUIs using any of the great frameworks for this.
- rafram 1mo ago> It's portable Not really? > it's fast It's not - most terminals are ridiculously slow, and each TUI framework requires its own hacks to do partial "repaints" using ANSI escapes, because clearing and redrawing the entire screen (yes, just a screen of monospace text!) is unworkable. > it's discoverable With no ergonomic way to build a menu bar, display hints/tooltips, or even support modified keyboard shortcuts well across platforms? I don’t think it is. > it's as secure as my shell Extraordinarily insecure, in other words. > it's efficient As above.
- JodieBenitez 1mo ago> Not really? It is, everywhere I need it. Never had to change a single line across the various OS/Terms I used. Can't say the same for web apps or even so-called cross-platform GUIs. Been there, done that. > It's not - most terminals are ridiculously slow, and each TUI framework requires its own hacks to do partial "repaints" using ANSI escapes, because clearing and redrawing the entire screen (yes, just a screen of monospace text!) is unworkable. I don't care about these details. I care about the app feeling snappy and responsive. It sure does. Again, I wish it was the case for GUIs. > With no ergonomic way to build a menu bar, display hints/tooltips, or even support modified keyboard shortcuts well across platforms? I don’t think it is. Discoverable as in "you can start the app and figure it out along the way without prior documentation reading". And we do have hints, menus and what not. Trying to nitpick ? > Extraordinarily insecure, in other words. Are you implying the app running from my ssh session is more exposed than a web app or a API endpoint for a GUI app ? Like all things, TUI is not a panacea and has its place.
- hadlock 1mo ago
- shevy-java 1mo ago> Which is why I would never hand-write this program. Instead, I summoned it. AI slop spam. I don't want to use those AI sloppers. They often are not based on any intelligent design. A good counter example is, in my opinion, htop. Many people use it, despite its ncurses-nature. It simply does what it wants to do well: give an overview over resource usage. Yes, AI slop can spam-generate a clone, but why would I want to use that over the real thing? It makes no sense. > I’m not packaging this application up. If you want it, just screenshot this section of the post and give it to Claude. It’ll build something useful. I don't want this spam slop anyway, but notice that the author became super-lazy. Rather than providing source code, he tells you to copy/clone it via Claude spam. So this human is now too lazy to do anything useful. Skynet won. He has been AI slop spam absorbed, without even noticing. Just like in the movie Invasion of the body snatcher (great movie, both the original and the first remake, though I liked the remake more, because Sutherland was in his prime back then). The author continues to show more AI slop spam created useless things. None of which is interesting. I am surprised people now blog about boring AI created software and call it engineering. So, nah, don't stop making TUIs. Instead, design them better. Having said that, I think ncurses is the wrong tool in general. We need to be able to design both TUIs and GUIs in one go without barriers. Every time I have to use ncurses, I do indeed curse.
- brazukadev 1mo ago> I don't want this spam slop anyway, but notice that the author became super-lazy. Rather than providing source code, he tells you to copy/clone it via Claude spam. So this human is now too lazy to do anything useful. Skynet won. He has been AI slop spam absorbed, without even noticing. and it "worked" - the audience he found for this is bigger than the previous one. So this continues until the AI psychosis become so high it start to turn people off.
- never_inline 1mo ago> I’m not packaging this application up. If you want it, just screenshot this section of the post and give it to Claude. It’ll build something useful. You see where I’m going with this. This pretense that the entire value of source code is the "spec" / "requirement" is alarming. The value of the code is how well-formed the spec is + how well tested it is in the real world. So prompt / mockup cannot replace code.
- rhplus 1mo agoDon’t forget operations and maintenance. You can have a box of vibe coded custom tools and services, but they’re all going to slowly rot as the underlying dependencies - network APIs, platform APIs, auth handshakes, reverse engineered file & DB schemas - change their behaviors and availability. Sure, an LLM can fix it, but that assumes your original spec sufficiently described the user requirements and wasn’t just a transcript of the original session trying to figure out how how to interface with all those dependencies in the first place.
- RunSet 1mo agoI did see where they were going and that was when I closed the tab.
- archonis 1mo ago>> Because I assume that agents work better with a filesystem to grovel What the what now?
- plaidwombat 1mo agoSorry, we Morlocks actually prefer the CLI to the TUI.
- migueldeicaza 1mo agoMake me
- m0llusk 1mo agoText is an extremely information dense medium. It makes sense for user interfaces to be centered around text. This keeps the focus on the data and its transformation.
- guax 1mo agoNo
- dolmen 1mo agoAnother trend is to bring graphical features into terminal emulators thanks to the initial protocol and implementation work in Kitty with the Kitty Graphics Protocol. https://sw.kovidgoyal.net/kitty/graphics-protocol/ https://sw.kovidgoyal.net/kitty/graphics-protocol/ And now libghostty has caught up with a full implementation of the protocol in a second terminal emulator. I guess that mitchellh has plans for use in Superlogical... https://hachyderm.io/@mitchellh/117135178412268410 https://hachyderm.io/@mitchellh/117135178412268410
- tescreal 1mo agoCounter proposal: stop making gui, ONLY make TUI. + seamless cli integration + network portable + graphics (!!) with modern emulators + always themable + scriptable + works with any navigation modality + you can copy & paste entire segments of your window easily + easy to consistently theme + did i mention entirely network/os transparent? + blazing fast tongue-in-cheeck mostly, but i assure tfa, the tui serves useful functions. i spend >80% of my time in terminal, and having a pane to do some task a gui would otherwise be needed for is a sheer blessing. being able to essentially move my session to a laptop is wonderful. no mucking with screen sizes or weird X11 wonkery (if you still use x11). what would blow my socks clean off is a tui/gui+gui/tui backend pair so we can have our tui and you can gui it tooie.
- bhaak 1mo agoEmacs does that. If you run an emacs server you can connect to it with an emacs in TTY and one in GUI mode.
- tescreal 1mo agoEmacs does everything. I want everything to be more like Emacs
- DonHopkins 1mo agoI know, me too, which is why I named my cat Emacs! He's awesome.
- amrit3128 1mo agoWith ghostel, the terminal experience inside emacs has become fantastic. Vterm was acceptable, but still too slow for me. Combine them with packages such as ultra scroll and emacs reader, I'm having.ore fun than ever in emacs
- nmz 1mo agohttps://arcan-fe.com/ https://arcan-fe.com/ proves you can have all of that and more without having an archaic TUI.
- bayindirh 1mo agoSorry, no. I don't want to forward a whole desktop environment just because I want to use a small application I have written for myself. TUIs are much more portable, easier on eyes, can be information dense, and resistant to lassiez-faire UI library changes on platforms. They don't need GPUs to render, megabytes of RAM to run, great amounts of bandwidth to access from afar. I'll write a library for the functionality, and will slap a TUI on top. You want a GUI, write it yourself. Everything is GPLv3 licensed. You can do whatever you want as long as you respect the license.
- fschuett 1mo ago> They don't need GPUs to render, megabytes of RAM to run They do these days, because you still need a terminal emulator and those are then basically GUIs in themselves. Ain't the 80s anymore :^)
- bayindirh 1mo agoI still have quite a few systems which doesn't have a GUI attached to it, and I access them via a pure console. Most, if not all these systems have Matrox G200 or similar low end 2D integrated graphics which are just there to see the text during boot, nothing else. I sometimes SSH from these systems to my own systems to use TUI or CLI tools. If I want to go a step further. We have a couple of real VT320s. Working at a datacenter has it perks, it seems. :^)
- jimmaswell 1mo ago> We have a couple of real VT320s. That's awesome, I have one too and I fell in love with it. I fixed up the old gif320 program to run properly on modern machines a while ago and made a C# port too: https://github.com/ldyeax/gif320 https://github.com/ldyeax/gif320 https://github.com/ldyeax/Gif320Sharp/ https://github.com/ldyeax/Gif320Sharp/ How do you deal with modern programs not respecting TERM/LANG capabilities? I found even using man pages on my machine would sometimes result in the terminal getting caught up on some invalid byte sequence emitted from some unicode that snuck its way through or such. I ended up writing a program I called VT320 Translator, or vt320t for the name of the binary, which in broad strokes runs your target program in a background terminal and sends curated updates to the VT320 while passing through keyboard input. (You can kind of approximate this with just screen and some other things but it doesn't end up being very good IME) This lets me do some neat things like translate unicode characters into DRCS (Dynamically Redefined Character Set) sequences that you can actually see on the VT320, use optimized heuristics for screen updates tuned to the exact hardware, etc. At the core is a vtparse-based VT320 emulator that strives to be as accurate as possible with an accompanying diff generator from one emulator state to another. If you're interested I could get into more of what I've done here and even get the code onto my github - it's been private for a while because it's being used in an upcoming game demo but I could easily separate out the non-game-related parts that make up vt320t.
- cush 1mo agoI wonder if devs are flocking to TUIs to gatekeep against normies building apps
- DonHopkins 1mo agoIn the age of graphical user interfaces, direct manipulation, info visualization, WebGPU in the browser, and frontier AI, it seems ridiculous to have a VT100 escape code interpreter between you and your LLM. Like Brooke Shields, I'd rather nothing comes between me and my LLMs.
- refsab 1mo agoI think I'll keep making TUIs but thanks. Easier to test too. Try testing your beautiful claude design React app end to end
- arthurfirst 1mo agoJust like MCP is for Desktop users and useless otherwise -- GUIs are a solution to a created problem.. of users not being able to read and write very well because they don't practice. Terminal, coding, and even prompt writing skills are language skills. If you cannot use a terminal properly you are basically an appliance user. Like a toaster operator. TUIs are not for everyone by design.
- enthus1ast_ 1mo agoFrom tui i can copy (all) text and run it over ssh, only a good image protocol is missing for me
- the__alchemist 1mo agoThree broad notes: - I'm team GUI! The author outline elegantly why. Sometimes I put command-line-like things in the GUI; I generally view it as a superset of CLI, with vastly richer capabilities. This is kind of interesting in the bioinformatics/structural bio space, which I feel is inherently visual, and benefits from 2d layouts. Most of the tools are CLI and based in I/O of stdout and text-based files. I am taking a different direction! > Back in 1999, Neal Stephenson wrote an essay about command line interfaces that set the field of human-computer interaction back about 20 years. In it, he depicts the priesthood of Unix nerds wielding CLIs as powerful Morlocks, holding the entire computing industry on their shoulders. The Eloi use GUIs like Microsoft Word. Because this is high-test fan-service, “In The Beginning Was The Command Line” has become one of our field’s sacred texts, despite very little of it holding up 25 years later. We should not take Sci-Fi and creative plot devices as predictions for the future. They can be inspirations and motivations for your own creativity, if tempered by realistic expectations and discipline. Neal Stephenson is especially prescient (Certain concepts from Fall; or Dodge in Hell and Anathem are hitting home strongly right now!). He spins vibrant, speculative yarns, mixing concepts, and estimating trajectories. The story referenced he is one that's in particular easy to see what parts did and didn't pan out. (And what Neal's more recent reflections on it say) I think there is a bit of cultural identity (Which we are genetically inclined to insert in all sorts of places!) going on. There is a certain cyberpunk fun in SSHing a terminal, pipeling stdout/in together, and Viming. I suspect there is a high overlap between people for whom Linux is part of their identity, TUI use is as well. I.e, it's not about a practical weighing of merits; standard identity/tribal-based choices. FOr use of TUI as a general file browser/command-executor... I've made my own. It's a GUI, and has built-in terminal for executing commands, with a visual file browser. And most importantly: Shortcuts to execute commonly-used workflows, history, bookmarks etc. All of which I feel like are glaring things missing from standard terminals. (PS, Bash etc). And having a terminal as one part of a multi-window program feels like a good use of my screen space!
- breppp 1mo agoTUI and Rust surged back in popularity when programmers through frameworks became detached from the actual work and needing to differentiate from all others in the even playing field. It's like turntables to Hipsters. Now with LLMs it is only going to get worse.
- novoreorx 1mo agoBit of an overstatement, but I agree with part of it: - A lot of TUIs that run on your own machine and have a mature GUI alternative are indeed not necessary. I once tried to replace Spotify with ncspot, which was exactly falling into the "TUI is more advanced" trap. - The real target of this article is people who treat TUI as a kind of identity, not people who have to work in a terminal because of their job and therefore have plenty of good reasons to use TUIs. But the title and the general tone are still too clickbaity, which is kind of annoying. In reality, apart from a small portion of TUIs that were created just to follow the trend and clearly have better GUI alternatives, most TUIs are really just side tools that grow out of one premise that we have to work in the terminal. And even those flashy TUI tools still make life easier for people who work in a terminal. If you prefer GUIs, fine, you don't have to use them, but that doesn't mean they have no users or no value.
- kccqzy 1mo ago> The real target of this article is people who treat TUI as a kind of identity That’s exactly what I thought too when I read the article. When the author mentioned the essay In the Beginning Was the Command Line I instantly knew it. I thought to myself the audience of the article must be the people who had read the essay and allowed it to influence their taste, as well as the people who might not have read the essay but conversed with people who did.
- deleted 1mo ago[deleted]
- the_hoser 1mo agoNever.
- israrkhan 1mo agoTUIs, work on several operating systems. I use same set of apps across Mac, windows and Linux. You can use them remotely over SSH connections, and they can survive disconects (within tmux). No VNC, or X11 forwarding needed. They take less memory. compare vscode vs nvim. Super fast to launch. They can integrate with other TUIs and shell apps, shell-scripts, pipes and lastly they do not contain Ads. lol
- ngvrnd 1mo agouser interfaces are for users. people who deal with words may prefer an advanced TUI. Others may find graphical interfaces more useful. describe, don't prescribe. let a thousand flowers bloom.
- felooboolooomba 1mo agoStop telling me what to do.
- sgt 1mo agoOh dear, the comments here are a bit disturbing and hilarious. The "Linux" mindset simply does not comprehend that proper UI's can still be made. Maybe that also includes the Windows mindset these days. Most of us macOS users never rejected TUI's, but we always had world class GUI's.
- alksdeef 1mo ago[flagged]
- omnibrain 1mo agoYes, stop making TUIs. Make GUIs in Terminals! It’s ridiculous how far we have fallen behind the Terminal GUIs from the early 90ies. Look at the Turbo Pascal IDE and business apps built with it. Windows, window management, scrolling in windows, rich dialogs. Everything there. While many modern TUIs are just lists with numbers you can select. Everything is pretty rudimentary I was missing a real terminal GUI library for some software I built. The rudimentary libraries did not work for me. That‘s why I took Free Vision (the Turbo Vision derivative for Free Pascal) and ported it with the help of Claude Code over to modern Delphi, then modernised the object system and added lots of features and from there we ported it to go. There are still lots of bugs and oversights (some caused by me not really knowing how original TV worked) that I fix as I go along using it for real projects. https://github.com/oldwired/fv-delphi-modern https://github.com/oldwired/fv-delphi-modern https://github.com/oldwired/fv-go https://github.com/oldwired/fv-go
- vivzkestrel 1mo agostop making your blog take 20% width on my 4k monitor
- willjp 1mo agoTUIs work where I do. I don't want to juggle another window unless I need to. Tmux gives me better ways of organizing my work than most display managers. Most of the useful things I do end up calling other shell commands, and it's nice having terminal right there. Ctrl-t / fg are also uniquely powerful. UIs are also useful for information that is best represented in a UI. keep using those too. You can bend each to be more similar to the other, and that's good too! Sometimes there is a good use case for that.
- dekdrop 1mo agoTUIs are popular because Unix didn't have graphics. Plan9 had graphics but didn't catch on. Making us living in an emulated terminal device.
- yipinwong 1mo agoThe site layout is great for reading, so props to the author. I understand the sentiment that TUIs is not as accessible, sucks to use. I still do not like the fact that we should "stop making TUIs" altogether. Let me give you an example from my carpenter friend in Cananda. He has a saw (TUI) and electric one (GUI). He uses the saw in diff ways than his electric one. He sometimes extend the saw by attaching it to end of a long stick to cut tree branches he cannot reach. He can do it with the eletric saw but requires much more effort. But if he needs to cut down the tree, he uses the electric one, and sometimes finish off (trim) with the regular saw (so the tree falls in certain direction). The gist is, TUIs can be used to do things quick and dirty, and easy/cheap to make/buy. GUI even with AIs, still not as cheap as TUIs to build. TUIs has a different usage in our field, where it's used more for automation/piping. If you have GUI, it's hard to pull it off unless you build the functionality (which coulda been a command in TUI), and expose it via GUI. the Authros is focused more on consumer side than builder side. With AIs we will all be builders using AIs. Lastly, shooting down people building TUIs is saying, no more innovations, by building upon other's TUI inspirations.
- scotty79 1mo agoTUIs are great as a layer above bunch of commands with too many commandline parameters and flags. For everything else .. no, thank you.
- pkulak 1mo agoAnd the very first app example is a Mac-only markdown viewer. If only it was a TUI; then I could try it out and partake in this conversation!
- jameshart 1mo agoBecause the author wanted the ability to open and browse markdown files when you double click them on a Mac. How would a TUI better serve that purpose? There's more on this here: https://sockpuppet.org/blog/2026/05/12/emacsification/ https://sockpuppet.org/blog/2026/05/12/emacsification/
- pjmlp 1mo agoSome folks love to live in the golden age of CP/M, MS-DOS, and timesharing green and amber terminals, for whatever reason. I was alive back then already, and was a relief to finally be able to afford GUI powered computers.
- letmehelpyou 1mo ago[dead]
- pjmlp 1mo agoThe golden age was with Amiga, Atari ST and similar systems. Now everyone ships Electron crap, and then as alternative we are back into the 70's, because they cannot code anything else.
- jjice 1mo agoThe day we get a truly good, native binding, resource efficient, cross platform UI framework, then I will agree wholeheartedly. I love a GUI in many cases! But if I'm building something, I personally want it across Linux and MacOS at least (personal and work, respectively). TUI answers that problem quickly, easily, effectively, and efficiently. I'm actually amazed that we have never gotten to a really good UI framework that is cross platform. I really just want something like SwiftUI that's truly cross platform, personally. There are a million arguments to say that we do have cross platform GUIs, but all of them lack in some major way.
- dccoolgai 1mo ago"a really good UI framework that is cross platform." Just curious re: the obvious example of "The Web" - do you consider it "not good" or "not really a cross-platform UI framework" as such?
- jjice 1mo agoThe web is excellent! It loses lots of native abilities though, even as we move forward with file system and USB web APIs. It's also generally resource intensive, compared to a solid native UI. I would say that, if you don't need more native control, the web is the best cross platform interface we have, by far. But not having those system API really starts to limit it for certain tasks IMO. When I just want a graphical utility, I build a single HTML file that includes all of the assets required, and all of the JavaScript so I can run it offline (but generally host them on my site so I can get to them from anywhere). These tools are generally text in and text out that I want a GUI representation for and don't need in the terminal.
- jeremyjh 1mo agoMaybe you should re-examine your priors, because reality is sending you a lot of data that refutes them. If it were feasible to do this, I think it would be done by now. There are a lot of reasons it is very difficult, and while there may be no reason it is impossible, something can become practically impossible when you pile constraint after constraint on it. One example - wxWidgets exist, and wxDart exist, but getting to something half as usable as Flutter from there is almost impossible. I defy you to even build a layout engine that works on all three platforms. After that, you still have to find answers for theming, spacing, responsive behavior, component composition, inspection/debugging, hot reload, accessibility conventions and on and on.
- stdatomic 1mo agoSometimes I wonder if people are just writing these for the sake of having written something.
- yayitswei 1mo agoOne point for TUIs I haven't seen mentioned: they're faster for coding agents to iterate on. No need for screenshots or computer use. Agents have made GUIs cheap, but have made TUIs even cheaper, both to build and verify.
- ncr100 1mo agoPersonally, I don't like being told what to do in a title. And personally, my hackles raise when that's combined with in-group jargon. Intentional or not, the rhetorical style of the title, plus the subtitle opening on the word "weird" before it's defined, has an ostracizing effect on me. I guess that it could have an ostracizing effect on others, though I can only speak for myself.
- stephc_int13 1mo agoTUI are often inferior to GUI from a user perspective, but not necessarily by much. On the other hand, they are easier to build in a cross platform manner. Linux is probably the most difficult platform to build GUI for, because of all the fragmentation, X11, Wayland, all the different flavors of GUI toolkits, driver issues, window managers issues, font issues etc. TUI are a bit like web apps in that regard, using the terminal instead of a browser to abstract the platform.
- jimmydoe 1mo ago> a user perspective a lot of boomer and millennial dev users love TUI bc that's what they grew up with. part of A\'s early success is hit that sweet spot and triggered a culture shift late last year. as those age group phasing out, web ui will be dominant
- beardedwizard 1mo agoBut TUIs make me feel smart, and my work feel important and esoteric.
- calvinmorrison 1mo agohow about we stop making single window UIs
- ricardobeat 1mo agoHard disagree. Make more TUIs! TUIs have downsides like accessibility, poor mouse support, but work really well if you focus on keyboard input. It is a better/faster input mode to begin with, especially for power users, but also for average people; you'd be surprised at how much more user-friendly an arrow-keys driven UI can be vs modern web interfaces. I've been building my own TUI framework [1] and getting amazing results. Good TUIs are more of a GUI than a dumb text terminal. If we had a cross-platform usable GUI framework, and more consistency across OSes, the story would be different. [1] https://github.com/ricardobeat/milktea https://github.com/ricardobeat/milktea
- a2ff6eeb0 1mo agoGUI programs can also use the keyboard.
- boredatoms 1mo agoA lot of us do the vast majority of our non-browser work on remote systems. GUIs are objectively bad for this
- rgzz 1mo agoWell in plan 9 they work fine remotely so I wouldn't say they're objectively bad.
- bmitc 1mo agoTerminal programs are GUIs. So you are using a GUI to access those remote systems. Thus, there's no reason why another GUI couldn't do the same. Everyone always acts like GUIs couldn't possibly make HTTP requests, interact over TCP or WebSockets, or do other remote communication. But they're actually, more often than not, more well suited for that than browsers for specific use cases, which are the use cases where you'd desire a devoted GUI.
- wormius 1mo agoI'll stick with plain old TTY Consoles, thank you.
- inevletter 1mo agoHonestly I would stop making TUIs if we had a better alternative to Electron/Tauri for multi-platform apps that run natively. I will keep building TUIs because they are the easiest way to reach support all OSes.
- mihaic 1mo agoThe people that keep arguing for TUIs for everything seem like religious fundamentalists that can't be convinced with any argument that user interfaces should be about the user, and need to adapt to the task at hand. Every time I use Claude Code, I'm wondering why the hell I'm regressing to the level of a machine. I paste an image that I want fixed, and I don't see the preview of it. I can't cut or edit text somewhere in the middle of a long sentence like in a normal user interface. I can't visualize any helpful graphics, not even Latex. I'm forced to interface like a machine when I'm a human being. Why can't developers understanding that GUIs and TUIs both have their usage, it just depends on the task? I'm fine to use vim over ssh into a server, just don't force me to edit fine typography with it.
- voidnullvalue 1mo agoClaude Code should be heavily sandboxed to be used safely. Are you advocating requiring a gfx stack in the sandbox just to use Claude Code?
- starik36 1mo agoI had the same feeling. I've since been using Claude Desktop and I have the convenience of the UI with Claude Code built right in. It even supports the same commands.
- zahlman 1mo ago> The people that keep arguing for TUIs… Every time I use Claude Code As far as I can tell, practically everyone arguing for TUIs thinks Claude Code is a horrible example.
- hadlock 1mo agoMacOS: what is my purpose Me: you exist so I can launch iTerm2, Chrome, and VS Code MacOS: oh, my god I can't ever imagine using walled garden graphics api in 2026. Particularly for work tooling
- qiine 1mo agonuuu
- cushychicken 1mo agoFunnily enough I wrote a similar blog about this in the era preceding LLM assistance. I’m with Tom on a lot of what he says. This is a nice reminder to take another shot at this. https://cushychicken.github.io/python-guis-for-heretics/ https://cushychicken.github.io/python-guis-for-heretics/
- tptacek 1mo agoI don't like TUIs. And, having built several, and then having the experience of building meaningfully complex native UI for the first time in my career, I couldn't help noticing how much of the tedious work of putting a TUI together, even with a good framework, is already solved (and solved well) by the native framework. TUIs force you to implement things native UI developers aren't supposed to fuck with at all. That was radicalizing for me. So one reason to write this post is just to send a bulletin to developers like me, for whom it wouldn't have even occurred to build native UI before. Native UI is now a thoroughly solved problem. All "off the rack" user interface is solved now. But that's not the biggest thing happening here. What's really going to destabilize us is what this says about computer usage and computer programming. When I was a little kid, in the mid-1980s, I imagined all sorts of new different things I could do with a computer, if we ever got one besides the ZX81 clone that plugged into our TV. I had to grow up to become a computer programmer to learn that one doesn't simply tell a computer to do new things, that there's an elaborate ritual to build anything useful, and it takes years to get comfortable with those rituals. And like most other programmers, and really craftspeople of all stripes, I came to appreciate the rituals and the specialized knowledge. They're part of my identity, so I tend not to question them. But there's always been this dividing line between computer users and computer programmers. It's rarely disrupted. It happened once with spreadsheets (our profession has a sort of Kubler-Ross thing going on with the fact that Excel formulae are the world's most important programming language), and maybe just a little bit with HTML in the early web. Other than that, we've all been pretty siloed. That's obviously about to change, in a more significant way than it ever has before. Computers are going to work the way I assumed they did when I was 7. The line between programmer and power user is going to dissolve. I'm not interested in what that does to our profession or the question of whether or not there will always be a need for serious software craft or engineering or whatnot. Totally valid question, but not where I'm coming from. I'm interested in what systems look like in this new world we're heading into. What is an operating system in a world where most applications are summoned by the person who's going to use them? What even is an application at that point? What are the interface idioms when we're truly no longer constrained by text inputs to compilers and program building tools? Does everything look more like Smalltalk? Like a Lisp Machine? Or like something weirder? It's gotta be something. It can't possibly be the case that the shape of computing we all count on today is going to survive the next 15 years; it'd be like driving steam-powered automobiles. That's the fun question.
- zahlman 1mo ago> I’m not packaging this application up. If you want it, just screenshot this section of the post and give it to Claude. It’ll build something useful. You see where I’m going with this. Does anyone else find that this reflects a really obnoxious attitude, regardless of whether it would work? Anyway, it seems like the premise is that people would only ever build a TUI because making a GUI was hard, and now it isn't because LLM slop will be good enough. But I'm firmly convinced that fails on both counts.
- whartung 1mo agoI've mentioned this before, but the rise of the TUI is the simply the systemic failure of remote GUIs. The primary value statement of TUIs is that they work over SSH with remote systems. But now, we're hearing rumbles about the limitations of the "modern" terminals with regards to working well with a "rich" TUI. How a raw tty doesn't really cut it since it, at a minimum, can't detect key presses, only actual character/byte patterns. How there needs to be a new protocol, a "better" terminal client. Of course when you go that route, then the current terminal emulators will need to be updated, or you'll be required to install a different terminal emulator that supports the new protocol. But that kind of defeats the theoretical, historical ubiquity of a TUI. It would not surprise me that many modern TUIs only work with an ANSI terminal. Back in the day, we had systems like Visual Basic, Power Builder, SQLWindows. GUI/language systems particularly well suited for Client/Server DB development. For a time, Firefox actually presented itself as a modern incarnation of these tools. Using XUL and JS for UI development, built in utilities to talk back to servers over HTTP. It was a platform for "Rich Internet Applications(tm)". It didn't really take off, it wasn't documented very well, kind of buggy. It also required Firefox as a client. The potential was there, but not quite realized. Ajax hit the web browser in full force and that pretty much was the last nail. Now, you could use "any" browser for more interactive applications. Of course, we advance to today, where many sites work in any browser as long as its Chrome. We have advanced applications that are no more than a Canvas element, with everything else being reinvented from scratch. "Have bitblt, will travel." The browser is the closest thing we have to a universal remote GUI, but we all know the issues with it for many contexts. As an application platform, it may be ubiquitous, but that doesn't mean it's at all lightweight. We used to have lightweight, remote GUI applications. Rootless X Window applications. Folk don't necessarily want the entire desktop, they just want an app, with some fields and buttons. You could slap them together with TCL/TK. Remember dtksh? We're not talking about trying to write Adobe Premiere or AutoCAD in these things. We just want some simple utilities, fields, icons, maybe a chart. Scrolling tables and a menu. But we can't do that today, not readily, not easily. So, we're kicked back to 1978 and the rise of the Smart Terminal, instead of 1984 and the rise of the X Terminal. If folks are going to write out a custom client for a TUI, then may as well go the extra 10 feet and make it a remote GUI client. Reinvent all of the wheels as they go round, and round again.
- 1mo ago
- welwala 1mo agoI completely disagree. I love using TUIs, the apps are lighter and faster and work great. The author starts with a bunch of vibecoded slop apps that show exactly what I hate about 'modern' GUI apps, a lack of options and wasted screen-space. They look hip but are harder to use to me.
- cavem0nkey 1mo agoYou can shit on TUIs but macOS isn’t the panacea of GUIs. This really compromises the argument. In fact I’d argue it’s one of the worst platforms for GUIs. Sure it looks pretty but it’s impossible to drive from the keyboard without mutant hands and savant level of memory for arcade combos. That means the entire OS relies on being able to drive the UI from a positioning device and thus you have to have the coordination to piss on an ant off a moving train. Which is terrible when the input devices are a touchpad, which varies so utterly frustratingly depending on whether it’s in the laptop or over Bluetooth. That and a mouse which is designed by a complete psychopath. That leaves you with third party options which require apps to not suck and they still suck. Scrolling on Logitech options anyone? Even LinearMouse can’t fix that shit. Compare windows which works absolutely fine from any keyboard or any mouse and is discoverable and consistent. Also no mutant hands required. TUIs are closer to windows than macOS. And that’s a good thing. I did the last ten years on a mac and decided I was just hurting myself. Give me windows or a TUI. I notice Linux desktop environments tend to copy windows with respect to keyboard and discoverability too.
- heymaikol 1mo agoThis is probably why TUIs feel so comfortable on Linux. Keyboard-first interaction already matches how a lot of Linux users work.
- skapadia 1mo agoHow about build whatever interface makes sense for the user? Doesn't matter if it's a TUI, GUI, speech interface, or some physically actuated / haptic feedback based system. Do what makes intuitive sense to the user and provides enough expressive power to get their job done without overwhelming them.
- rrr_oh_man 1mo agoThis reeks of AI slop. > Our field has a weird relationship with terminal and command line interfaces. The time has come to re-evaluate it. Why? Why is infatuation weird? Why should we reevaluate it? The whole premise sounds like a "give me a hot take on XYZ". (I built itter.sh so I'm biased)
- zzzbra 1mo agoFound this article to be a bit of a slog, burying the lede until after you’ve sifted through a rambling list of irrelevant vibe coded apps by OP. The actual argument came across in places but I am unpersuaded. Unsure if that’s due to the article structure or the argument’s own merits.
- api 1mo agoAccessibility is a giant problem with almost every open source GUI library too. It seems like an absolute slam dunk for AI. Create an integrated AI screen reader app that observes the screen and talks to you. It wouldn't even need to be a huge model. It could be a small local model that can just read and interpret UI elements and feed the results as tool use calls into an accessibility layer. It'd probably be a custom trained accessibility model, could probably be based on an existing small computer use model fine tuned for the purpose. This seems like the "accessibility solution to end all accessibility solutions" that totally takes the burden out of the code and puts it in one place that can be uniformly improved. This is the way. It just wasn't possible 5 years ago.
- trollbridge 1mo agoLLM agent harnesses make it possible to do: CLI, TUI, REST API, web front end + Electron, native (I do macOS first, which then makes iOS/iPadOS almost trivial, followed by Android), and if I’m feeling ambitious, Windows (native) and Linux (usually Qt). It’s much easier for the clanker to loop on testing / improving the TUI than a real GUI. It also means it can work on the app without an API/REST/HTTP/Java/Script ball of mud in the middle.
- loeg 1mo agoThe article is interesting even if you disagree with the headline conclusion -- don't skip it on that basis.
- formvoltron 1mo agocurses!
- ejboy 1mo agoOne big benefit of TUIs is that they lower the bar for customer adoption. Before Claude Code, it was unthinkable to come up with a mass-market TUI because most users would not use it simply because it's a terminal. Now, it can even be an advantage. Even inexperienced users are no longer afraid of the terminal.
- elvin_d 1mo agoContentious topic but I have hard time comprehending line height scroll instead of smooth Web like experience and everything rendered in the same font size. I guess it’s a habit for people who started early and never got to use web applications enough to develop distaste to TUI scrolling patterns.
- evanjrowley 1mo agoI understand the point the article's making, and in fact, I believe it's a good one. Ultimately I continue to prefer TUIs over GUIs for one reason: Practically nobody will target TUIs for advertisements, doom scroll content, AI slop, any kind of marketing, etc.
- jasonvorhe 1mo agoStop telling people what to do (or not).
- rowbin 1mo agoWhile GUIs have some legitimate use cases, I prefer TUIs if I can get away with it. Its just text, ssh friendly, constraint in a beautiful way that still allows endless possibilities.
- theodric 1mo agoNo. In fact, I will make another TUI just to spite this article. Maybe two.
- scythe 1mo ago>Finally, I can think of one strong argument for TUIs: they’re cross-platform. >[...] >But remember: I’m not really building applications for other people to use. I’m building them for me. Giant caveat to the whole argument and it's buried 80% of the way down. Granted, he alludes to that a little earlier, but if other people using your application are a completely irrelevant outcome, you're an unusual case. I mean, sure, I make tiny one-offs, but those barely even have something you could call a CLI. I push as much complexity into command-line options and config files as possible.
- nickpsecurity 1mo agoI enjoyed the article. He has good points. I'll emphasize one and add a other. 1. CPU/memory performance on cheap or throwaway systems has a niche benefit. Mostly poor people. I'm still usually on an ancient Thinkpad with a 2nd gen i7. It runs native apps really fast to this day. Almost all GUI cuz I agree with the OP but my apps are TUI by default to keep them lean and fast. 2. Security. While I don't aim for it these days, it was much easier to make textual apps securely than GUI apps. Secure OS's from the 90's already secured console apps. TX, Nitpicker, and EROS made progress on GUI's but there's high complexity still. I'll note the OP's idea of GUI front ends is basically what we did to isolate the GUI part in a dedicated partition with messages it sends checked by the secure component. Other than those observations, I'm with OP where I'm tired of TUI's if GUI's are that easy now. I considered trying it with some lightweight, cross-platform frameworks. Anybody tried some with cheap AI's?
- m463 1mo agoThe root cause of TUIs is keyboards. We should deprecate them and achieve the death of TUIs. /s
- vrypan 1mo ago> We build terminal interfaces because we have to, not because we should. Who said we're building them because we have to? I like TUIs, and often prefer them over GUIs, depending on the case.
- vladshiyan 1mo ago[flagged]
- dharmatech 1mo agoLooks like the sagemath UI he mentions is here: https://github.com/tqbf/casette https://github.com/tqbf/casette
- Grombobulous 1mo agoI guess the author isn’t in ops. And that’s okay. The whole point of a TUI is that it can operate under no-GUI constraints. I can SSH to any server and use a TUI because SSH can handle that. Running an entire GUI and setting up VNC/RDP would be horrendous by comparison. Alternatively, a TUI can be a part of an interactive CLI command where it maintains context to your CLI session. For example, I have a tool that helps wrangle AWS accounts and regions where the CLI momentarily drops into a TUI to help pick between regions and accounts if not already specified in environment variables. If I had to type all that out every time it would be very annoying. Hitting some arrow keys or searching with a few letters beats the CLI experience, and a GUI experience is not possible.
- tptacek 1mo agoNo. I'm a cofounder at Fly.io and have spent the last 6 years (really, the last 25) in ops world. The points you're making here are addressed directly in the article. It's kind of hard to miss them!
- weare138 1mo agoI would recommend OP delve into cross-platform desktop app development first...
- dasil003 1mo agoHere's the part that makes the most sense to me: > Meanwhile, if I build a TUI, I can be reasonably sure that Linux users are going to get the same experience I have. That’s not nothing. But remember: I’m not really building applications for other people to use. I’m building them for me. TUI affordances are an awfully big hit to take to get Linux users of programs I don’t even want to publish. If we're just talking about personal or throw-away apps, yeah I'd probably just go native. But for things that I plan to use across platform, via remote shell, and for many years to come, TUIs has a huge advantage. I also think there's something powerful about the constraints of a terminal and the type of solutions it's led to. Constraints breed creativity, and in the case of terminals they also naturally steer towards high-performance, low-latency, and rapid interaction by experts. The fact that these things were born out of the limitations of early computing doesn't automatically make them outdated, to the contrary, it gives them staying power and portability. In my mind there are crystal clear advantages to GUIs, TUIs, and raw CLI. I've used all of them extensively over the decades, and I've been impressed with the advancements in each over that entire time. I would never presume to tell somebody how to solve their own problems—if you're excited about something just go build it in whatever way makes sense to you.
- FerretFred 1mo agoTUIs are great and I shall continue to write and use them while I can still see a screen! My use case is to mainly use Termux on my ruggedised Android tablet, simply because I can't install a native Linux on it. I like the speed and efficiency of a TUI as well as the fact that I can maintain it with vi or nano. I've installed XFCE4 on it for fun but the extra, necessary library baggage isn't really worth it, TBH. It also means I can use the same stuff on my Onion Omega 2 SBC with minimal tweaking.
- abcdefg12 1mo agoAs decades of cli and TUI dev and user - TUI forever
- cadamsdotcom 1mo agoTUIs are better for typing centric keyboard workflows; GUIs are better for keyboard shortcut centric. Your desire UX will guide you. People don't expect to be primarily typing into a GUI; they expect to occasionally click something interesting; have things pop into view as they happen, etc. A TUI's advantage comes partly from imposing a constraint: how can we make close to all the user does in this thing and make it doable by typing at this cursor? As always it's horses for courses.
- deleted 1mo ago[deleted]
- alimbada 1mo agoMy servers can’t and shouldn’t run GUIs so you can take your “hot take” and stuff it... somewhere else. Choices are great to have. Advocating for fewer choices deserves the derision it’s been met with in the comments here.
- kwar13 1mo agoTUIs are fantastic. The mere fact that they're lightweight and keyboard oriented is alone to want more of them.
- pratyahava 1mo agothanks to the author of the article, it inspired me to try making a small gui app i wanted for long time - it simply reads and shows the contents of the system clipboard in a window. and it was really super easy, i didn't need xcode, only `swiftc` from command line. honestly i didn't know i can make an app without opening xcode, now i want to make more :) so i made the app with approx 500 lines of Swift, with keyboard hotkeys for navigation and style change (fonts, colors, window size), just the way i love it. cmd+U scroll to beginning cmd+I scroll to end cmd+u page up cmd+i page down cmd+j one line up cmd+k one line down cmd+- font size decrease cmd+= font size increase cmd+0 font size reset to default cmd+3 default font cmd+4 alternative monospace font cmd+[ grow left window border cmd+] grow right window border cmd+{ shrink right window border cmd+} shrink left window border cmd+9 switch background and foreground color all this in one day, with huge help of duck.ai which is completely free. the app size is approx 300kb. using it feels great because i can do the whole cycle with keyboard only: - cmd+space to open spotlight search - type the name of the app, enter, it opens a new window with clipboard contents, i inspect it with keyboard hotkeys only - cmd+q to exit or cmd+tab to switch back to the prev app for me personally the standard gui apps are annoying because of the standard kb shortcuts - they are hard to remember and even hard to reach. i prefer "sort of vi navigation" because i can keep my hands for navigation at the same position as for typing.