4 ms·
> To get a good terminal UX, I think the answer to this is probably to throw all that compatibility mess away and redesign a modern terminal protocol that bakes
by anon7000 2mo ago
> To get a good terminal UX, I think the answer to this is probably to throw all that compatibility mess away and redesign a modern terminal protocol that bakes in accessibility, regions, scrolling, selection, proper keyboard, etc.
Why not just… a GUI framework or layout that’s meant to be keyboard driven and information dense?
- jeroenhd 2mo agoTUIs run on any OS with minor patches to support quirks, GUI frameworks need a lot of work. TUIs don't need to follow any OS guidelines, cross-platform GUIs always look bad outside of the "main" platform. If you're only targeting macOS/Windows/Gnome/KDE then the solution is easy: just grab a GUI control set and go ham. Then there's remote access: you can spawn an X11 app through X forwarding and have a terrible laggy experience on Linux, you can use RemoteApps on Windows to have a good remote experience (but almost no other platform), you can use VNC to have an awful cross-platform experience, or you can use a TUI and have all the graphs and interactivity you need over a responsive, low-bandwidth connection on any combination of client+server.
- wiseowise 2mo ago> TUIs don't need to follow any OS guidelines, cross-platform GUIs always look bad outside of the "main" platform. So because TUIs look universally bad, they're better than cross-platform GUI?
- Dilettante_ 2mo ago>So because TUIs look universally bad You can't stay engaged if the menus don't bleep and bloop at you and confetti rains down on every click? That's a personal problem. A minimal UI is not automatically a bad-looking UI.
- WA 2mo agoNo, but I want to click to place the cursor in my 10 line prompt wherever I want. I want to double click to mark words. I want to use a scroll bar. I want to copy paste properly and not "23 lines pasted". I don’t want to read docs to find all keystrokes the TUI supports to achieve what I want.
- maleldil 2mo ago> not "23 lines pasted" If you mean what Claude Code does when you paste longer text, you can just press Cmd-V again to show the full text.
- catlifeonmars 2mo agoYou can handle mouse events in a TUI https://ratatui.rs/concepts/backends/mouse-capture/ https://ratatui.rs/concepts/backends/mouse-capture/
- yencabulator 2mo agoAnd I want to read proportional fonts, like just about anything except terminals already uses.
- pjmlp 2mo agoYeah, already in 1990, what an achievement. /s https://en.wikipedia.org/wiki/Turbo_Vision https://en.wikipedia.org/wiki/Turbo_Vision
- notpushkin 2mo ago> cross-platform GUIs always look bad outside of the "main" platform qBittorrent looks great on KDE, and would look great on macOS too if they used native icons (I’ve made a theme for that but was too lazy to install it when I was switching laptops). No idea about Gnome and Windows, but probably alright as well. So, Qt can get you a long way. But you should of course adapt your app to platform conventions and guidelines.
- pwdisswordfishq 2mo ago> I think the answer to this is probably to throw all that compatibility mess away > TUIs run on any OS with minor patches to support quirks So, which one is it?
- Almondsetat 2mo agoThose two are not contradictory statements
- embedding-shape 2mo agoMaybe not, but they do sit on opposite end of an axis looking something like: TUI that runs on any OS |----------------| TUI without any compatibility mess You really can't have both at the same time, either you have great compatibility (which will be a mess), or you don't, to varying degree of course.
- Almondsetat 2mo agoBasically any OS can install any compliant terminal emulator, meaning the cases in which you really have to patch your TUI for another OS are few and infinitely more manageable than GUIs
- Arainach 2mo agoCompliant with what? The proposal is "throw out all the compatibility and build some other kind of terminal" in which case nothing is portable.
- TylerE 2mo agoHow so? The idea is you build all the OS specific stuff into the terminal, not into the programs running INSIDE the terminal. Think Infocom Z-Machine, at the ultimate level, although obviously emulating a full on virtual CPU is overkill. In any case we can surely do better than emulating DEC hardware from 50 years ago.
- eviks 2mo ago> TUIs don't need to follow any OS guidelines, cross-platform GUIs always look bad outside of the "main" platform. TUIs look bad everywhere, so that's strictly worse
- i_am_a_peasant 2mo agoTUIs would be great if they didn't have to render all text the same size, for me that's the main win with GUIs, you have total freedom with what you can do with your pixels. I would definitely be pro minimalist unicode-character-themed GUIs for what it's worth. Where every graphical primitive is basically a unicode character, without the restriction on font size.
- leephillips 2mo agoSome terminal emulators, for example Kitty, can render text at various sizes (within the same window).
- eviks 2mo agoThat's not total pixel freedom, you're still limited to text
- psychoslave 2mo agoThere is not much difference between a TUI and a GUI once the premise is "let's start from scatch all other again for each applications". Sure then there is no guideline that comes between idea and implementation. But there is also no built-in accessibility, UX best-practices and many specificity of handling a vast experience of building something stable over a large period of time with many feedback from many different scenario.
- the__alchemist 2mo ago> TUIs run on any OS with minor patches to support quirks, GUI frameworks need a lot of work. TUIs don't need to follow any OS guidelines, cross-platform GUIs always look bad outside of the "main" platform. Have you tried to write a GUI program lately? I suspect things may have changed. I can write one using Qt, EGUI, etc (Or many other options), and it will just work on Windows, Mac, Linux/Wayland, and Linux/X. Basically, you write your application on top of a GUI framework that smooths over OS differences for you.
- zahlman 2mo ago> I can write one using Qt, EGUI, etc (Or many other options), and it will just work on Windows, Mac, Linux/Wayland, and Linux/X. This is hard to square with the continuing obsession with Electron.
- messh 2mo agoHtml has also some of these properties, targeting the browser. Don't get me wrong. I do like TUIs, they are light weight and compose very nicely with the rest of the terminal (eg tmux). Also, i generally prefer just cli commands over tuis when possible.
- zbentley 2mo agoThat ubiquity is the reason for the limitations of terminals/TUIs discussed in grandparent. Those two are not separable: they’re everywhere precisely because they target the lowest, oldest common denominator (teletype console behavior assumptions from the 1960s). I expanded on this point nearby: https://news.ycombinator.com/item?id=49400697 https://news.ycombinator.com/item?id=49400697
- fsloth 2mo ago”GUIs always look bad outside of the "main" platform.” I think this is slightly wrong in two ways. i) If you want platform native then reimplement the gui on every target platform. It’s as ”simple” as that. If you need to ship to multiple platforms then preferably you need lots of plarform specific engineering in any case. ”I just want my hobby tool” scenario likely does not require cross platform support unless there is market for it. I mean rather than offering the tool on multiple platforms it should be offered on multiple languages first, perhaps. As soon as you are not writing the tool for yourself we are talking markets and distribution. Likely most people can chill out and just implement the gui for themselves (and not even publish it in githubb). ii) cross platform quick-and-dirty way. Without screenreader support, multiple language and glyph support etc. Game ui:s look the same on all platforms. Websites look the same on all platforms. There is place and time for deep ui engineering that respects the _critical_ cross platform issues like accessibility (screen readers etc) and different languages and scripts. And then there is the situation where you want just few images to click. The latter is vastly simpler, fast and fun. But harder to convert to a professional quality gui experience. For small tools and MVPs this sounds like a fair tradeoff.
- ambigious7777 1mo agoi appreciate still having my same tools when i switch from linux to windows devices
- inigyou 1mo agoSending drawing commands to an X server is no more difficult than sending escape code sequences to a terminal. Simpler, even, because it's actually designed for that. And yet it's also more flexible. If your GUI framework of choice is limiting you, you're welcome to write one, just like you're already writing a TUI framework.
- Brian_K_White 2mo agoCountless reasons. Invent a gui client environment that is universal, works the same way everywhere, over any kind of channel, and is already implimented and supported everywhere, and utterly weightless in all dimensions (ram/cpu/network), and then you might be able to ask that question without it being incredibly ignorant. Today the closest you might be able to say is web/electron, which is gross on all counts. If anything the closest is X11, which is not remotely close enough. That's why not just...
- crostlybostly 2mo agoHTML/Javascript would like a word
- flossly 2mo agowe need a way to access locally running web apps without doing an ugly http://localhost:8022 and having to remember that. I'd say http://localapps should give an overview of all web apps running locally, with links to them. Those links should follow a naming scheme where the hostname ends with `.local` or smth. So: http://claudecode.local http://claudecode.local
- antonvs 2mo ago> I'd say http://localapps should give an overview of all web apps running locally, with links to them. Malware will thank you.
- fc417fc802 2mo agoWon't that be cluttered by various random processes listening via 0/0? Perhaps we need a standardized service that web apps can register with.
- mr_olive 2mo agoHah, I was dealing with this problem today. My approach: Add entries for my localhost apps to `/etc/hosts`, and set up nginx as a reverse proxy. Now when I go to `http://myapp.local http://myapp.local` in the browser, `/etc/hosts` tells it to go to `localhost:80`. The http server sitting there knows which port to send the request to. I also made a systemd service that starts nginx automatically. Now I have meaningful URLs for local apps, and I don't have to remember which one is listening on which port.
- trueno 2mo agothere's a million gui frameworks under the sun and i still haven't found one that feels like what everyone has been asking for: good dx, cross platform, fast, not ugly. pick i dunno 2 or 3. tui's get to check 2 or 3 of these just like any other gui library. somehow there still isn't a silver bullet here. now i personally don't build tuis but guake style dropdown simple command and i have some other thing someone made open immediately running in ghostty? hell yea. with that said yes there are some stupid tuis out there that are anything but simple.
- singpolyma3 2mo agoExcept web. Which inexplicably got all of these when no one was looking
- TylerE 2mo agoNot fast.
- psychoslave 2mo agoThat depends what is build and how. Granted that a modern web browser is indeed an order of magnitude heavier than an OS, once that ticket is paid anyway, one can built very far, without relying on any additional bloat that contemporary web frameworks puts on top of it. There is not that much more data to send though HTTPS to bring a far more convenient UX than what raw text bespoke tweaks can offer over SSH.
- singpolyma3 2mo agoHow so? You can make slow things with it of course but it's not inherent.
- zbentley 2mo agoNot “not ugly” either. The flexibility is too high and standardization of UX is too low. Technically, we’re missing adoption of default standard toolkits like swing or GTK, and politically a11y/compliance checkers are a far cry from something like the HIG of old.
- barnabee 2mo agoAgreed. This is exactly what I want, ideally with components and libraries and panels and data shareable and extendable between applications. The closest in spirit is Probably something like Dear ImGui[0] and the ecosystem of components and apps built with it, but it's not quite there for me. Something is missing. [0] https://github.com/ocornut/imgui https://github.com/ocornut/imgui
- jrop 2mo ago[flagged]
- tyre 2mo agocharm.sh builds many such things. I love them and their personality.
- christophilus 2mo agoIt’s trivially easy to run a TUI in a container. Not so much with GUIs. And, since I run as much as possible in containers, and as little as possible on my host machine, I much prefer TUIs.
- yencabulator 2mo agoWayland runs over a UNIX domain socket you know. And if you meant "virtual machine" or "cloud" by saying "container", `waypipe ssh myhost`.
- pjmlp 2mo agoIt is as easy as any X Windows or RDP connection.
- ziotom78 2mo agoBearLibTerminal might be something on this line, although its purpose is mainly for developing rougue-like games. It simulates a terminal in a GUI with a high-level API http://foo.wyrd.name/en:bearlibterminal http://foo.wyrd.name/en:bearlibterminal
- joshka 2mo agoyeah, something along those lines - but more robustly defined.