Giter VIP home page Giter VIP logo

xtermjs.org's People

Contributors

andrienkoaleksandr avatar auroratea avatar bd103 avatar calmery avatar crutchcorn avatar dependabot[bot] avatar dstein64 avatar epicfaace avatar fixator10 avatar fu1996 avatar genshen avatar hello-smile6 avatar indietasten avatar jerch avatar linrock avatar lixire avatar meganrogge avatar mobumin avatar notpushkin avatar parisk avatar s-a avatar sdegutis avatar silamon avatar staticfloat avatar tfolbrecht avatar tyriar avatar uellenberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xtermjs.org's Issues

Simple echo demo for web terminal?

The existing demos I've seen demonstrate socket/pty/node integration with the xterm Terminal control, but what if I have a much simpler use case. I'd like to see a simple client-side-only "echo" demo -- display a prompt, read the user's input and echo it back out.

I see the existing demo alludes to a "fake" terminal which displays a prompt and writes keyboard input, but this does not show me how to read the user's input (especially when it spans multiple lines), how to wire up a standard keyboard shortcut (e.g. ctrl-c), etc.

Also, copy/paste and backspacing across multi-line input does not seem to be working in this scenario out-of-the-box so that would be nice to see too.

Typedoc issues when generating addon docs

I'm mainly just documenting the current dilemma, options that may be used, and why. Feel free to skip down to the tl;dr.

  • TypeDoc doesn't play well with ambient declarations by themselves or when merging (lots of issues)
    • TypeStrong/typedoc#447
    • The issue above describes the output that we get when using the excludeNotExported option. This option is preferred for xterm's addons as Typedoc would otherwise generate docs for module level variables and functions by default. Consider the webLinks addon which has a ton of variables that shouldn't be apart of the documentation. The major pitfall appears when trying to generate both the terminal and addon docs using the same TypeDoc application instance. If they're generated separately, the addon docs won't link back to the terminal.
  • Trying to reuse TypeDoc application instances currently can cause plugin already loaded errors.
    • I'm not sure this is entirely unintended as they use the same component system to load internal components that do not error and plugins can use app.converter.hasComponent('name') to check for this. Where converter is just another component/plugin.
    • The only external TypeDoc plugin in use, typedoc-plugin-markdown which is required to output markdown, chokes on this. It might be worth opening an issue there. Also note that typedoc might bark about being unable to load a plugin because of this even when docs are successfully generated.
  • Neither the @hidden nor the synonymous @ignore annotations span multiple lines.
    • I don't think this is a bug but it makes not using the excludeNotExported option an unacceptable comprimise IMO.

tl;dr

Certain output options between the terminal and addons are conflicting and TypeDoc may have plugin errors when being used twice in the same node process.
I have a work around for the plugin error if we must generate the terminal and addons separately.
How should we aim to generate docs for the addons once they are moved to separate repositories?

Improve documentation for website

I'd like to update the docs so that the descriptions of the functions are included on the README's. The links to the actual code are nice, but it would be more intuitive to have them also included on the website.

Update Website ?

Hey,
I would like to redesign the website, the current website looks outdated.

  • Make it a bit clear what's it about at first glance.
  • Add negative space to make more breathing room.
  • Add a section or page for addons.
  • Dark Mode (cuz why not).

Even more, things as we move along.

implement onBinary data event

Analogous to onData we need a onBinary event to support sending raw byte data to the backend. This is needed to solve issues with mouse reports.

Also add this to the encoding article later on:

Beside string data xterm.js might send raw byte data with the onBinary event. For easier consumption the payload is a JS string, but should be treated as 8-bit data ('binary' encoding in nodejs). Currently this is only used for mouse reports that cannot be encoded legally in UTF-8.

Replaying history sometimes causes control characters to be printed

Hi,

I am handling a use case where I need to allow user to reload/recreate a previously loaded xterm.js window. This use case has a server component that stores all the data that was written to current session's Terminal instance. When a user reconnects to the same session again (perhaps using a different tab / browser), a new Terminal gets created and the server starts streaming (over a websocket) stored data to the new terminal instance. This approach seemed to work fine but after trying multiple reloads like that, I can see some control characters that are being rendered on the Terminal. I have shown a sample below -

:0+r436f^[^[P0+r6b75^[^[P0+r6b64^[^[P0+r6b72^[^[P0+r6b6c^[^[P0+r2332^
[^[P0+r2334^[^[P0+r2569^[^[P0+r2a37^[^[P0+r6b31^[^[P0+r6b32^[^[P0+r6b33^[^[P0+r6b34^[^[P0
+r6b35^[^[P0+r6b36^[^[P0+r6b37^[^[P0+r6b38^[^[P0+r6b39^[^[P0+r6b3b^[^[P0+r4631^[^[P0+r4632
^[^[P0+r2531^[^[P0+r2638^[^[P0+r6b62^[^[P0+r6b49^[^[P0+r6b44^[^[P0+r6b68^[^[P0+r4037^[^[P
0+r6b50^[^[P0+r6b4e^[^[P0+r4b31^[^[P0+r4b33^[^[P0+r4b34^[^[P0+r4b35^[^[P0+r6b42^[^[P0+r436
f^[^[P0+r6b75^[^[P0+r6b64^[^[P0+r6b72^[^[P0+r6b6c^[^[P0+r2332^[^[P0+r2334^[^[P0+r2569^[^[
P0+r2a37^[^[P0+r6b31^[^[P0+r6b32^[^[P0+r6b33^[^[P0+r6b34^[^[P0+r6b35^[^[P0+r6b36^[^[P0+r6b
37^[^[P0+r6b38^[^[P0+r6b39^[^[P0+r6b3b^[^[P0+r4631^[^[P0+r4632^[^[P0+r2531^[^[P0+r2638^[^
[P0+r6b62^[^[P0+r6b49^[^[P0+r6b44^[^[P0+r6b68^[^[P0+r4037^[^[P0+r6b50^[^[P0+r6b4e^[^[P0+r4
b31^[^[P0+r4b33^[^[P0+r4b34^[^[P0+r4b35^[^[P0+r6b42^[^[P0+r436f^[^[P0+r6b75^[^[P0+r6b64^[
^[P0+r6b72^[^[P0+r6b6c^[^[P0+r2332^[^[P0+r2334^[^[P0+r2569^[^[P0+r2a37^[^[P0+r6b31^[^[P0+r
6b32^[^[P0+r6b33^[^[P0+r6b34^[^[P0+r6b35^[^[P0+r6b36^[^[P0+r6b37^[^[P0+r6b38^[^[P0+r6b39^[
^[P0+r6b3b^[^[P0+r4631^[^[P0+r4632^[^[P0+r2531^[^[P0+r2638^[^[P0+r6b62^[^[P0+r6b49^[^[P0+
r6b44^[^[P0+r6b68^[^[P0+r4037^[^[P0+r6b50^[^[P0+r6b4e^[^[P0+r4b31^[^[P0+r4b33^[^[P0+r4b34^
[^[P0+r4b35^[^[P0+r6b42^[^[P0+r436f^[^[P0+r6b75^[^[P0+r6b64^[^[P0+r6b72^[^[P0+r6b6c^[^[P0
+r2332^[^[P0+r2334^[^[P0+r2569^[^[P0+r2a37^[^[P0+r6b31^[^[P0+r6b32^[^[P0+r6b33^[^[P0+r6b34
^[^[P0+r6b35^[^[P0+r6b36^[^[P0+r6b37^[^[P0+r6b38^[^[P0+r6b39^[^[P0+r6b3b^[^[P0+r4631^[^[P
0+r4632^[^[P0+r2531^[^[P0+r2638^[^[P0+r6b62^[^[P0+r6b49^[^[P0+r6b44^[^[P0+r6b68^[^[P0+r403
7^[^[P0+r6b50^[^[P0+r6b4e^[^[P0+r4b31^[^[P0+r4b33^[^[P0+r4b34^[^[P0+r4b35^[^[P0+r6b42^[\

After I press enter , I see the following sequence - 2R0;276;0c

I have no idea about terminal sequences to be able to debug this issue. Any insights are highly appreciated. I am using an old version of xterm.js (3.0.0) because I am working on a legacy code.

Demo broken on xtermjs.org

Using Chromium 76.0.3809.132

https://xtermjs.org/

I get a warning and an error and the demo terminal doesn't react to any input:

jquery-3.1.1.slim.min.js:2 jQuery.Deferred exception: term.on is not a function TypeError: term.on is not a function
    at runFakeTerminal (https://xtermjs.org/js/demo.js:23:14)
    at HTMLDocument.<anonymous> (https://xtermjs.org/js/demo.js:42:5)
    at j (https://code.jquery.com/jquery-3.1.1.slim.min.js:2:30164)
    at k (https://code.jquery.com/jquery-3.1.1.slim.min.js:2:30478) undefined
jquery-3.1.1.slim.min.js:2 Uncaught TypeError: term.on is not a function
    at runFakeTerminal (demo.js:23)
    at HTMLDocument.<anonymous> (demo.js:42)
    at j (jquery-3.1.1.slim.min.js:2)
    at k (jquery-3.1.1.slim.min.js:2)

replace onKey with onData handler in example

@Tyriar Found out the other day why so many xterm.js snippets floating around make use of onKey instead of the easier to use onData handler - its because of our example snippet on the docs demo.

Guess we should reshape this to onData, maybe with a comment about differences to the onKey approach, which also works but is more on the raw input level.

guide for parser hooks

Write a guide for parser hooks:

  • what is hookable
  • general interface (handler order, return values, arguments, current limitations)
  • window options + security concerns / restrictions
  • custom sequences

jekyll-relative-links doesn't update links in markdown

The official docs state that this gem/plugin is a default plugin that cannot be disabled. However, it doesn't appear to work at all when deployed to github or locally.

From the README.md:

What it does

Let's say you have a link like this in a Markdown file: [foo](bar.md)
While that would render as a valid link on GitHub.com, it would not be a valid link on Pages.
Instead, this plugin converts that link to: [foo](bar.html)

It's supposed to make relative markdown links work without modification when deployed to gh-pages. Some of the things that could be handled by this plugin are currently being handled by the docs gulp task.

foo.md and the adjacent bar.md are converted to foo/index.html and bar/index.html respectively by the Jekyll build process.

A relative link in foo.md must refer to bar/index.html by ../../bar thus the normal ../bar.md and/or simply bar.md must be converted for links to work properly.

TL;DR

This link conversion process adds some (would be) unnecessary complexity to current build scripts. It would be better if we could get this plugin to work to simplify things.

Relevant Issues:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.