Skip to content
web terminal emulator
JavaScript HTML CSS
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
client
css
img
server
test
.babelrc
.browserslistrc
.eslintrc.js
.gitignore
.jshintrc
.madrun.js
.npmignore
.travis.yml
ChangeLog
LICENSE
README.md
help.json
index.html feature(index) rm callback Apr 19, 2018
package.json
webpack.config.js

README.md

Gritty License NPM version Dependency Status Build Status Coverage Status

Web terminal emulator. Based on node-pty and xterm.js.

Gritty

Install

npm i gritty -g

Usage

Usage: gritty [options]
Options:
  -h, --help              display this help and exit
  -v, --version           output version information and exit
  --path                  output path of a gritty and exit
  --port                  set port number
  --command               command to run in terminal (shell by default)
  --auto-restart          restart command when on exit
  --no-auto-restart       do not restart command on exit

Windows

On Windows there is no build tools by default. When can't install gritty try to install windows-build-tools first.

npm i windows-build-tools -g
npm i gritty -g

Gritty

Use as standalone

Start gritty, and go to url http://localhost:1337

API

Client API

gritty(element [, options])

const prefix = '/gritty'; // default
const env = {}; // default
const fontFamily = 'Courier'; // default

gritty('body', {
    prefix,
    env,
    fontFamily,
});

Server API

gritty.listen(socket, [, options])

Gritty could be used as middleware:

const prefix = '/gritty'; // default

const auth = (accept, reject) => (username, password) => {
    accept();
};

gritty.listen(socket, {
    prefix,
    auth, // optional
})

gritty(options)

Middleware function:

const prefix = '/gritty'; // default

gritty({
    prefix,
});

Usage as middleware

To use gritty in your programs you should make local install:

npm i gritty socket.io express --save

And use it this way:

// server.js

const gritty = require('gritty');
const http = require('http');
const express = require('express');
const io = require('socket.io');

const app = express();
const server = http.createServer(app);
const socket = io.listen(server);

const port = 1337;
const ip = '0.0.0.0';

app.use(gritty())
app.use(express.static(__dirname));

gritty.listen(socket, {
    command: 'mc',      // optional
    autoRestart: true,  // default
});

server.listen(port, ip);

If you want dinamically change env variables, you can use socket.request for this purpose:

socket.use((socket, next) => {
    socket.request.env = {
        HELLO: 'world'
    };
    
    next();
});
<!-- index.html -->

<div class="gritty"></div>
<script src="/gritty/gritty.js"></script>
<script>
    const options = {
        prefix: 'console',
        command: 'bash', // optional
        autoRestart: true, // optional
        cwd: '/', // optional
        env: {
            TERMINAL: 'gritty',
            CURRENT: getCurrentFile,
        }
    };
    
    gritty('.terminal', options);
    
    function getCurrentFile() {
        return 'filename.txt';
    }
</script>

License

MIT

You can’t perform that action at this time.