isoterm
Version:
A Terminal With Precisely Configurable Fonts Using CSS Unicode Ranges
44 lines • 7.05 kB
JSON
{
"name": "isoterm",
"version": "0.0.0",
"description": "A Terminal With Precisely Configurable Fonts Using CSS Unicode Ranges",
"main": "./.",
"repository": {
"type": "git",
"url": "git+https://github.com/loveencounterflow/xxterm.git"
},
"keywords": [
"xterm",
"terminal",
"webterm",
"unicode",
"css",
"ranges"
],
"author": "",
"license": "MIT",
"bugs": {
"url": "https://github.com/loveencounterflow/xxterm/issues"
},
"homepage": "https://github.com/loveencounterflow/xxterm#readme",
"dependencies": {
"@vamidicreations/screenres": "^2.0.3",
"cnd": "^9.2.2",
"datom": "10.0.1",
"express": ">=5.0.0-beta.1",
"guy": "4.1.2",
"intertype": "^7.7.0",
"mixa": "0.2.0",
"mudom": "^0.2.3",
"nodexh": "^2.1.0",
"port-used": "^2.0.8",
"randexp": "^0.5.3",
"ws": "^8.5.0"
},
"scripts": {
"build": "coffee --map -o lib -c src",
"test": "echo see 'https://github.com/loveencounterflow/hengist/tree/master/dev/xxterm' (planned)",
"preinstall": "./git-clone-xtermjs"
},
"readme": "\n\n\n<img src='app/static/logo.png'>\n\n\n# XXTerm\n\n\n\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*\n\n- [A Terminal With Precisely Configurable Fonts Using CSS Unicode Ranges](#a-terminal-with-precisely-configurable-fonts-using-css-unicode-ranges)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Live Replay / Echo](#live-replay--echo)\n- [To Do](#to-do)\n- [Is Done](#is-done)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n## A Terminal With Precisely Configurable Fonts Using CSS Unicode Ranges\n\n* Why XXTerm\n* Why CSS Unicode Ranges\n\n## Installation\n\nClone this repo into a convenient location, then run `pnpm install` (or `npm install` if you prefer).\n\n\n```bash\npnpm add -g yarn # or `npm install -g yarn`\ngit clone https://github.com/loveencounterflow/xxterm\ncd /path/to/xxterm\npnpm install\n```\n\nThe `clone` command will take a little while because XXTerm includes some fairly large CJK fonts (more or\nless the reason I started this is to have good coverage of CJK codepoints). The `install` command will also\ntake some time because it calls `git-clone-xtermjs`, a script that clones and prepares\n[xterm.js](https://github.com/xtermjs/xterm.js).\n\n> **Note** `xterm` will want to run tests using `yarn` which should be installed globally. The tests will\n> fail **for seemingly unrelated reasons** unless `yarn` is found, and because of this failure,\n> transpilation of modules will likewise not complete, meaning the `xterm` subdirectory is left in an\n> unusable state. What's more, the tests will also download `playwright` which is needed for these very\n> tests only (not for displaying a terminal in the browser as such), incurring a sizable additional\n> dependency just because `xterm` insists on running tests when being installed (as such not a bad idea, but\n> still). I hope that in the future, we can resolve these inconveniences and avoid unnecessary downloads,\n> but for the time being I do not see precisely how to accomplish that.\n\n\nChromium is currently hardcoded to be used for the web terminal; on Debian-ish system, install it with\n\n```bash\nsudo apt install -y chromium-browser\n```\n\n\n## Usage\n\nWhen installation has completed, start a browser window displaying a terminal by executing\n\n```bash\n./xxterm\n```\n\nThis will call `chromium --app=http://localhost:3000`; the browser window will show no menus and no address\nbar. In case the browser window does not show a terminal, press `ctrl+r` or use the button to reload the\nwindow.\n\n## Live Replay / Echo\n\nAs of [commit #3768e37aaa0](https://github.com/loveencounterflow/xxterm/commit/3768e37aaa0486895bbe9e86d7bbccfdc42cdef8)\nthe parent process can echo everything that's going on in the web terminal, including colors, `zsh` line\ncompletions, and even `less` paging (including the ability to clear the screen) and more advanced TUI stuff\nlike `htop` just work. Not sure ATM why that would be useful but it does make for a nice demo!\n\n\n\n## To Do\n\n* **[–]** Move `xterm` code out of main folder\n* **[–]** Make digest or tag to revert to configurable?\n* **[–]** Fix startups with missing terminal element in browser window\n* **[–]** Make browser configurable (now hardcoded to `chromium`)\n* **[–]** Try to avoid the startup delay caused having to wait for webpack (by including bundled code in\n `dist` or by removing webpack altogether)\n* **[–]** Use exit handler to ensure server process gets terminated\n* **[–]** make echoing of web terminal configurable\n* **[–]** `exit` in web terminal should ternminate XXTerm (as it does in other terminal emulators)\n* **[–]** implement On-Page Script (`ops.js`) to avoid having to code insed of `index.html`\n* **[–]** can we mirror errors &c that happen in the browser console to the main process (`cli.js`)?\n* **[–]** make browser console output easier to look at from the web terminal\n* **[–]** handle race condition where a chosen port is no longer available so `server.js` fails to connect\n* **[–]** make browser size configurable\n* **[–]** start server in `cli` process, cutting down from 3 to 2 processes per terminal\n* **[–]** add option whether to start in user mode or in app (kiosk) mode (showing vs hiding user chrome\n like address bar)\n* **[–]** find out how to implement custom key shortcuts (key bindings) when terminal DOM element has focus;\n currently this is blocked by `xterm/src/browser/Terminal.ts:446` &al.\n* **[–]** infinite zoom plane / utopia planitia?\n* **[–]** clarify why in `app/index.html` a useless literal `<script>` tag is needed even when the `defer`\n attribute on the `<script src=\"dist/client-bundle.js\"></script>` tag has been removed—this looks like a\n very strange and unexpected interaction\n\n## Is Done\n\n* **[+]** Avoid connection error on startup (by using a splash screen?)\n* **[+]** Implement useful action (re-clone, update, cancel) to `git-clone-xtermjs` in case folder `xterm`\n should already exist (NB `git reset --hard` can be redone without changing anything)\n* **[+]** Establish websocket communication between server and browser\n* **[+]** Icon (sorta)\n* **[+]** remove dependency on https://cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.auto.min.js\n* **[+]** remove dependency on https://cdnjs.cloudflare.com/ajax/libs/fetch/1.0.0/fetch.min.js\n* **[+]** each `xxterm` instance should look for its own free port, fail with message in case it doesn't\n succeed in the configured range, with configured end digits\n* **[+]** implement opening browser in fullscreen\n* **[+]** implement technique to add key shortcut that overrides browser defaults such as `ctrl+l`, `ctrl+k`\n\n\n\n\n"
}