WebTUI – A CSS Library That Brings the Beauty of Terminal UIs to the Browser
145 comments
·April 12, 2025rollcat
sgt
Occasionally when you see someone using a point of sale terminal that is terminal based, the operator usually flies through the interface like it's nothing.
So there's something to be said about those types of interfaces - it may look simple and be text based, but it's the most user friendly for the qualified operator to get things done.
mrighele
That has nothing to do with the interface being a terminal, but with the primary input method being a keyboard instead of a pointing device.
You could get the same result with a graphical interface, as long as you provide proper keyboard based navigation. The web browser provide all the capabilities that you need for that.
The nice part of a text based ui is that you have a simpler device to use for rendering, so things like layout is easier, as long as you remain in the domain of what the device allows for.
Vegenoid
Agreed that a GUI can be just as keyboard-friendly as a good TUI, but it would seem natural that restricting things to a grid of characters encourages keyboard interaction, whereas allowing arbitrary placement of elements at the pixel level encourages mouse interaction.
ranger_danger
Yes, but given the choice, I think most people would opt for the less-efficient mouse navigation on a web page, even if there were no actual upsides to doing it that way.
If a business forced a keyboard-only input method, then that might help to raise the efficiency of everyone more equally.
graypegg
Another example of this sort of interface is office phones. When someone knows their phone well, they can speed through a hold, page to another desk, then transer to them, without even looking at the keypad.
I have a feeling that sort of "trainable speed" is a feature of interfaces that treat the thing they manage like a physicial "thing" you're rolling thru a process. (instead of a feature of textmode interfaces) Rather than having to get to a menu for outside lines in some abstract window, there's just actual physicial buttons to mash. You get this feeling that you're juggling a call between your fingers because every press you do is doing a "thing", not just opening a menu. There's real physicality to that process that my monkey brain can learn no problem.
I don't have any experience operating a terminal based PoS, but from what I know, they tend to also have the same sort of "juggling" actions, like SALE, DISCOUNT, VOID etc. I have to imagine using them feels like juggling the current item you're looking at thru a few different buttons.
rollcat
See my sibling comment: https://news.ycombinator.com/item?id=43673486
MrJohz
I've definitely seen this in real life, but recently I've started trying to actually watch when people use these interfaces, and they usually seem very slow - lots of hesitation, lots of mistakes, lots of repetition to do very simple actions. I watched someone use a terminal PoS recently and to clear a text input and insert a new value, she had to navigate to the start of the text box (no home key or anything like that), type new characters over the old ones, and then at the end delete any leftover characters from the previous input that they hadn't typed over. In a modern GUI, I would expect the user to have to (1) tab to the text box or press ctrl-A if they were in that text box, then (2) type the value they were interested in, possibly with typeahead support if it makes sense.
My working theory is that these terminal-based UIs aren't quicker because they're terminal-based, but rather users need to learn the keyboard shortcuts because they're so painful to use any other way. A well-designed GUI equivalent could be significantly quicker, and much easier to learn, but nobody wants to pay for that.
kmeisthax
Good GUI apps have shittons of keyboard shortcuts to achieve the same result. The ideal is that the qualified operator keeps their hands on the keyboard for anything that isn't an actual pointing operation. For example, in a video editing app, you can rough-cut with a handful of keys[0] for setting in and out points, jogging through the source material, and inserting into the current active timeline. The keyboard isn't a mere text input device, it's a large-ish macro pad with a huge number of redefineable keys, and it will always be faster to press a button with a known location versus opening a menu and clicking an option by name.
Related: I really liked Blender's text-searchable menus and I wish every GUI app had searchable menus. It's faster than hunting through a static hierarchy. In fact, one of the few criticisms I have of the 4.x era Blender UI is just that it's mildly harder to invoke search.
[0] Which is how linear video edit consoles worked before modern NLEs, mind.
geocar
> every GUI app had searchable menus
They do on mac: shift+⌘+? opens a "search menu" menu.
c-hendricks
> I wish every GUI app had searchable menus
On macOS and KDE (Wayland), they do! Agreed it's really handy.
pjmlp
I see the same on any graphical one on the supermarkets and restaurants.
Maybe it is a matter to actually design for the customers use case.
__float
Modern GUI apps tend not to design for the keyboard-wielding power user.
TUIs can have just as many quirks and bugs, but on the whole they tend to be a little simpler, and the author usually is an end-user :-)
rollcat
Exactly. POS terminals are optimised for throughput. Otherwise it's literally less sales, your bottom line.
You can build a perfectly snappy, keyboard-driven GUI application; a terminal emulator is (ironically) the perfect example.
EasyMark
once those keys become muscle memory no mouse driven interface will ever repair lol. I used to work best buy and they had a bunch of backend inventory/database stuff and I could absolutely fly through those. I used be able to do the same with wordperfect as well. now all those skills and muscle memory..... gone like tears in the rain.
_blk
Airlines (and our corp. interface to it) seem to still rely on those. Kinda weird but fun to see HR/Travel people using those. They definitely have their place still.
null
godelski
The obsession is because it is still the best. For all its faults, I'm still terminally terminal. The beauty of it is in the utility and how it becomes so natural. It's a language you learn that gives you so much freedom you cannot find anywhere else. I've tried many IDEs but I'll always come back to vim. It might have taken time to learn but this is true for anything else. I didn't learn a tool, I learned a language. I didn't learn to run, I learned how to move my legs. With that I could teach myself, I can walk, I can run, I can jump, I can dance, I can be anything I want to be. In VSCode I can walk, hell I might even be able to run, but there is no dance, there is no "me".
That's the beauty of the terminal. It's not a one size tool for all. There is no product that can be made for everyone. Instead it's an environment for you to craft and live in. Everyone's dotfiles are as unique as they themselves are. That's the point. Because when you can't build something for everybody you give them the means to craft their own worlds. The computer didn't become so great because the chips, it was the ability to write software and build the things you need. The smartphone didn't take off because it had a big screen, it did because the app. Because you could create. Because your phone is yours and no other phone is like it.
But I haven't found a browser that lets me be me. That let's me dance around the web and jump and be free. And I fear we lost sight of this thing as it became so natural, that the phone and computer are turning into things that be instead of a reflection of me
freddie_mercury
If it is still the best, what's the superior terminal equivalent for Photoshop, Premiere, Audacity, and Figma?
Not everyone's work life revolves around text just because yours does.
godelski
I think you know your point is obtuse. Context matters in a conversation. You got me! Everyone is going you agree with you, including me. But only got me by moving the conversation to somewhere no one was considering and could be well agreed upon that it was out of scope. It's correct, there's no one size fits all.
But I'll also say, in all these applications having good key bindings is still a massive help. Those really good at these programs aren't clicking dropdown menus constantly but are issuing keystrokes in combination with the need for their mouse. In a way, that's not too different even if in another way it is
tomxor
> Not everyone's work life revolves around GUIs just because yours does.
FTFY
They both have their place, pros and cons, that fit different purposes differently. The mistake is in trying to assign superlatives.
Two things can be true at the same time, TUIs are superior to GUIs, and GUIs are superior to TUIs, but in different contexts.
sgarland
What a lovely sentiment. Fully agree; staying in the terminal for as much as possible makes for far less friction when context-switching.
jampekka
Text-based interfaces can be done with techniques other than simulating a very restricted device from 1978.
rollcat
> I've tried many IDEs but I'll always come back to vim.
Vim and Emacs both have GUIs. As an Emacs user, I subjectively find the GUI superior - I can e.g. rebind Cmd-S to "save", and that's a reason enough.
> It's a language you learn [...]
You mean the serial lines and ANSI escape codes and termcap? I would say it's more like pidgin with a dozen obscure dialects, and a body language on top. Try writing a portable TUI application from scratch, without touching curses or termbox. <https://viewsourcecode.org/snaptoken/kilo/>
Or do you mean, how to drive a TUI application from the keyboard? Here's the painful truth: you can't quit a TUI application without learning it. In vi, it's "Esc-q!-Enter", in Emacs it's "C-x C-c", in screen it's "C-a C-\", in tmux it's "C-a C-d", and so on. Maybe pressing "q" or F10 or C-d will work, but good luck guessing. This is just to quit, and ironically - it's only the start.
By contrast, on macOS it's Cmd-Q; on Windows, it's Alt-F4; and so on. Innovation happens on stable foundations, not by pulling rugs.
> It's not a one size tool for all. There is no product that can be made for everyone. [...] Everyone's dotfiles are as unique as they themselves are.
You know non-TUI applications are also customisable? I have Hammerspoon scripts, a dozen custom keybindings in macOS, .xsession+.Xdefaults+.Xresources, .gitconfig (I use git via Emacs+Magit), various .config/*'s (for e.g. sway), .emacs (bankrupted several times), and so on - none of these are TUI applications.
Or do you mean the command line? I believe we can build a better REPL than a terminal emulator. Emacs is a decent PoC, you can also have a look at Swift Playgrounds. Maybe we can build a generic non-terminal REPL where Ctrl-C means "copy", and Ctrl-V means "paste", that would be a great start.
Don't get me wrong, I'm happy if you're happy, I just don't understand the collective obsession. These tools exist, which is great, but we deserve better.
sva_
> By contrast, on macOS it's Cmd-Q; on Windows, it's Alt-F4; and so on. Innovation happens on stable foundations, not by pulling rugs.
That's the window manager of the respective systems though. On i3, I can also kill any window by pressing Option-Shift-q. But that's more like the sledgehammer approach and not how I'd close a text editor on any system ...
geocar
> Here's the painful truth: you can't quit a TUI application without learning it
So what? I'm not so sure you can learn Photoshop without either watching someone use it or reading a few books on it, whilst emacs maintains an excellent tutorial that it tells you to read multiple times when you start it.
In the 1990s and early 2000s I volunteered at a senior center teaching people how to move the mouse and translate that movement into the little arrow-cursors' movement, and the experience convinced me absolutely nothing about computer-use is intuitive or obvious to anyone who did not grow up using it.
I urge you not to stick with a worse-user-experience just because you already "know" it. If you think GUIs are better, that's one thing, but this cannot possibly be the reason.
> Try writing a portable TUI application from scratch, without touching curses or termbox
Try writing a portable X11 application from scratch, without touching libX11 or libxcb.
Try writing a portable Win32 application from scratch, without user32.dll
None of this is fun, but the TUI application is less code, and it's not even close.
> As an Emacs user, I subjectively find the GUI superior - I can e.g. rebind Cmd-S to "save", and that's a reason enough.
The mac Terminal isn't great for a few reasons, but iTerm and kitty absolutely let you do this if you teach Emacs to decode the sequences.
I find this a much better experience than using tramp to tunnel remote servers.
> non-terminal REPL where Ctrl-C means "copy", and Ctrl-V means "paste", that would be a great start
You can have this today (see above), but I much prefer ^C being cancel/interrupt/compile, and ^V being make-visible. I avoid copy and paste because it doesn't fit in my workflow very well:
> You know non-TUI applications are also customisable? I have Hammerspoon scripts, ... I just don't understand...
I don't want hotkeys, I want automation.
In a terminal I just run the regular application (like emacs) under autoexpect. I then edit the resulting script, and run it and now I have a new application that does something useful to me. Eventually I add it to an application I wrote which just runs all of my scripts in a big loop.
I run one gui application (chrome), and then use vncsnapshot to dump images that I print out over the kitty image protocol. I then have a perl script forward the keyboard and mouse metrics into qemu via vnc. It works well enough for autoexpect, but it's a lot of work for one application.
Then, I go to the beach while my computer is doing stuff people pay for.
dullcrisp
Hmm I just use :w<cr> to save in my graphical editors too. It’s easier to type.
godelski
> I can e.g. rebind Cmd-S to "save", and that's a reason enough.
I'm no emacs user but I'm pretty confident you don't need a GUI for that. I can certainly do that in vim in the terminal. :nmap <C-s> :w<CR>
> In vi, it's "Esc-q!-Enter"
That's not accurate. In vi it is :q<cr> (: then q then enter). The escape (or <c-[) is only necessary if you're in write mode. "!" Is only necessary if you've modified the document and want to force quit.Do you also get pissed off when you modify a word document, click quit, and it asks you if you're sure and like to quit without saving? It's literally the same thing.
Idk I just don't see the problems you are talking about. They aren't things I face. On my Mac I can still use native cmd+{c,v} and on anything else I'm not upset by adding a shift. Though most of the time I'm yanking and pasting because I can "vim" in bash, zsh, hell I can even do it in ipython! In tmux and screen I just type exit or <c-d> to kill a pane. You say it's just the beginning and I agree, but I think you missed that in tools like vim the language is the motion and actions. It's why I can discover "new commands" but it's like discovering you can jump over a box when you already know how to jump. If you're just trying to memorize commands and combinations you are doing it wrong. I'm sorry whoever taught you failed you, and I'm sorry there's so much noise.
But if we want to be pedantic then you're going to have to admit that cmd+q and <c-q> don't always quit. Many times they just close the window. Sure, alt+F4 is different, but that's a force kill list like typing "pkill <program name>" or simply <c-c> (which came first? <c-c> or <c-q>?)
It's not like I don't use a GUI at all. But yeah, it's nice to not lift my hand from the keyboard. Don't get me wrong, I'm happy if you're happy, I believe the best tool for you is the best tool for you. But if you want to understand why I'm obsessed, you have to try to see what I see, from my eyes and not yours. It's hard over text like this, that's fair.
And you're right! We do deserve better! If you ask me, my number one annoyance is when the computer won't let me do things. I'm very frustrated with both windows and Mac since they put up so many walls that make it difficult for me to shape my machine the way I want. Sure, this is hard in Linux but there's no locked doors in which I need to find a key (other than sudo) or a back door. I edit my dotfiles to make these things a part me, why would we not want to carry on that idea?
wiseowise
GP talks about how you develop those TUIs, not TUIs themselves.
Web model is objectively better than
‘’’ Stop thinking in standard CSS units like px, em, rem, % Start thinking in Character Cells for spacing, sizing, and positioning ‘’’
rollcat
> Web model is objectively better than [...]
Hard disagree. Modern web browsers are incredibly complex beasts that evolved by amalgamating decades of experimentation, poor non-standards, and elaborate counter-measures to fix that mess. I recommend reading <https://browser.engineering>, or even just building Chromium from source, to gain some appreciation. Most applications would benefit from something much simpler. But it's often practical to use as it is, pretty much exactly like terminal emulators.
The main difference being, terminal emulators are still several orders of magnitude less complex than web browsers, but in spite of that still require a lot of complexity to undo the side-effects of having a serial line between the CPU and the character grid. If you like monospaced fonts and character grids, you can probably render that with plain SDL, bitmap fonts with indexed sprite sheets (no Freetype), and in return get non-broken copy & paste, or even a dock icon. You know, the MVP of GUI.
Try <https://lite-xl.com>, it builds its GUI straight on top of SDL.
freehorse
It is a different design decision. You do not have to choose all capabilities of modern browsers when you do sth.
Of course nobody would expect this to take off largely. But aesthetically speaking, I see nothing wrong in the design per se. It is clean, consistent, light and minimalist-like. Terminals just provide a minimalist style that is tested and also familiar to some. It is very easy to get around the website. Pages load fast.
The main drawback I see is lack of multimedia support, obviously (even if supported they would be a bit out of style). But that's not a problem if you do not care about that. And that it is hard to place ads.
Sure, "Web model is objectively better" but also depends what one considers as "web model" because a lot of modern web is just a bloated mess, which I find more annoying thaν a project like this.
onehair
I think they're just being funny, and if asked seriously they'll tell you that those words are only meant to hype up the project and not neat seriously (cells vs ems, %, px)
wruza
Because it's how normal people think. This under that. This after that, left-aligned with that. Text modes are the most basic tech supporting it.
Css uses boxing with no sugar (like size groups or custom allocation). Boxing is this in that in that in that, sometimes stretched. And now when you want A and B in different boxes to align well, you're screwed, cause it creates an invisible fragile tree of braces that hold everything in place.
Maybe they would use a much more natural constraints-based language instead of text modes. Like, literally, "this under that, and these five left- and width-aligned". But web is reluctant to add it, because when not used carefully it could slow down first interactive renders by 0.01% out of average 10s (that is, assuming the same moronic site structure for some reason and the code that renders it).
suobset
Personally I felt this as a retro hobbyist project. I don't see it being used for serious matters, but I'd snag something like this up for my personal website any day!!
EasyMark
It would make a lovely homepage, expecially for retro computing sites, archives of 60s-90s, etc. I'm not sure why people get angry when developers go outside the box and make something nifty. I have been using the star trek console looking theme for my pihole for years and still love the aesthetic.
geocar
> Something went wrong here, at least once
The higher-level view of data-over-time is inherently serial, and I don't think there's anything anyone can do about it: Serial is the correct/best abstraction.
That being said, I acknowledge the problem you're referring to, because serial what exactly? Every time we complete the circle, it gets a little smaller, and our collective knowledge of what is actually going on improves.
It should make a certain amount of sense if you look at it this way: Use a serial decoder to fill a memory bank of character cells or pixels or whatever, and share that memory bank with a video encoder, and the software guys say: well, how about I just fill up that memory bank directly. Then, you don't want character cells but triangles, and you find you're just DMA'ing in that shared buffer and working around the timing of another process reading it and your ring-based memory buffer has turned back into a serial protocol before you know it.
I think the main problem is that programming languages are terrible at serial, so programmers keep trying to work around it, and then convert to/from serial at the edges.
> it's another thing to claim that this is the peak tech to power our modern CLIs, or a solid foundation for portable UIs.
I can't explain all of it, but terminal UI remain without match: Even today (2025) I use a terminal because there's no better human-computer interface for doing intellectual work.
A picture of a terminal, is not a terminal, so I understand why stuff like this confuses.
pjmlp
Yes there is, it is called a REPL, Xerox PARC has plenty of examples across all their workstation variants, followed by Oberon, and some of that work even inspired Plan 9 and Inferno UI and related developers editor, ACME.
geocar
I don't understand exactly what you are trying to say.
I think a REPL is the real-eval-print-loop used by lisp systems to talk to a terminal, or something that looks/works like that (but maybe doesn't use lisp). These days I think lots of things have REPLs. Even Python. The only ones to survive 40 years though, have been serial ones, and I don't think that's an accident.
That command box/area that the user uses and re-uses in Oberon and Acme is something else and specifically worse than a REPL because you can't script it: There's no GNU expect for rio, and no DESQview-learn for Oberon and their command language just isn't good enough. This interface has not proven particularly efficient for users either, but terminals are still around.
Emacs is what I'd consider "peak terminal", and it has a REPL and an excellent command language. You can also script Emacs with emacs, by literally running emacs in an emacs terminal.
safety1st
My take is that the greatest unsolved UX challenge of our time is the way that every company has sought to acquire more of our attention and introduced limitless distractions as a result. The terminal is comparatively distraction free.
So the nostalgia for it is not a surprise, and the decision to spend more time in terminal-esque interfaces can be rational. Often some marketing department wants to splash fonts, layouts and colors everywhere; but I just want to read some text.
pjmlp
Me neither, Turbo Vision was cool, Clipper kind of ok for data entry applications, and curses, well it was the way of UNIXes before X Windows became affordable.
Apparently that is some kind of retrocomputing movement.
The strange part is that most folks pushing for TUIs weren't even born and don't get the pain we went through.
We used TUIs because that is all we could afford, not because we were given an option.
terminaltrove
This looks awesome and we're fans of the TUI aesthetic at terminal trove (1) (we're biased), it's also great that WebTUI has keyboard shortcuts to go with it.
Not CSS but similarly ratzilla (2) also comes to mind, that allows you to build terminal-themed web applications with Rust and WebAssembly.
Check out the examples (3) they look great!
(1) https://terminaltrove.com/
(2) https://github.com/orhun/ratzilla
(3) https://github.com/orhun/ratzilla?tab=readme-ov-file#example...
WD-42
This site is amazing!
jasonjmcghee
I'm not seeing any icons (on ios, tried a few browsers). Is the font (or svgs? Not at a computer to check how it's built) being served?
mcint
Hi again. I have the same issue in my browser, and locally in nvim.
NerdFonts (and the right terminal emulator) were needed, and enough, there. Playing with AstroNvim, and blocked by use of yakuake.
Hoping that I can hot load something from https://www.nerdfonts.com/font-downloads, I'm not sure what from https://fonts.google.com/ has the needed ligatures or symbols.
djaychela
I'm also not seeing any icons (macOS, running Firefox). Tried it in safari and just get blank rectangles instead of the rectangles with a small hexcode(?) in FF.
kombine
not seeing icons on Firefox (Linux) either. I do have NerdFonts installed, but I guess that shouldn't be needed for a website.
meta-level
For python there is also https://github.com/Textualize/textual-web, based on the rich/textual framework
nurettin
> This will generate another URL, which will present you with your terminal in your browser
> Don't share this with anyone you wouldn't trust
This is on another level. They built a terminal sharing application that connects to their servers. One must truly like to live on the edge to try this at home.
lionkor
On Firefox mobile the search field is one "cell" too large to the right and doesn't fit... I think I'm good. It seems petty, maybe, but the creator can't get their homepage right with it, I'm not sure I trust it.
If someone built a full C compiler but it throws errors when compiling itself, would you use it?!
wsintra2022
Second this, I opened the link and saw it was jank in my mobile browser. Why would someone not check that before showing the world? Anyway I am a fan of terminal and definitely on the bandwagon that a lot of the comments allude too. My reason; keeps fingers on the keyboard.
waldrews
Looks great. We should've stuck with BBS's and Gopher all along. Minor issue, scroll bars are showing and getting slight scrolling when using arrow keys.
catapart
Oh, sweet! I really like the faithfulness to the original subject, while still being useful with a mouse.
I was actually going to write a theme for a project I'm working on that is meant to be styled like an inventory terminal from an auto parts store circa 1995, which was all some kind of TUI, so your theme is a great inspiration!
ahdanggit
The _only_ thing I don't like about this is the automatic prefixing of '#' in header tags. Everything about this is freaking awesome.
nonrecursive
This looks amazing! Good job. I don't know that I'd ever use it because there's never enough time for all the things, but thanks for the few minutes of aesthetic satisfaction that brought.
jiehong
That's nice!
## Shameless plug
I explored a bit what older tech such as IBM's TN5250 terminals could bring to the Web [0] 2 years ago. In particular for data input scenarios.
It's designed for Desktops, not mobile.
imiric
Ah, wonderful. It even mimics the empty rectangles when a font doesn't contain a glyph...
This is neat, but no, stop it. TUIs are an abomination of design that poorly mimic actually beautiful UIs. They look the way they do because of inherent constraints of the terminal, not because their authors particularly wanted them to look like that. So bringing that design language to a platform that does support rich UIs is artificially limiting what can be done on the web. It will also never truly have the same design as the terminal, unless you also want to avoid having any rich multimedia, interactivity, or use any web functionality introduced after 1995. At that point, your users would be better served by a text-only or Gemini site instead.
As an aside, I think TUIs are wrong in most cases. If you're building something like a text editor or process manager, sure, they have their place. Although even then I would argue that they shouldn't mimic the look and feel of GUIs, but be purpose-built for the app in question. But most terminal programs shouldn't use TUIs. They should accept command-line arguments to modify their behavior, run and do what the user asked, and then exit. This is how you make programs adaptable, composable, and scriptable. They can still be made interactive at runtime via a different e.g. "client" program, but forcing the user to manually interact with an interface that mimics GUIs is an awful experience.
santiagobasulto
> TUIs are an abomination of design that poorly mimic actually beautiful UIs
My mother used to have an early "digital company" back in the 90s in Argentina. We are from a small town in the "Patagonia region"[0] and there was only 1 programmer in the whole town. The guy was a huge nerd that had spent some time studying in Buenos Aires.
Long story short, my mother hired this kid to build software for him. This is around 1992 so it was all DOS.
This guy built a full TUI software with CRUD operation, reporting, "cron jobs" (some stuff that I never understood but would run every night), printing, etc.
Until this day I remember the people working at my mother's company how they just FLEW over the software. It was all keyboard and hotkeys. They'd just go back and forth, print stuff, enter data, connect with the Fax machine, all with their keyboard in this black screen full of green, white and orange glyphs.
I NEVER found any other software that is SO powerful and efficient and user friendly as TUIs.
[0] The "true" Patagonia region in the East of Arg.
imiric
That's great, but keyboard shortcuts are not exclusive to TUIs. GUIs can be just as powerful in that sense, and most advanced web apps support keyboard navigation. My objection is mainly to the claim that TUIs are beautiful, and to the effort of bringing their design to the web. But this is ultimately down to personal preferences, and others may disagree.
santiagobasulto
Yes, GUIs and Web interfaces can support keyboard navigation. But I have NEVER found one fully exploiting this. Linear (ticket tracking app) is maybe the only one that comes to mind as a good alternative, but nowhere close to the fluidity achieved by TUIs.
I think the reason is "limitation", if you have to design an app that CAN NOT use a Mouse, you'll be darn sure it'll work well with the keyboard.
trollied
You’re correct that modern web apps support keyboard shortcuts just fine. Unfortunately the reality of it is that the modern web is bogged down by the mess that is npm modules, react etc, and the majority of web apps are slow. Oldschool terminal apps you can just type away, and you know your keystrokes will just happen. The modern web? Urgh.
Don’t get me wrong, you can do it right, but most don’t bother with non- functional requirements “this should take 5ms” etc, so you just end up with pointless animations and transitions that stop useful work being done. This is often simple things like the tab order being wrong, or an AJAX request blocking the next thing you want to do.
graemep
Its true in theory, but it does not work well in practice because:
1. Developers have to make an extra effort (and require time) to do it right 2. People are much less likely to learn the keyboard shortcuts
If you designed a GUI to be keyboard first then it might work as you say, but I cannot think of any real life examples of that. I think people need to TUI look to push them to use keyboards.
pjmlp
Except my laptop isn't something bound to 1 MB RAM, with luck having a VGA card able to do 256 colors, running at about 20 MHz with turbo button and a whooping 40 MB hard drive.
jen729w
Except it’s quicker to navigate an interface using keystrokes than it is using a mouse regardless of how much RAM you’ve got.
Compare a proficient travel agent who speaks Sabre to you booking a flight on Skyscanner. They’d whup your ass.
https://youtube.com/watch?v=G8n0_3t-EhI&pp=ygUPc2FicmUgY2xpI...
graemep
I saw similar in the 90s in a bank branch that was still on an old system. People who new it were very, very fast.
varun_ch
I think you’re reading too much into it! This seems like a cute design library for eg. a personal blog or a portfolio website. I really doubt the author thinks this is the best design style, it’s just got an aesthetic that it sticks with, which is fun.
imiric
Haha I suppose you're right. I do get a kick out of similar CSS frameworks that mimic the look of Windows and other OSs. I was just triggered by "beauty of TUIs", but beauty is in the eye of the beholder... :)
eMPee584
TUIs are memory-friendly tools for complex tasks and have a different UX feel (can be more comfortable, clear & informative, accessible) to pure CLI or native/web apps. I for one am extremely happy there's a thriving terminal ecosystem, nowadays with colors, icons (nerdfonts), emojis, mouse support, widget layouts.. even sixels and smooth scrolling..
rvz
Hmm, Not really convinced. I like TUIs and also the aesthetic of them.
Much faster to use on a keyboard than point clicking all over the place with a mouse on the screen or typing the long commands and flags and forgetting a single flag and having to typing it once again.
pfg_
If you forget a flag, can't you move your cursor and add the flag? No need to type the whole command again
wpm
If your terminal is using readline/emacs bindings, Meta + B will go backward one word. Ctrl + a will move the cursor to the beginning of the line. There are of course equivalents if your terminal is configured to use the vi/vim keybinds.
On macOS, you can hold Option and click to emulate the correct amount of left or right arrow presses to move the cursor.
So, no, you don't need to type the whole command again. I would personally probably hit Ctrl + a and move my cursor forward a few words to where I need to add the flag.
runlaszlorun
OMG that's awesome. I've been meaning to goof around with TUI CSS [1] but this looks amazing. Props to the author.
Maybe it's because I cut my teeth on 80s Turbo Pascal but there's something about the TUI that I feel hits an optimum in the simplicity vs use of visual space spectrum so, so lost in a world of Vulkan etc.
pjmlp
It is lost because we aren't producing executable files with multiple segments, jungling near and far pointers, trying to fit everything into 640 KB, while writing directly into the video memory.
Turbo Vision was great and one of the frameworks I am most found of, back in 1990.
I don't understand the obsession with 1980s terminals. They're even less powerful than the contemporary 8-bit home computers. It's perfectly OK to be a retro enthusiast, it's another thing to claim that this is the peak tech to power our modern CLIs, or a solid foundation for portable UIs.
From the docs:
A VT102 already has a character grid, but it needs a serial protocol to allow applications on the mainframe to talk to it. You can loop around this and use the raw mode to address individual cells.The web browser has an insanely powerful typographic and layout engine. Now we're looping back into character cells. Something went wrong here, at least once.
That said, I like the aesthetic and the default color palette. It's quirky, but it has its places.