Hacker News new | ask | show | jobs
by em-bee 44 days ago
the focus nowadays is on shoving meaningless animations into things that should just be simple text, and ads into everything, which inevitably leads to far more noise rather than function

right, but the same is true for all GUIs to an extent. which is why we still feel that TUI and commandlines are more efficient.

what we really want here (or what i want) is a locked down GUI that is efficient to use and designed to display the data that the commandline tools produce. no fancy graphics but a meaningful graphical interface that is not tied to the app that produces the data.

the problem now is that we have two choices, either we write a commandline tool that just spits out unstructured data, or we design the whole interface ourselves down to the last pixel. there is nothing in between.

think about the window manager. X11 used to work like that. windows would just display minimal frames, and the windowmanager would add the decorations to manipulate the windows. all windows look and work the same. in whatever style the windowmanager offered. that's gone now. the decorations are part of the window. that has some advantages, but also downsides.

the web has the same problem. i can't just send structured data. i have to send the whole interface. there is no separation. data and interface are merged in my app. at least now with javascript i can build apps that allow me to pull structured data from the server and display it, so data and app are kept separate. that's what i want on the commandline too. with the terminal functioning as that app that knows how to display the structured data that my commandline tools produce.

1 comments

> a locked down GUI that is efficient to use and designed to display the data that the commandline tools produce [...]

You can have all that. There are various data presentation tools out there (one I can think of right now is Streamlit as I tried it out a few months ago, but I'm not really a data person, Python is just my primary language). For a more general GUI framework that's pretty easy to use and still full of features without tying anything you can look at Flet[0]. Heck Jupyter too is built specifically for processing and presenting data, and can keep things as separate or combine as much as you need.

There are many solutions out there that work really well already, particularly in the Python ecosystem. The all-or-nothing is mainly an ecosystem issue IMO, as web devs don't do much data processing that isn't accompanied by immediate presentation; the web browser is primarily a presentation engine after all.

Don't look to TUIs for good presentation as the terminal just isn't the place for fancy views. It's designed strictly for organizing and displaying - preferably streaming - text, not graphics. Also think of it as a relic from the old days when there were only text displays, modernized in many ways but still bound to those roots. Trying to make it behave like a graphics display is like trying to fit a square peg into a round hole, unless the particular terminal has that support specifically implemented.

[0] https://flet.dev/

Don't look to TUIs for good presentation as the terminal just isn't the place for fancy views

yes but the terminal is still the place where most of the sysadmin and dev work happens. it's a relic that we can't get rid of.

unless the particular terminal has that support specifically implemented

which is exactly what i am aiming for, reinventing the terminal to get support for that built in.

Sounds like you'll more likely than not be crafting that terminal yourself; I'm unaware of any that goes the lengths you seem to desire. But that's actually not that big a deal nowadays given the quality of LLM agents.
there are a few projects with interesting ideas already, warp terminal, which was recently released as FOSS is one, ttyphoon is another. both are not yet where i would want them to be in terms of data display, but they show that reinventing the terminal is possible and hopefully these ideas will get more mindshare
I honestly don't get the deal with Warp. Ttyphoon does look interesting, but it's at least 3 years old and still alpha; doesn't inspire much confidence to be used as anything more than a toy. But then again I've been using Horizon[0] since its debut here, despite encountering some alpha edges. Made a few changes, and now working on a port of it to Python.

But again generally I really don't see these projects going the "full" distance as the processing to presentation pipeline is already generally solved.

[0] https://github.com/peters/horizon

ttyphoon is mostly the work of a single person, who is also working on the murex shell. some projects take longer to gain traction. i am mainly interested in the ideas being explored, and hope that more projects pick them up. i haven't yet had a chance to try it myself.

i also didn't try warp yet. it just came out as FOSS and i am waiting for them to implement the option to disable the AI functions which they promised. what i like about warp is that it treats the output of each command as a separate entity that i can work with. a lot of power comes from that. also the separation of commandline and output if i saw that right. wave is another terminal that does that.

i'd like to take that idea even further. having separate output boxes means that each box can be used differently. i could for example run an interactive program in a box, such as an editor, or a filemanager. even a graphical one. heck, even a browser view. so basically, can treat each box as its own window without the clutter of tabs or windows that i would get otherwise. the potential of this interface is massive.