I'm not a TUI developer but I'm about to become one after my experience with Tauri on a simple project. But focus on why I'm a TUI user. Maybe these reasons are why people develop TUI apps:
* Speed: Work gave me an i5. It has lots of RAM after I begged for it, but it's pretty slow. Having TUI apps for programming (vim+aider-ce/opencode), git wrangling (lazygit), music (pyradio), etc. saves a ton of RAM and cpu for me.
* Availability: I use yakuake as my main terminal, so when I don't need those apps they aren't cluttering up my desktop, but when I need them they are immediately available with a tap to F-12. No matter what desktop I'm on, there's my workspace.
* Configurability: Most of these apps are ridiculously theme-able, and that's really fun.
* UX: Most of the apps I use use vim bindings. That makes it super easy to get around. I rarely have to touch a mouse.
* Simplicity and portability: My coworkers spend at least a day setting up a new laptop. Yeah they're probably milking it but I'm up and running in a few hours.
* Potential: I've barely touched the surface, but I think there's a lot of compartmentalization of projects to be done with multiplexers like tmux that would be difficult-to-impossible to do with regular GUIs.
* Speed: Apps start and stop in fractions of seconds vs watching a spinner go 'round
* Cool factor: My girlfriend thinks I'm pretty disgusting when she sees how many browser tabs I have open but she thinks I'm pretty hawt when she sees how many terminal tabs I have open.
Presumably preference of their users. From what I know, other than for cursor, the GUI interfaces are less popular than the TUI ones. Personally I also did not expect that I would really like the TUI experience, but it's hard for me to switch away from it now because it has become so central to my workflow.
It's easier to ship a TUI app cross-platform, the constraints around UI and state are often simpler, and some good libraries/frameworks (e.g. [1][2]) exist to make a modern-looking UX.
I considered a GUI for a small Python project of mine, but couldn't find anything quick, simple, and portable. I ended up opting for a TUI with a few ASCII art boxes.
Because making a decent GUI is harder than making a decent TUI. Also TUIs give you some nice things for free like working over SSH easily, but I suspect the lower dev effort is the big thing.
I think making a TUI or GUI is a huge pain, but having tried both I think writing a good enough TUI is easier. I suspect writing an actually good TUI is still easier than writing an actually good GUI, but I will caveat that with my lack of experience.
They are both not easy to make great, but with TUI you have way more constraints than with GUI so you can make something decent quickly and focus on important interaction and not on pixel-perfect button alignment.
Windows 98-XP GUIs were the best for such cases: there were clear design guidelines, everybody used native components, and GUI designers in IDEs were practical.
I'm not a TUI developer but I'm about to become one after my experience with Tauri on a simple project. But focus on why I'm a TUI user. Maybe these reasons are why people develop TUI apps:
* Speed: Work gave me an i5. It has lots of RAM after I begged for it, but it's pretty slow. Having TUI apps for programming (vim+aider-ce/opencode), git wrangling (lazygit), music (pyradio), etc. saves a ton of RAM and cpu for me.
* Availability: I use yakuake as my main terminal, so when I don't need those apps they aren't cluttering up my desktop, but when I need them they are immediately available with a tap to F-12. No matter what desktop I'm on, there's my workspace.
* Configurability: Most of these apps are ridiculously theme-able, and that's really fun.
* UX: Most of the apps I use use vim bindings. That makes it super easy to get around. I rarely have to touch a mouse.
* Simplicity and portability: My coworkers spend at least a day setting up a new laptop. Yeah they're probably milking it but I'm up and running in a few hours.
* Potential: I've barely touched the surface, but I think there's a lot of compartmentalization of projects to be done with multiplexers like tmux that would be difficult-to-impossible to do with regular GUIs.
* Speed: Apps start and stop in fractions of seconds vs watching a spinner go 'round
* Cool factor: My girlfriend thinks I'm pretty disgusting when she sees how many browser tabs I have open but she thinks I'm pretty hawt when she sees how many terminal tabs I have open.
Presumably preference of their users. From what I know, other than for cursor, the GUI interfaces are less popular than the TUI ones. Personally I also did not expect that I would really like the TUI experience, but it's hard for me to switch away from it now because it has become so central to my workflow.
It's easier to ship a TUI app cross-platform, the constraints around UI and state are often simpler, and some good libraries/frameworks (e.g. [1][2]) exist to make a modern-looking UX.
[1]: https://github.com/charmbracelet/bubbletea
[2]: https://github.com/Textualize/textual
I considered a GUI for a small Python project of mine, but couldn't find anything quick, simple, and portable. I ended up opting for a TUI with a few ASCII art boxes.
For quick and simple, by all means do a TUI. I have done it too, and they're super easy to vibecode :)
Claude Code seems neither quick nor simple
Because making a decent GUI is harder than making a decent TUI. Also TUIs give you some nice things for free like working over SSH easily, but I suspect the lower dev effort is the big thing.
you think so? i think making a good TUI is a pain in the ass
I think making a TUI or GUI is a huge pain, but having tried both I think writing a good enough TUI is easier. I suspect writing an actually good TUI is still easier than writing an actually good GUI, but I will caveat that with my lack of experience.
They are both not easy to make great, but with TUI you have way more constraints than with GUI so you can make something decent quickly and focus on important interaction and not on pixel-perfect button alignment.
Windows 98-XP GUIs were the best for such cases: there were clear design guidelines, everybody used native components, and GUI designers in IDEs were practical.
[flagged]