Hacker News new | comments | show | ask | jobs | submit login
Show HN: Terminal, a sandboxed command-line interface for iOS (github.com)
62 points by louisdh 11 months ago | hide | past | web | favorite | 47 comments

This project is open source: https://github.com/louisdh/terminal

This is just a very simple frontend to this library: https://github.com/holzschu/ios_system

That library is just a simple implementation of some basic commands. It does not do any executable execution, it does not use the real system utilities. Nor does it has anything to do with Bash, or shell scripts. It’s just basically one big ‘switch’ for all commands, which are implemented in the app itself.

So, kinda like BusyBox?

Except busybox allows execution of external binaries. And BB is much (MUCH) more complete. Let that sink in.

Glad to see the developer who reserved the name was able to put it to good use. Almost all built-in MacoS app names have been taken on the iOS store [1].

[1] https://judge2020.me/rmTqJ5XV.png

Seems great! Any plans to include ssh and/or mosh?

> Any plans to include ssh and/or mosh?

I saw this mentioned on a blog that I read only last night:

Blink Shell: Mosh & SSH by Carlos Cabanero


It’s $20, so I haven’t tried it yet. UI looks good and reviews seem positive. I am not affiliated with the app or dev.

It is expensive, but it looked really good so I was willing to give it a try. We'll see how it works out.

Blink is awesome.

It's also open source and pretty easy to build yourself if you have Xcode around.

Getting access to SSH private keys might be an issue.

There's Blink (blink.sh) already for that use case

Clickable: http://www.blink.sh/ - interesting as it's designed for mobile responsiveness and uses it's own protocol.

Ah keychain, of course :) Thanks for pointing that out.

I've had luck with Termius (and it's free)

In the past, it was against App Store Guidelines to have interpreters in an app. Is that no longer the case?

Could there be an app that has a Python interpreter built into it, so that the logic of the app used Python, with just a Swift/ObjC UI on top of it?

Yes, there are multiple apps built around a Python interpreter (Quik by GoPro is one that I know of).

I think that policy changed around 2011.

The app in question is Pythonista. it’s kind of wonderful.

I think the guidelines still disallow JIT compilation.

Very nice so far! Could this run an actual shell (bash), with support for a .bashrc (aliases!) and readline?

Could there be compatiblity wrappers for rsync/scp, falling back to curl?

I'm also not that into green on black. Any plans for themes?

Check out pythonista. It can do many of the things you are talking about, except in Python!

Yeah, my point exactly! If Pythonista can be on the app store, then why not a full shell?

You can't fork() in App Store apps. Which is why all of the commands on the linked Terminal app are built-ins. So a bash-like of sorts could be made to work, but it would be very different and quite limited.

You can’t fork a kernel thread. The hard part, and the value, of such an app would be a userspace fork() to a simulated thread.

I'm not sure what you mean - what's the relevance of a kernel thread (or threads in general) here?

Curl exists, so you could run bash if you can figure out some way to give it an executable bit (chmod doesn't exist), unless iOS refuses to run executables at all unless they're signed?

iOS refuses to run executable at all if unsigned. In fact, iOS restricts regular apps from calling fork() and exec() so you won't even have a chance to try.

That would probably get removed from the walled garden.

I thought Apple significantly relaxed the rules on running external code inside an app. Pythonista is pretty powerful these days. So I'd be hopeful a full shell with scripting support could make it into the store (still sandboxed, of course)

This is awesome - thank you! Love being able to download files via curl and search with grep under iOS. Any chance of adding a basic text editor (vi, pico, or even ed) and maintaining history across launches?

I think having a separate app for editing files makes more sense on iOS. There's iVim, for example (https://itunes.apple.com/us/app/ivim/id1266544660?mt=8). Maintaining history sounds like a neat feature, thanks for your feedback!

Would it be possible to have an 'open' command that opens any file in their respective app? Maybe even configurable aliases like 'vim' to open files in a specific app (iVim) -- hence my other comment about support for a .bashrc

I think you can use curl to accomplish that for many apps. That’s the secret sauce of Workflow.

Great idea! Definitely calls for aliases, though.

Another idea: would it be possible to mount cloud providers (Dropbox, iCloud, etc)?

Can't see how. Like all iOS apps, it's sandboxed.

Any app can access e.g. Dropbox directly, no? It'd just have to "display" it as a filesystem. Probably too much work..

You said "mount". I took you literally. (Got downvoted for it too; no idea why.)

What I had in mind was basically FUSE (like https://github.com/joe42/CloudFusion). I don't think it would violate sandboxing, but it's probably very non-trivial to implement in this kind of app

iOS apps can access third party services..

It's cool, but are there any practical uses for this?

My person impression is: not really at this time. But it's a pretty amazing proof of concept, and could grow into something immensely useful (a full local shell). I'm really glad this is open source, so there is the potential for people to contribute more substantial functionality.

Looks like it requires iOS 11

Why is it rated “age 17+”?

It says on the next line: "Unrestricted Web Access". The App Store rules say if you can use it to download arbitrary web content, it's gotta be 17+. Otherwise, age restrictions would be pretty much meaningless.

With the (apple.com) it looks like an official release

Yea. And the name is very similar to MacOS’s Terminal.app which is developed by Apple. Might want to update the title to reflect that it’s third party.

OK, we've changed to the project page on Github. Submitted URL was https://itunes.apple.com/app/terminal/id1323205755?mt=8&at=1....

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