xtermjs / xtermjs.org Goto Github PK
View Code? Open in Web Editor NEWThe website for xterm.js
Home Page: https://xtermjs.org
License: MIT License
The website for xterm.js
Home Page: https://xtermjs.org
License: MIT License
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.
I'm mainly just documenting the current dilemma, options that may be used, and why. Feel free to skip down to the tl;dr.
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.app.converter.hasComponent('name')
to check for this. Where converter is just another component/plugin.@hidden
nor the synonymous @ignore
annotations span multiple lines.
excludeNotExported
option an unacceptable comprimise IMO.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?
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.
After xtermjs/xterm.js#398 users who clone the xterm.js repo will have to build it before using it.
Hey,
I would like to redesign the website, the current website looks outdated.
Even more, things as we move along.
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 theonBinary
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.
I got a question on Gitter about how to set the theme, @scragg0x then built a nice Sass helper to generate the colors, we should document how to do it on the site.
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.
There's a security alert in https://github.com/xtermjs/xtermjs.org/blob/master/Gemfile.lock
๐ฑ
Using Chromium 76.0.3809.132
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)
Similar to xtermjs/xterm.js#3850 but command(s) in the website demo
@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.
This task does not work:
xtermjs.org/.vscode/tasks.json
Lines 3 to 15 in 2e527e5
Because there's no corresponding npm script:
Right now if it's run on a fork the link to the code will use the fork's user name, we should hardcode xtermjs
Follow up from xtermjs/xterm.js#2386
See also xtermjs/xterm.js#3222.
The important part is pushed down too far now https://xtermjs.org/
Write a guide for parser hooks:
Original issue: xtermjs/xterm.js#819
That would be nice.
This would make it easier for people to get started.
Hyper is terminal built with web technologies.
Since version 2 it's using xterm.js, https://zeit.co/blog/hyper2
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.
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:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.