├── .gitignore ├── .travis.yml ├── COPYING ├── Makefile.am ├── README-xtermjs.md ├── README.md ├── configure.ac ├── doc ├── DomTerm.icns ├── DomTerm.texi ├── domterm1.svg ├── domterm2.ico ├── domterm2.svg ├── domterm48.png ├── help │ ├── domterm-attach.adoc │ ├── domterm-browse.adoc │ ├── domterm-hcat.adoc │ ├── domterm-imgcat.adoc │ ├── domterm-is-domterm.adoc │ ├── domterm-list.adoc │ ├── domterm-new.adoc │ ├── domterm-window-specifier.adoc │ ├── domterm.adoc │ └── qtdomterm.adoc ├── images │ ├── domterm-1.png │ ├── domterm-2.png │ ├── domterm-panes-1.png │ ├── domterm-panes-2.png │ ├── domterm-polygon-1.png │ ├── domterm-sh-svg.png │ ├── dropdown-gnome.png │ ├── dt-atom1.png │ ├── dt-findtext1.png │ ├── dt-findtext2.png │ ├── dt-fish1.png │ ├── dt-gnuplot1.png │ ├── dt-graphemes.png │ ├── dt-help1.png │ ├── dt-lineedit1.png │ ├── dt-linkhover.png │ ├── dt-pretty1.png │ ├── dt-sixel.png │ ├── dt-viewmode1.png │ ├── dt-viewselect1.png │ ├── emacs-in-firefox-1.png │ ├── pyplot.png │ ├── python-error.png │ ├── python-pandas.png │ ├── python-pretty1.png │ └── python-repl.png ├── ldomterm.man ├── misc │ └── dt-prettynested-saved.html └── style │ ├── docbook-to-html.xsl │ └── domterm.xsl ├── domterm-jar-manifest ├── domterm.appdata.xml ├── domterm.desktop ├── domterm.spec ├── dt-wry ├── Cargo.toml.in ├── rustfmt.toml └── src │ └── main.rs ├── electron-nodepty ├── README.md ├── logging.js ├── main.js ├── package.json ├── preload.js ├── renderer.js └── settings.js ├── electron ├── main.js ├── package.json └── preload.js ├── hlib ├── FileSaver.js ├── browserkeymap.js ├── closure-externs.js ├── commands.js ├── domterm-client.js ├── domterm-core.css ├── domterm-default.css ├── domterm-findtext.js ├── domterm-layout.css ├── domterm-layout.js ├── domterm-menus.js ├── domterm-overlays.js ├── domterm-parser.js ├── domterm-standard.css ├── domterm-utils.js ├── domterm-version.js.in ├── domterm.js ├── dt-combined.patch ├── goldenlayout.js ├── goldenlayout │ ├── css │ │ ├── goldenlayout-base.css │ │ └── themes │ │ │ ├── goldenlayout-dark-theme.css │ │ │ ├── goldenlayout-light-theme.css │ │ │ ├── goldenlayout-soda-theme.css │ │ │ └── goldenlayout-translucent-theme.css │ └── img │ │ ├── lm_close_black.png │ │ ├── lm_close_white.png │ │ ├── lm_maximise_black.png │ │ ├── lm_maximise_white.png │ │ ├── lm_minimize_black.png │ │ ├── lm_minimize_white.png │ │ ├── lm_popin_black.png │ │ ├── lm_popin_white.png │ │ ├── lm_popout_black.png │ │ └── lm_popout_white.png ├── jsMenus.css ├── jsMenus.js ├── macos-traffic-lights.css ├── mark.es6.js ├── screenfull.js ├── settings-manager.js ├── sixel-decode.js ├── terminal.js ├── unicode │ ├── tiny-inflate │ │ └── index.mjs │ ├── uc-properties.js │ └── unicode-trie │ │ ├── index.mjs │ │ └── swap.mjs └── xterminal.js ├── lws-term ├── LICENSE ├── Makefile.am ├── command-connect.cc ├── command-connect.h ├── commands.cc ├── frontends.cc ├── help.cc ├── http.cc ├── junzip.c ├── junzip.h ├── nlohmann │ └── json.hpp ├── option-names.h ├── protocol.cc ├── server.cc ├── server.h ├── settings.cc ├── utils.cc ├── utils.h ├── version.h.in ├── whereami.c └── whereami.h ├── manifest.json ├── native ├── dt-libclip.cc ├── preloads.cc ├── pty │ ├── apue.h │ ├── error.c │ ├── pty.c │ ├── pty_fork.c │ └── pty_fork.h ├── webview.cc └── webview.h ├── org └── domterm │ ├── Backend.java │ ├── ClassBackend.java │ ├── DomHttpServer.java │ ├── ProcessBackend.java │ ├── javafx │ ├── Main.java │ ├── RunClass.java │ ├── RunProcess.java │ ├── WebTerminal.java │ ├── WebTerminalApp.java │ └── WebWriter.java │ ├── pty │ ├── PTY.java │ ├── PtyBackend.java │ └── RunPty.java │ ├── util │ ├── DomTermErrorStream.java │ ├── DomTermErrorWriter.java │ ├── PrintNested.java │ ├── StringBufferedWriter.java │ ├── StyleSheets.java │ ├── Utf8WriterOutputStream.java │ ├── Util.java │ └── WTDebug.java │ └── websocket │ └── DomServer.java ├── package.json ├── qtdomterm.appdata.xml ├── qtdomterm.desktop ├── qtdomterm ├── LICENSE ├── Makefile.am ├── autotroll.m4 ├── backend.cpp ├── backend.h ├── browserapplication.cpp ├── browserapplication.h ├── browsermainwindow.cpp ├── browsermainwindow.h ├── dt_version.h.in ├── main.cpp ├── processoptions.h ├── savepagedialog.cpp ├── savepagedialog.h ├── savepagedialog.ui ├── webview.cpp └── webview.h ├── repl-client.html.in ├── tests ├── 24-bit-color.sh ├── 256-colors.sh ├── Makefile.am ├── UTF-8-width.exp ├── UTF-8.txt ├── colors_and_formatting.sh ├── grapheme-widths.exp ├── grapheme-widths.sh ├── t24.exp ├── test-bash-rc.sh ├── test-defs.sh ├── test-view1.sh ├── test-wrap1.sh ├── vtest-1-a.exp ├── vtest-1-b.exp ├── vtest-1-c.exp ├── vtest-1-d.exp ├── vtest-1-e.exp ├── vtest-1-f.exp ├── vtest-11-6-6-3-a.exp ├── vtest-11-6-6-3-b.exp ├── vtest-11-6-6-3-c.exp ├── vtest-11-6-6-3-d.exp ├── vtest-11-6-6-3-e.exp ├── vtest-11-6-6-3-f.exp ├── vtest-11-6-6-3-g.exp ├── vtest-11-6-6-3-h.exp ├── vtest-11-6-6-3-i.exp ├── vtest-11-6-6-3-j.exp ├── vtest-11-6-6-3-k.exp ├── vtest-11-6-6-3-l.exp ├── vtest-11-6-6-3-m.exp ├── vtest-11-6-6-3-n.exp ├── vtest-11-6-6-3-o.exp └── vtest-11-6-6-3-p.exp ├── tools ├── bash-preexec.sh ├── domterm.ti ├── python │ ├── README │ └── domterm │ │ ├── matplot.py │ │ └── utils.py ├── shell-integration.bash ├── shell-integration.fish ├── shell-integration.zsh └── wrap-saved ├── util ├── dtstyle ├── hcat ├── imgcat ├── jdomterm ├── macOS.plist.in └── svgcat ├── web └── style │ ├── domterm-1col.css │ ├── domterm-l.css │ ├── domterm-r.css │ ├── dt-manual.js │ ├── kawa.css │ └── utils.js ├── webapp └── background.js ├── websocketterm ├── ReplServer.java └── WebSocketServer.java ├── wsdomterm-jar-manifest └── xulapp ├── application.ini ├── chrome.manifest ├── defaults └── preferences │ └── prefs.js └── domterm.xul /.gitignore: -------------------------------------------------------------------------------- 1 | *.class 2 | *.o 3 | libpty.so 4 | libpty.dylib 5 | *~ 6 | build 7 | configure 8 | Makefile.in 9 | Makefile 10 | repl-client.html 11 | jfx-term.html 12 | aclocal.m4 13 | config.log 14 | config.status 15 | autotools-aux 16 | xulapp/domterm-chrome.jar 17 | native/macOS.plist 18 | native/pty/org_domterm_pty_PTY.h 19 | hlib/domterm-version.js 20 | hlib/dt-combined.js 21 | *.stamp 22 | tmp-for-xul 23 | tmp-for-jar 24 | tmp-repl.in 25 | DomTerm-*.dmg 26 | DomTerm.app 27 | doc/*.1 28 | doc/index.html 29 | doc/Applications.html 30 | doc/Architecture-notes.html 31 | doc/DOM-structure.html 32 | doc/Downloading-and-building.html 33 | doc/Features.html 34 | doc/Technical-documentation.html 35 | doc/The-DomTerm-JavaScript-class.html 36 | doc/To-do.html 37 | doc/Wire-byte-protocol.html 38 | doc/DomTerm.xml 39 | doc/man/*.man 40 | doc/DomTerm.iconset 41 | dt-wry/Cargo.lock 42 | dt-wry/Cargo.toml 43 | dt-wry/target 44 | dt-wry/src/versions.rs 45 | web/*.html 46 | web/images/*.png 47 | autom4te.cache/* 48 | bin/domterm 49 | bin/ldomterm 50 | bin/qtdomterm 51 | bin/dt-webview 52 | bin/dt-wry 53 | share/domterm 54 | share/man 55 | tests/*.out 56 | lws-term/ldomterm 57 | lws-term/resources.c 58 | lws-term/version.h 59 | lws-term/git-describe.c 60 | lws-term/tmp-resources 61 | qtdomterm/qtdomterm 62 | qtdomterm/dt_version.h 63 | qtdomterm/*.moc.cpp 64 | qtdomterm/moc_predefs.h 65 | qtdomterm/webview.moc 66 | qtdomterm/ui_*.h 67 | qtdomterm/qrc_data.cpp 68 | qtdomterm/data/hlib/ResizeSensor.js 69 | qtdomterm/data/hlib/FileSaver.js 70 | qtdomterm/data/hlib/bililiteRange.js 71 | qtdomterm/data/hlib/terminal.js 72 | qtdomterm/data/hlib/domterm-all.js 73 | qtdomterm/data/hlib/*.css 74 | .vscode 75 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | jdk: 3 | - openjdk7 4 | - oraclejdk8 5 | script: ./configure && make all 6 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015, 2016. 2017 Per Bothner. 2 | 3 | Loosely derived from WebTerminal, which is: 4 | Copyright (c) 2011, 2014 Oracle and/or its affiliates. 5 | 6 | All rights reserved. Use is subject to license terms. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions 10 | are met: 11 | 12 | - Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | - Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in 16 | the documentation and/or other materials provided with the distribution. 17 | - Neither the name of the copyright holders nor the names of the 18 | contributors may be used to endorse or promote products derived 19 | from this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | -------------------------------------------------------------------------------- /README-xtermjs.md: -------------------------------------------------------------------------------- 1 | # Using xterm.js for DomTerm's rendering engine 2 | 3 | [Xterm.js](https://xtermjs.org/) is terminal emulator "core" 4 | used by many terminals and other JavaScript-based tools. 5 | Its main advantage is performance; in addition it benefits 6 | from a large community. However, it is lacking many DomTerm 7 | features, most obviously embedded graphics or other HTML. 8 | 9 | DomTerm now has experimental support for using xterm.js. 10 | You can have some windows using the DomTerm emulator 11 | and windows using the xterm.js emulator - at the same time. 12 | 13 | To try it, checkout and build DomTerm as described [here](https://domterm.org/Downloading-and-building.html), with one change: 14 | When running `configure` add the `--with-xterm.js` option. 15 | If you want to be able to see what is going on, `--enable-debug` is also suggested. 16 | 17 | To select the xterm.js emulator specify the `terminal=xtermjs` [setting](https://domterm.org/Settings.html). This can be specified on the `domterm` command line or in the `settings.ini` configuration file. 18 | To open a terminal using the DomTerm emulator, specify `terminal=domterm` (the default). 19 | 20 | A list of features available when using `terminal=xtermjs` is planned, 21 | as well as a list of features only available when using `terminal=domterm`. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DomTerm - a terminal emulator and console using DOM and JavaScript 2 | 3 | DomTerm is a combined terminal emulator and REPL console using web 4 | technlogies - i.e. JavaScript and DOM: Users can type commands which 5 | gets sent to an application, which evaluates the command, and displays 6 | the results, typically in some kind of type-script format. 7 | 8 | See the [home page](https://domterm.org/) for more information, 9 | including [list of features with many screenshots](http://domterm.org/Features.html). 10 | 11 | Please use the [domterm-discuss@domterm.org mailing list](mailto:domterm-discuss@domterm.org) for news, questions, and discussions. 12 | Use [the list information page](http://lists.domterm.org/listinfo.cgi/domterm-discuss-domterm.org) to sign up or access the [archive](http://lists.domterm.org/pipermail/domterm-discuss-domterm.org/). 13 | 14 | ![DomTerm screenshot with panes](doc/images/domterm-panes-1.png) 15 | -------------------------------------------------------------------------------- /doc/DomTerm.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PerBothner/DomTerm/eefdc590fcd10406735f39c07c44fd9850f26890/doc/DomTerm.icns -------------------------------------------------------------------------------- /doc/domterm2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PerBothner/DomTerm/eefdc590fcd10406735f39c07c44fd9850f26890/doc/domterm2.ico -------------------------------------------------------------------------------- /doc/domterm48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PerBothner/DomTerm/eefdc590fcd10406735f39c07c44fd9850f26890/doc/domterm48.png -------------------------------------------------------------------------------- /doc/help/domterm-attach.adoc: -------------------------------------------------------------------------------- 1 | ifdef::basebackend-manpage[] 2 | :doctitle: domterm-attach(1) 3 | 4 | == Name 5 | domterm attach - attach to an existing terminal session 6 | endif::[] 7 | ifndef::basebackend-manpage[] 8 | == domterm attach - attach to an existing terminal session 9 | endif::[] 10 | 11 | == Synopsis 12 | 13 | `domterm` [_goptions_] `attach` [_noptions_] _session_ 14 | 15 | == Description 16 | 17 | Open a new window and attach to an existing terminal session. 18 | Typically the session will have been detached, but it is ok 19 | to attach a new window to an existing session. 20 | 21 | You can specify a session one of these ways: 22 | 23 | * A colon (`:`) followed by a session number. 24 | 25 | * A process id. 26 | 27 | * A session name. 28 | 29 | == Options 30 | 31 | See the `window-specifier` help topic for a list of options 32 | that specify if and how to create a new terminal window. 33 | -------------------------------------------------------------------------------- /doc/help/domterm-browse.adoc: -------------------------------------------------------------------------------- 1 | ifdef::basebackend-manpage[] 2 | :doctitle: domterm-browse(1) 3 | 4 | == Name 5 | domterm browse - open a web page in a (sub-) window 6 | endif::[] 7 | ifndef::basebackend-manpage[] 8 | == domterm browse - open a web page in a (sub-) window 9 | endif::[] 10 | 11 | == Synopsis 12 | 13 | `domterm` [_goptions_] `browse` [_noptions_] _url_ 14 | 15 | == Description 16 | 17 | Create a new browser window or sub-window that displays _url_. 18 | This is implemented using an `