rollcat 14 hours ago

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:

    Stop thinking in standard CSS units like px, em, rem, %
    Start thinking in Character Cells for spacing, sizing, and positioning
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.

  • sgt 6 hours ago

    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 40 minutes ago

      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.

    • graypegg 5 hours ago

      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.

    • MrJohz an hour ago

      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 3 hours ago

      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 3 hours ago

        > every GUI app had searchable menus

        They do on mac: shift+⌘+? opens a "search menu" menu.

        • no_wizard an hour ago

          This doesn’t always show everything. It’s up to developers to make sure some shortcuts can show up in this documentation beyond system ones

          Luckily most do, but I’ve encountered situations where they haven’t and it only shows compatible system shortcuts

        • sgt 2 hours ago

          The amount of alternative navigation and accessibility in macOS is actually astounding.

        • kmeisthax an hour ago

          OH MY GOD. I never knew about that.

      • c-hendricks 2 hours ago

        > I wish every GUI app had searchable menus

        On macOS and KDE (Wayland), they do! Agreed it's really handy.

    • pjmlp 6 hours ago

      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 5 hours ago

        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 :-)

        • pjmlp 4 hours ago

          Someone is responsible for developing them.

      • rollcat 5 hours ago

        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.

    • _blk 2 hours ago

      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.

  • godelski 12 hours ago

    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 8 hours ago

      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 2 hours ago

        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 6 hours ago

        > 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.

        • rollcat 5 hours ago

          > Two things can be true at the same time, TUIs are superior to GUIs, and GUIs are superior to TUIs.

          TUIs are GUIs - in a trench coat. A TUI program must still process input events, draw widgets, manage state & focus, etc - all the things a GUI must do. What OTOH it can't do, is even the most basic stuff, like system clipboard or displaying pictures. You have to use side channels to get that, and once you do, you throw away the TUI's one single advantage - SSH.

          • godelski 2 hours ago

            My terminal can display pictures and use the clipboard. Most of them can in fact. You might be limited in pictures on some but neither do we live in the 90's anymore. I routinely login to remote machines and view the pictures I have stored on them through my terminal

          • bhaak 3 hours ago

            But the original terminal was also already using a side channel. You used them to connect to a remote piece of hardware and weren’t running anything locally. In that sense ssh itself is also a side channel.

            I also don’t know why you consider manipulating the system clipboard a side channel. The terminal emulator provides a way of manipulating the clipboard but that is just convenience.

            Any program can access the clipboard and a TUI program can do this as well. I have a grepalike that inserts a search match into the clipboard for convience. Somewhat ironically most of the time that match gets pasted back into the terminal.

            I would actually like to have a network wide clipboard system. There are solution for that but I haven’t yet found any that isn’t too unwieldy.

    • sgarland 7 hours ago

      What a lovely sentiment. Fully agree; staying in the terminal for as much as possible makes for far less friction when context-switching.

      • jampekka 6 hours ago

        Text-based interfaces can be done with techniques other than simulating a very restricted device from 1978.

        • godelski 2 hours ago

          If your terminal is from the 70's you really should get with the times. Check out ghostty or something because things are very different these days

    • rollcat 11 hours ago

      > 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_ 36 minutes ago

        > 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 ...

      • dullcrisp 11 hours ago

        Hmm I just use :w<cr> to save in my graphical editors too. It’s easier to type.

        • __float 5 hours ago

          No, it's objectively more difficult to type [on a qwerty keyboard].

          cmd-s is a single keypress and can be done with a single hand.

          shift-; w cr is two more and involves a back and forth over the entire keyboard.

          • dullcrisp 3 hours ago

            I use two hands to type, but if I only had use of one I’d probably use a different key sequence, or more likely a different input method.

            • godelski 18 minutes ago

              To support this claim I'd like to give a common example in vim. Everyone hates `esc`, right? Well I use `<C-[>` instead. Yeah, that's control plus left bracket. 2 keys! But this is a hell of a lot easier that lifting my hand from the keyboard to reach to the top left corner. I just drop my left pinky slightly and move my right ring finger slightly. Both actions are quite normal in how I just type and my wrists never lift. Using two hands is what makes it easy. I neither type with a single finger, I use every one of them. :w<CR> is not hard because :w might as well be one key (plus I'm always hitting : so the action "burns in" as any constant motion does), w is just a normal key requiring very little movement from my rest state, same as pressing enter (pinky).

              I'll give the parent that this is slightly harder than <C-s> but they got the right conclusion for the wrong reasons. But if that trivial extra effort is what's required for what I can do in vim, I'll gladly make that trade. I love my panes, buffers, windows, completion (see :h ins-completion), my visual mode, my search, my replace (way more powerful than many think), my tags that allow me to walk through the program, and how I can effortlessly move my cursor around the screen and around the document. It takes far less effort to move my cursor to where I want than it is to lift my hand and grab the mouse. I love that I can open all files in my project while my computer doesn't even blink, and I can do some refactors of all my code with a single line. No IDE has ever come close to giving me these abilities and I haven't even mentioned the half of it.

      • godelski an hour ago

          > 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 12 hours ago

      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 11 hours ago

        > 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.

        • troupo 11 hours ago

          > If you like monospaced fonts and character grids, you can probably render that with plain SDL

          You don't even need SDL https://github.com/cmuratori/refterm

          • rollcat 8 hours ago

            Interesting project, but you still need to hook it up to a backend to create a window to draw pixels on. SDL is likely the most portable library to do that; you could substitute fbdev, DirectX, wgpu, glfw, win32, metal, and so on.

            The point is, once you have a window and a putpixel (or even better, surfaces and blitting), the rest is easy to handcraft. A standardised library would of course help.

      • freehorse 11 hours ago

        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.

  • suobset 6 hours ago

    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!!

  • onehair 13 hours ago

    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)

  • SkyMarshal 3 hours ago

    There are folks from that era (the 90s and earlier) who learned and mastered TUIs and are very productive with them. Like a pro Wall St analyst operating Microsoft Excel with no mouse, you can fly through them if all the keyboard commands are in muscle memory. Mouse interfaces are more intuitive and easy, but less efficient.

  • geocar 12 hours ago

    > 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 10 hours ago

      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 5 hours ago

        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.

        • pjmlp 4 hours ago

          That is a a barebones REPL from early 1960's, not the experience I was mentioning.

          Imagine Emacs mixed with Jupiter netbooks, for the whole OS stack.

          • geocar 3 hours ago

            > Imagine Emacs mixed with Jupiter netbooks, for the whole OS stack.

            Sounds dreadful.

            > That is a a barebones REPL from early 1960's, not the experience I was mentioning.

            No, that is a definite article. I was talking about three things, two of which are things you brought up in an effort to find common ground. If you don't know Oberon or Acme then there's no point in talking to you about them. I still don't know what you're trying to tell me, and I'm beginning to think you don't either.

  • pjmlp 10 hours ago

    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.

  • pdntspa 13 hours ago

    And can we stop calling every stupid little hobby project "beautiful" while we're at it? The word has no meaning any more.

    • nkrisc 7 hours ago

      What's interesting is nearly all words in language are on an irreversible trajectory towards abstract meaninglessness. Take your own use of the word "project" for example. Long ago, it meant "to throw or thrust" an object. Of course, today its meaning has expanded so far beyond that original meaning. That is what is happening to the word "beautiful", but the only difference is that it's happening during your lifetime, instead of long before it. You probably didn't even think about your "misuse" of the word "project" because the truth is it no longer means what it used to mean.

      Perhaps 500 years from now "beautiful" (or whatever it has morphed into) will simply have a meaning similar to "pleasant".

    • big_paps 13 hours ago

      I find the usage of „i love x“ for x representing something inanimate you surely do not love far more unsettling..

      • tgv 12 hours ago

        This is getting quite off-topic, but I do love music. At least, that's how I would describe it. I just heard a fragment of something truly beautiful, and the my emotional attachment to that music is quite real (in this case, the Largo of Bach's concerto for two violins, BWV 1043; although I know someone who dismissed it as long-winding).

        But words tend to get nerfed, and clickbait culture certainly doesn't help. "Slams" in a headline has been reduced to "made a somewhat negative remark about," and "genius" now means "it took more than 2 seconds of thinking." Let's not discuss what "beyond excited" has become. I too would like word meanings not to shift too fast, as it helps preserve culture, especially literature, but the forces are too strong and diffuse to oppose.

        So "I love this web font" now just means "Don't think, just click on this link."

        • rollcat 8 hours ago

          I would love to help bring elegance and beauty to the software we build, both on the inside and outside - and that's my main motivation behind criticising terminals and TUIs specifically.

          I have vague ideas for how I could build something ergonomic, easy, and pleasant to use, but I lack experience in this area, and the focus/energy to experiment.

          I'm hoping to bring this subject to the light, and have a constructive discussion. If not me, then perhaps someone else will get inspired.

          • tgv 2 hours ago

            IMO, you need to be a domain expert in order to produce something ergonomic, easy to use. You (or the team you're part of) have to understand the topic and users extremely well. There's no catch-all design, not even a process that covers more than the most mundane cases.

            But inspiration is a fickle thing. If you're going to build something, you might as well be inspired by terminal-style interaction, but it can't be the goal.

  • troupo 11 hours ago

    The obsession is with information-dense quick-to-use low-latency interfaces that are nearly impossible to replicate with most modern tools [1]

    Whether libraries like this one manage to replicate the experience is a whole other question.

    [1] Just look at what modern tools FilePilot and RAD Debugger can do with their UIs and compare that to nearly every single one of modern apps.

  • hdjjhhvvhga 8 hours ago

    It's all true but they have one advantage over everything from the last two decades or so: latency. Obviously it's double lost if you try to reconstruct just the aesthetics.

  • nsonha an hour ago

    I like terminal aesthetic, and I think the modeen equivalent of it is high constrast UI, plus minimalistic elements. Forcing character cells onto the web is dumb.

terminaltrove 14 hours ago

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 5 hours ago

    This site is amazing!

jasonjmcghee 18 hours ago

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 18 hours ago

    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 13 hours ago

    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 15 hours ago

    not seeing icons on Firefox (Linux) either. I do have NerdFonts installed, but I guess that shouldn't be needed for a website.

lionkor 10 hours ago

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 7 hours ago

    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.

meta-level 15 hours ago

For python there is also https://github.com/Textualize/textual-web, based on the rich/textual framework

  • nurettin 15 hours ago

    > 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.

jiehong 4 hours ago

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.

[0]: https://jiehong.gitlab.io/web_tn5250

waldrews 17 hours ago

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 10 hours ago

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!

jadbox an hour ago

Examples don't fit on mobile screens :(

ahdanggit 7 hours ago

The _only_ thing I don't like about this is the automatic prefixing of '#' in header tags. Everything about this is freaking awesome.

magicink81 4 hours ago

I came here just to post a few words of encouragement. I think this is fun project. Thanks for making it!

imiric 12 hours ago

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 11 hours ago

    > 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 10 hours ago

      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 10 hours ago

        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 6 hours ago

        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 7 hours ago

        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 10 hours ago

      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 9 hours ago

        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...

        • maccard 7 hours ago

          The bottleneck with Skyscanner isn’t not being able to enter the dates without moving my hands, it’s waiting 30-50 seconds for all the flight options to appear, and trying to figure out “which ones are actually flights with the airplane and not third party resellers”.

          Similarly with IDEs and programming - saving 0.5-2 seconds for 10-20 operations isn’t my bottleneck once I’ve decided to do the thing; waiting for the corporate antivirus to scan the chrome executable that has self updates since it last saw it, plus the VPN timeout because I haven’t logged into a corp site in 3 hours is.

          Besides, visual tools can and do have very powerful shortcuts. ‘Make run’ takes longer to type than pressing F5 does, in visual studio. Photoshop, Maya, Nuke, ProTools, Final Cut, even Unity/Unreal are all graphical tools that have powerful widely used keyboard shortcuts.

        • pjmlp 9 hours ago

          GUIs have keyboard shortcuts for decades, blame the developer that wasn't up to their stuff, not providing keyboard navigation.

          Heck, there are even Win32 and X Windows APIs designed with the exact purpose for keyboard navigation and shortcuts.

          Maybe instead of doing TUIs one should better spend their time learning the tools of their craft.

          Skyscanner failure to adopt such tooling, which browser also have due to accessibility requirements, has nothing to do with technical issues, all about skill and willingness where to spend budget.

    • graemep 7 hours ago

      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 12 hours ago

    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 12 hours ago

      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 12 hours ago

    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 12 hours ago

    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_ 11 hours ago

      If you forget a flag, can't you move your cursor and add the flag? No need to type the whole command again

      • wpm 3 hours ago

        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.

nonrecursive 18 hours ago

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.

runlaszlorun 17 hours ago

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.

[1] https://github.com/vinibiavatti1/TuiCss

  • pjmlp 9 hours ago

    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.

kombine 15 hours ago

I am working on a pitch for an AI startup and need to create a nice looking webpage with the demo. I have very little experience with webdev and I wonder if it is a good idea to build a TUI-like interface, as I am a fan of terminal aesthetics in general. This would much relieve the burden of thinking about design and focus on the content.

  • mcintyre1994 13 hours ago

    Honestly I wouldn’t personally, I’d use a really good components library like https://mantine.dev/ (no affiliation, just a fan) and make your site look similar to your competitors. That’s what people seeing your pitch will expect IMO. Depending who you’re pitching to they might not use a terminal very often.

  • godelski 14 hours ago

      > I am a fan of terminal aesthetics in general
    
    The superpowers from the terminal do not come from aesthetics. They come from the way a language was developed (see my long comment). It is what reduces the burden of thinking and allows for the elegant and seamless movement through the space. It is not about memorizing individual keys, it is about learning a language. That's the power. I want to see more of this, but people miss what was created.
nickandbro 15 hours ago

This is the UI I would have used for my hobby project, vimgolf.ai if I knew about it sooner! Though for certain sections of the site, I might just be able to use it. Great work!

  • godelski 15 hours ago

    Why does this ask for a login when I click on "motions". Sorry but insta pass for me

Lord_Zero 18 hours ago

Icons not loading for me.

n3storm 12 hours ago

Somebody went too far after watching The Brutalist

ximm 12 hours ago

Nice use of the ch and lh units!

godelski 14 hours ago

I'm terminally terminal, but I'll be honest, I'm a bit confused by this. If it is trying to be what I think it is, I *really* want this. But to be a bit blunt, it also feels a bit cargo-culty. To look like the thing but not be like the thing. I'm not saying this to discourage you, because if you are trying to make a web interface that I can fully use via keybindings then please for the love of god keep developing, I want it more than anything.

But the reason it feels so off, or uncanny valley, to me is it looks like what someone thinks a vim interface is, but doesn't feel that way. No buttons work for me other than "/", but that is a pretty common binding on websites anyways. going to the examples page, things feel more weird. I can do {c,d,l,n} to change my theme and {1..5} to access options, but other than that, nothing works. I see <C-i> for inbox but what does this mean? Control + i? (the usual meaning) That doesn't work. Is it command + i? That doesn't work. The annotation is reminiscent of vim and the landing page looks like vim, so am I in command mode? But then why are there no motions? Is this emacs? Oh, I do search and can go to the style-guides page and h,j,k,l motions work. Oh, l takes me to the right pane? Why is H,M,L missing?

To be fair, a lot of TUIs have these same uncanny feelings, but I want to draw your attention to this as it appears people like me are your target audience and I do want this product, so I really do want you to understand what I need and how my space works. There is a lot of method to the madness with vim. A lot of people make the mistake of trying to memorize commands instead of memorizing patterns. There's too much in vim to memorize all individual commands, but if you approach it in the way of there are motion keys and action keys then honestly, you can be highly functional in vim in an after noon! (vimtutor does communicate this btw) So the things like how the theme switching and application switching feel very non-intuitive to me. I have to learn something new but it throws me off because visually it looks like I should be doing another set of patterns. For the theme switching I would expect to do something like `:colorscheme dark` or have some action associated with this (idk, c would be find since you aren't going to be cutting text?) and then an associated motion. The application switching I would want to move like I do with buffers. gt and gT to cycle through, 1gt to go to the email (first), 5gt to all components (5th).

So I love the idea and really, I do want this thing to exist. But at the same time it feels like bizarro land to me. Many TUIs make these same mistakes and it leaves me with the same feelings. What I really want is for the wheel to not be reinvented. In a typical webpage I can surprisingly use a lot of keyboard commands and even use some motions. But what things like vim are very useful for is the movement. It is not a text writer, it is a text editor. So it is important that I be able to have fine control and be able to move through a document (page) quickly. It is important that there is this synergy of combinations of motions and commands (or some other philosophy!) that I can learn the basic rules from and then extrapolate from there. This is the thing that gives me superpowers in the terminal, and this is the exact reason I so desperately want something like this around the web. But I also understand why this is difficult and often missed. After all, most vim users I know never learn the vim meta. But I really want to speak up, not to talk you down but because I really want to see something like this succeed and I want you to understand where these "super powers" come from. It's non-obvious unless you get deep into it, but there is a connecting philosophy that allows people to know how to do something new without having ever been told. You get to a point in vim where it is speaking a language and that is the end goal. Do not design one offs and just maps to useful motions, a good interface has to be a language because the goal is to communicate with the machine.

I hope this makes sense. I really do want to see this thing become a reality. To bridge this gap between our worlds.

  • osel 14 hours ago

    Do you know of any good resources that discuss TUI user interaction/research?

    I'm working on a new project to build some simple workflow applications for business, and one of the aspects I would like to attempt to resolve is the speed of input. It is painful watching operators work with modern GUI inputs, particularly web based as the mouse work slows them down horrendously. And keyboard 'shortcuts' where they exist are often anything but, as the entire GUI model assumes a mouse (or on the web a Document) first.

    It is like you mention about this CSS library, it kind of misses the point in that the awesomeness of TUI is not in the appearance, but rather how workflows that the constraints of a keyboard-first interface enforce allow creative and highly efficient solutions.

    When all you have is a mouse everything becomes a click, and that is a horrible way to input data.

    • godelski 13 hours ago

      I don't, but I hope someone else does. I can speak the language but I doubt I could teach it.

      People see the aesthetics and appreciate the beauty but the best way I can describe the problem is it's like trying to write poetry in a language you do not understand. You can get the rhythm and tone but it has no substance. The aesthetics are driven from the language, the way we play, the way we speak. There's something natural to this but only when you're fluent. The art is a reflection of us. It looks like something you pull from outside, a craft to hone, a monument to build; but it will always miss because it is an expression, a feeling, it comes from you.

      I don't know how to describe it like a linguist would describe a poem. There's depth they see that I don't. I only know the feel, the way Sylvia Plath can make me feel but Su Shi never will. I can appreciate it from afar but it remains foreign. I do not know the language, the culture, the context, so I can only be a stranger as if looking through glass.

      But I do know this. We programmers often fail to see when building and designing things. The Zen of it is to use your things the same way you use the grass under your feet or the air you breathe. It feels weird to call the ground a tool but you use it to move. I certainly do not have the right words but I hope the meaning is clear. The point is to build something that feels as natural as the air you breathe. A space to live in and makes you feel free. It's okay if this has to be learned but there's something more I don't know how to describe. It's like saying it's okay to learn a new language but recognizing that the concept of language itself is natural and part of us. Even without a language we still speak, there is a drive to make sound, to communicate, to express. It makes language inevitable yet as difficult to describe in detail as the beating of your own heart. It's just you

    • tgv 12 hours ago

      But an editor is something where you navigate for a long time, whereas the average web page navigation is brief. In 99.99% of the cases, it doesn't make sense to attach a (complex) keyboard interface to it, and a specifically vim-like interface even less.

      > When all you have is a mouse everything becomes a click, and that is a horrible way to input data.

      Quite a few people access web pages via a table or phone. Touch is often easier than a mouse (not always, though), and can also outdo a keyboard.

      I think web-based TUI is a very small niche. Large-scale data entry might be about the only place where it could work, but then you'd want a highly tailored, ergonomic, user-friendly interface.

bbor 17 hours ago

Execution is incredible, and the idea is far from bad, but I must I say that it is certainly hilarious. Giving serious “we’ve figured out a way to more durably connect microservices!” energy.

Ngl, I see a non-zero chance of this kind of aesthetic catching on for nerdy blogs, which tends to proliferate to the wider web eventually. If nothing else, I love some support for those of us who spend all day reading (stylized) Markdown syntax!

adhamsalama 9 hours ago

This will make it easy for people to write terminal emulators using web technologies that look a lot like actual terminal emulators (like Hyper). So we have gone full circle like twice?