Включение цветов в Term.js

Я использую term.js для эмуляции терминала в веб-браузере через Javascript и Node.js,

Я уже настроил базовую реализацию и могу подключаться как к локальному, так и к удаленному узлу (я использую узел ssh2 для подключения к удаленному узлу), и все работает нормально, как и ожидалось.
Но все черно-белое (черный фон, белый текст).

У меня есть следующий код в клиенте, который в соответствии с примером в хранилище. Должен ли я добавить дополнительные настройки для включения цветов?

      var term = new Terminal({
        colors: Terminal.colors, //This alone doesnt seem to work
        cols: 80,
        rows: 24,
        useStyle: true,
        screenKeys: true,
        cursorBlink: true
      });

1 ответ

Решение

Цвет работает для меня. Вот моя тестовая установка на Ubuntu:

Сначала установите зависимости: npm install express socket.io ssh2 term.js

Установите colortest пакет на удаленном сервере (в который вы ssh'ing): sudo apt-get install colortest -y

server.js:

var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);

var term = require('term.js');
var ssh = require('ssh2');

server.listen(8000);

app.use(express.static(__dirname + '/public'));
app.use(term.middleware());

io.on('connection', function (socket) {
  var conn = new ssh();
  conn.on('ready', function() {
    socket.emit('data', '\n*** SSH CONNECTION ESTABLISHED ***\n');
    conn.exec('env TERM=xterm-256color colortest-256', function(err, stream) {
      if (err)
        return socket.emit('data', '\n*** SSH EXEC ERROR: ' + err.message + ' ***\n');
      stream.on('data', function(d) {
        socket.emit('data', d.toString('binary'));
      }).on('close', function() {
        conn.end();
      });
    });
  }).on('close', function() {
    socket.emit('data', '\n*** SSH CONNECTION CLOSED ***\n');
  }).connect({
    host: '192.168.100.105',
    port: 22,
    username: 'foo',
    password: 'barbaz',
  });
});

общественности /client.htm:

<html>
  <head>
    <title>WebTerm</title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="/term.js"></script>
    <script>
      window.addEventListener('load', function() {
        var socket = io.connect();
        socket.on('connect', function() {
          var term = new Terminal({
            cols: 250,
            rows: 100,
            convertEol: true,
            useStyle: true,
            cursorBlink: true,
            screenKeys: true
          });

          term.on('data', function(data) {
            socket.emit('data', data);
          });

          term.on('title', function(title) {
            document.title = title;
          });

          term.open(document.body);

          socket.on('data', function(data) {
            term.write(data);
          });

          socket.on('disconnect', function() {
            term.destroy();
          });
        });
      }, false);
    </script>
  </head>
  <body>
  </body>
</html>

казнить node server.js а затем посетить http://localhost:8000/client.htm в вашем браузере. Вы должны увидеть что-то вроде этого.

Другие вопросы по тегам