Jsterm
JavaScript terminal using a JSON pseudo-filesystem.
Install / Use
/learn @clarkduvall/JstermREADME
jsterm
jsterm is a terminal simulator that uses a JSON filesystem. To see it in use, check out clarkduvall.com.
Disclaimer
Most of this was written awhile ago when I knew JavaScript about as well as I know Spanish (which is a little, but not much). It is due for a rewrite with some cool new features like pipes, writable files, and other magic.
How To Use
At the bottom of the js/jsterm.js file, there is a series of term.enqueue() calls. This is where the commands are set that are run when the page loads. Other changes can be made to personalize your terminal. The directory structure is as follows:
- commands - A JS file with all the possible commands that can be run. Add new commands here.
- config - A JS file that has basic configuration information. Change things like the prompt here.
- css - The CSS used on the page.
- images - Image files used in your filesystem.
- js - The jsterm implementation.
- json - Where the filesystem is stored. Change the term.Init() call in js/jsterm.js to change which filesystem is loaded.
For the loading of the filesytem to work locally, you must server the files in the directory from a local server. To do this easily, change into the jsterm directory and run:
python -m SimpleHTTPServer 8000
Filesystem Format
A filesystem is a recursive grouping of JSON arrays of objects. Each nested array represents the listing of items in a directory. Each object in the array defines a file or directory. For an example, see json/sample.json.
make_fs.py
This is a script that will create a jsterm filesystem from a real directory. Examples of how to make different file types are as follows:
- Text file (no execute permissions):
This is a text file.
- Executable/link (MUST BE MARKED EXECUTABLE):
http://google.com
- Image file: can be any image file with a standard extension (e.g. .png, .jpg)
Attribution
If you use jsterm, it would be great if you could link to this GitHub repo. Thanks!
Related Skills
node-connect
352.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
