Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/humphd/browser-shell
A Linux command-line shell in the browser
https://github.com/humphd/browser-shell
browser filesystem linux xterm
Last synced: 12 days ago
JSON representation
A Linux command-line shell in the browser
- Host: GitHub
- URL: https://github.com/humphd/browser-shell
- Owner: humphd
- License: mit
- Created: 2019-02-07T01:24:54.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-26T19:37:10.000Z (over 5 years ago)
- Last Synced: 2024-08-02T18:43:43.734Z (3 months ago)
- Topics: browser, filesystem, linux, xterm
- Language: HTML
- Homepage: https://humphd.github.io/browser-shell/
- Size: 12.6 MB
- Stars: 284
- Watchers: 8
- Forks: 13
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# browser-shell
A [Linux shell](https://github.com/humphd/browser-vm) in the browser via
[forked v86](https://github.com/humphd/v86/tree/filer-9p-lastknowngood),
with bi-directional POSIX filesystem (via [Filer](https://github.com/filerjs/filer))
shared over [Plan 9 resource sharing](https://www.kernel.org/doc/Documentation/filesystems/9p.txt).The Filer filesystem in the browser is mounted in the Linux VM at `/mnt`.
## Demo
You can play with the [online demo](https://humphd.github.io/browser-shell/), or
watch a [screencast on YouTube](https://youtu.be/TFxpPbNDlJw).The first time you boot, it needs to download the ISO, and do a cold boot. After
that it will cache the state of the VM in Cache Storage, and reboots will be
nearly instant (like resuming your laptop form sleep).The shared filesystem's root dir (`/`) is mounted in `/mnt` in the Linux VM.
You can open the console and get access to `fs`, `path`, and `Buffer` if you want
to try doing things from JS with the filesystem; just remember that your files
are rooted in `/` vs. `/mnt` in JS.Below, I demonstrate creating some files and directories from
Linux, then accessing them via JS and the console, and vice versa. Pretty much
anything that Linux can do with a filesystem should work, including working with
files, directories, symlinks, and all the usual I/O commands. File a bug if you find
something that doesn't work.![](screenshots/browser-shell.gif)