Top
Best
New

Posted by mrcslws 4 hours ago

A native graphical shell for SSH(probablymarcus.com)
161 points | 65 commentspage 3
fnordpiglet 2 hours ago|
I prefer hytelnet and MUDs but I don’t count, I’m just too old.
setheron 2 hours ago||
I'm confused -- does this compile it live when the server ships code? How do we resolve dependencies, toolset etc.. Is the idea to just pick an old enough platform toolchain you expect to be present?
mrcslws 2 hours ago|
In all cases, the code is pre-compiled. A user never waits for anything to compile. When Outer Loop installs Outer Shell, it downloads pre-compiled binaries to the server. For Linux these are compiled against a manylinux ABI. Ditto for when Outer Shell installs one of the bundled apps. When a backend serves a native "web" app over HTTP it sends already-compiled ARM (or x86) code to the client.

Dependencies are less of a concern for the frontend binaries. For backends, I use a dependency-light approach, static-linking anything that's needed. Of course, people are welcome to do backends however they want, and just tell Outer Shell about the systemd/launchd units via the API. I used this no-dependency approach to keep everything lightweight and to keep install steps trivial, but admittedly it pushes me in certain directions (for example, using custom binary formats rather than sqlite).

myaccountonhn 3 hours ago||
I am not sure I'd use this over exposing websites with wireguard as those will automatically work across platforms. But it looks like you could create some really cool experiences with it, and I'm happy people are exploring this space.
wolvoleo 1 hour ago||
So a bit like X-forwarding used to do? Cool.
Asooka 40 minutes ago||
In general I would like to see a web browser escape sequence for console applications. Just send a command to the terminal to connect a web browser to your stdin/out and present any UI you want over html. The terminal can then open a regular socket listening on localhost and act as a CGI server. For security the terminal should pick a random IP in the localhost range and a random URL. Technically that is security by obscurity, but guessing a cryptographically secure URL should be hard enough for attackers. The reasons to do it as an escape sequence and not just have the application open a socket and start the browser are: To enable remote GUI; To avoid the complexity of each application implementing networking; To enable better desktop integration, since the terminal itself is part of the Desktop Environment, so it can start a DE-specific browser, preferably in single-application mode. Also, it should be possible to automatically put the application in the background so you basically just run GUI applications like normal.
supertroop 3 hours ago||
Defeats the purpose of the shell. The shell is for CLI interaction.
hnlmorg 3 hours ago||
No. A shell is any user interface. Windows shell is explorer.exe and it used to be possible to change that via a config line in a system INI file.

SSH protocol also isn’t just for CLI work. It supports file transport (eg SFTP), TCP/IP forwarding and even SOCKS HTTP proxying.

You also used to be able to run GUI applications over SSH via X11.

supertroop 3 hours ago||
You have a very loose definition of a shell that conflicts with about 40 years of history.
nativeit 3 hours ago|||
I don't have a dog in this fight, and anyway dogfighting is bad, but the intro to the Wikipedia article[0] reads:

> An operating system shell is a computer program that provides relatively broad and direct access to the system on which it runs. The term shell refers to how it is a relatively thin layer around an operating system.

> Most shells are command-line interface (CLI) programs. Some graphical user interfaces (GUI) also include shells.

The last line I think supports the notion that the term "shell" at least implies a CLI, but I can understand both positions.

---

0. https://en.wikipedia.org/wiki/Shell_(computing)

Edit: I'm shite at formatting on HN

thaumaturgy 3 hours ago||||
The earliest versions of MacOS, all the way up through 9, had a ROM call at 0xA9F4 which was labeled `_exitToShell`. In the days before pre-emptive multitasking, this instruction's job was to force the current application to close and return the user to the MacOS desktop (the Finder). The "shell" in this context being the desktop user interface.

Just FYI.

mrcslws 3 hours ago||||
I wondered if this would be controversial. It all depends where you grew up.

> Cairo, like Chicago, had a new shell (Microsoft’s favorite word for the user interface for launching programs and managing files) and a new file system

https://hardcoresoftware.learningbyshipping.com/p/020-innova...

When I worked at Microsoft 2010 - 2014, the word "shell" was still used in this way. I decided to say "graphical shell", to make it clearer.

hnlmorg 3 hours ago|||
Not really no. I’ve been using shells and authoring new ones for around 40 years across a variety of platforms. The term has always been pretty loosely defined because as technology evolved the term “shell” was borrowed. So like I said, a shell can refer to a graphical core just as much as a text-based one. You can get web shells too.

The original intent was that a shell is a thin wrapper on top of the OS to expose the hosts capabilities. But that hasn’t been an apt description for most of those 40 years.

b40d-48b2-979e 2 hours ago||
Appeal to authority.
metalliqaz 3 hours ago||
command line shell vs graphical shell. My first experience with a graphical shell was dosshell[1]. For a while we called the Windows 3.1 interface "the shell". I guess the terminology has changed since that time.

[1] https://en.wikipedia.org/wiki/DOS_Shell

Panzerschrek 2 hours ago||
> every app is a small HTTP server

This adds unnecessary overhead for communication. using web and web-like approaches on desktop system is a terrible idea.

arnefm 3 hours ago||
Heresy!
PunchyHamster 3 hours ago||
> Isn’t it weird that this doesn’t already exist?

It does. MobaXterm have a bunch of it already, file manager on the side and ability to pass X11

CamperBob2 3 hours ago|
Edit: withdrawing this objection, had no idea that right-clicking allowed the speed to be adjusted.
mrcslws 3 hours ago||
Sure, I just added YouTube mirror link to the post: https://youtu.be/e40PLLuZ5KI

(The one on the website is the standard browser video player, not custom.)

CamperBob2 2 hours ago||
Thanks (and to pelzatessa as well), TIL about the right-click menu on these. That'll come in handy.
pelzatessa 3 hours ago||
but its just standard <video> element, in firefox I can even right-click to change the speed to 2x. It's certainly better privacy-wise.