Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Cat9: A command-line shell written in Lua (github.com/letoram)
151 points by HieronymusBosch on Oct 17, 2022 | hide | past | favorite | 16 comments


This is actually a small proof of concept for the much larger project that is Arcan or Arcan-fe. Did a fair amount of research into it. Its philosophy is to move away from the traditional desktop experience and create fundamentally unique, new interfaces. More on its founding principles can be found on this site: https://www.divergent-desktop.org/blog/2020/08/10/principles.... The core of Arcan is written in C with a little Lua and takes inspiration from game engines, display servers, and streaming multimedia processors. It combines similar functionality of these traditionally seperate low level graphics to create an all-in-one graphical display engine. According to this slideshow (https://speakerdeck.com/letoram/arcan), the "last mile" for making any gui/tui can be as little as simple scripts. Writing scripts(mostly lua as of right now) can get you a tiling wm, audio/video playback, a libretro-based emulator running a game, and as this post shows a dynamic new command line shell. An interesting project overall to keep an eye on. Can see it used as another modern alternative to the aging X/X11/Xorg on GNU+Linux and BSDs.

Useful links related to Arcan: Website(https://arcan-fe.com/), Creator's Github (https://github.com/letoram), Arcan's Github Repo(https://github.com/letoram/arcan), Creator's youtube channel (https://redirect.invidious.io/user/arcanfrontend).


A very interesting project. Utterly irrelevant, but that blog page is my dream web page. The text centering, the layout, and above all, the background color. It is for me the most pleasant and comfortable color to read text on. Stealing it!


I did this for an internal project - the system controller of an embedded system.

The main CPU booted into a Lua shell, had a VFS implementation so it could read "files" from disk (areas on the flash chip) and had the same io interface to "/tmp" (which was RAM). It looked in /boot to find 00-<whatever>, 01-<whatever> etc. and executed those Lua scripts in numerical order at boot, and it provided stdio redirection over a PCIe link (via thunderbolt, actually) to the host.

Once the boot process was finished, all the peripherals were booted, and the state was quiescent, it fell back into an interactive Lua shell (using the stdio redirection). I could (on the host) run an application that made it look as though I was "logged in".

Since we exposed all the peripherals as Lua classes, and we could interactively call methods on those classes, it was really easy to reconfigure the thing on-the-fly, reset a peripheral with different values, or tune things in the actual working environment. A fair amount of initial work, but it really paid off over the lifetime of the project.

Basically I wrote a very simple OS :) Lots of fun was had.


I feel like this is a better introduction, https://arcan-fe.com/2022/10/15/whipping-up-a-new-shell-lash...


They couldn't have chosen a name that wouldn't conflict with Ethernet standards?

We're already up to Cat7 and it's not crazy to think we'll be on Cat9 in a little while.


Actually, looks like we're up to Cat8!

https://www.tripplite.com/products/ethernet-cable-types


The windows appear to function like they do in plan 9's Rio so I'm guessing that is the origin of 9. What cat has to do with it is beyond me.


from the readme "Cat9 is a user shell script for LASH"

Which would make it "cat-o-nine-tails" I am afraid

https://en.wikipedia.org/wiki/Cat_o%27_nine_tails

Note; I hope this is an incorrect interpretation as it is in very poor taste.


Where does the reference to the tails come from?


the strands of the whip used to LASH


yeah, don't worry, this project isn't in contention for anything.


I love the concept. I must try it.

I have thought about long running jobs just being available right away with whole log in very similar manner as here. I never thought much about Arcan, but now I'm much more intrigued.


this is very cool, and I love seeing folks experimenting with new takes on the old shell.


Nice to see an ambitious project like this trying to do something a bit different.


Are there any good resources you'd recommend on implementing a shell?


>The last flavour covers the no-man’s land of everything in between, the multi-million lines of UI toolkits. They come with much of the complexity of the VMs and about as much barren legacy as the terminals.

TCL/TK was like that.

>Authenticate against the device, not a dynamic ‘user’. Then, allow safe, ephemeral, secure sharing of the smallest, innermost compartment or an interactively defined aggregation thereof. This compartment is ‘the window’, not ‘the desktop’.

From plan9 and the upgraded 9front: Factotum, namespaces.

>The core of the matter is the opaque and unpredictable ‘opt-out’ nature of the automated system responses to user initiated actions, no matter if it is plugging in a USB device, a network cable or downloading a file. You only see the fire after you feel the burns.

OpenBSD, enable and set hotplugd for lots of devices, just return "true". Also, by default (I think) DHCP is not called upon plugging in a cable.

On U3, I think it was used by PortableApps.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: