Hacker News new | ask | show | jobs
by SebastianKra 900 days ago
The next generation replacement for CLIs will be Raycast.com or similar. Seriously.

It's significantly more discoverable, faster to use, and provides a high quality interface out of the box.

Composability is currently lacking, but Launchbar shows how that could be done.

Most importantly, it's ridiculously easy to write extensions for. Chances are, if your shell script needs to handle interactive input, you can write a Raycast extension in fewer lines of code.

Developers who seek to advance the terminal should probably focus on building a FOSS equivalent to Raycast instead.

2 comments

Terminals are primarily for folks who want to direct their computer, and not be controlled by it.

Always on chatgpt and cloud sync are non-starters in the first realm, terminals in the second.

You just cherry picked two unrelated optional features to justify dismissing an entire interaction-concept.
As we know, defaults are powerful. Defaults that destroy privacy for one of the last trustworthy local-first interfaces left are quite informative.
Neither sync nor chatGPT are on by default in Raycast.
They have some 'splainin to do then, on their home page. Not to mention, I don't even want my local apps to have the potential to do it.
If you move the goalpost even more, it's gonna clip of bounds.
Interesting take! By implementing our UI in React, we're hoping to make it significantly easier and more accessible to write cross-platform terminal extensions (and renderers / apps for different types of content). One of the interesting directions we're looking at is providing native web-based UI for terminal programs. Like a TUI library that renders to actual UI :)
I agree that React is a good choice for extension developers, but not necessarily react-dom. The web lacks efficient keyboard navigation. What you have is effectively a Jupyter Notebook for the CLI. I by no means want to dismiss the value of that, but there are two possible paradigm shifts that also deserve your attention:

1. The Command-Palette pattern. See [The History of Command Palettes: How Typing Commands Became The Norm Again](https://www.vendr.com/blog/consumer-dev-tools-command-palett...)

2. Keyboard-accessible UI primitives. Raycast have recognised common terminal use-cases and built general-purpose interface components [1]. They implemented a custom React reconciler for their UI.

The downside of Raycast is, that it's proprietary for MacOS only. I believe a Terminal that capitalises on the above two points while staying FOSS could revolutionise Unix/Linux CLIs.

[1] For example https://developers.raycast.com/api-reference/user-interface/...