WindTerm/README.md
2020-10-18 13:45:12 +08:00

11 KiB
Raw Blame History

WindTerm

A professional SSH/Telnet/Serial/Shell/Sftp client for DevOps.

Hello WindTerm 🌹, hello world!

We're just beginning! If you want a high performance text editor, you can try WindEdit.

License

Completely FREE for commercial and non-commercial use without limitations. All released source codes (except thirdparty directory) are provided under the terms of Apache-2.0 license.

Introduction

See Intro Videos

Download

Windows Binary: https://github.com/kingToolbox/WindTerm/releases

(The binary of Macos and Linux will be committed later)

Source Code

WindTerm is a partial open source project, and the source will be gradually opened.

Open source code includes, but is not limited to, the classes that can be used independently, such as functional, algorithms, gui widgets, etc., as well as functional libraries, such as network, protocols, etc., as well as all types that require open source according to the license.

Issues and feature requests

Any issues and feature requests are welcome. Please click issues to commit an issue.

Screenshots

Main Window:

MainWindow

Split views:

SplitView

DigeWhite Theme:

DigeWhite Theme

Features

  • Supports changing the UI theme. Intro Video
  • Supports setting the tab color. Intro Video
  • Supports closing tabs to the right.
  • Supports highlighting the opening and closing delimiter, such as (), [], {} and the customed delimiters. Intro Video
  • Integrated sftp, scp client, supports download, upload, remove, rename, make new file/directory and so on. Intro Video
  • Integrated local file manager, supports move to, copy to, copy from, remove, rename, make new file/directory and so on.
  • Local and remote modes with vim keybindings. (Using Shift+Enter key to switch between remote and local mode) Intro Video
  • Command palette. Intro Video
  • Command sender. Intro Video
  • Quick Bar. Intro Video
  • Paste Dialog. Intro Video
  • SSH v2, Telnet, Raw Tcp, Serial, Shell protocols implemented. Intro Video
  • Supports vt100, vt220, vt340, vt420, vt520, xterm, xterm-256-colors.
  • Supports color schemes like vscode. Intro Video
  • Supports time stamp, folding, outlining, split views.
  • Supports unicode, true-color, mouse protocol, etc.
  • Supports auto wrap mode. Intro Video
  • Supports SSH auto login with password, public-key, keyboard-interactive, gssapi-with-mic. Intro Video
  • Supports session logging. Intro Video
  • Supports SSH auto execution when session authenticated.
  • Supports SSH agent forwarding. Intro Video
  • Supports X11 forwarding. Intro Video
  • Supports direct/local port forwarding, reverse/remote port forwarding and dynamic port forwarding. Intro Video
  • Supports searching and previewing. Intro Video
  • Session dialog and session tree.
  • Rename and duplicate session. Intro Video
  • Restore last sessions and layouts when restart. Intro Video
  • Protocols and terms can be customed.
  • All vttest tests have passed except Tektronix 4014.
  • High performance, low memory, low latency. Intro Video

Sftp Performance

The hardware used for generating the data in these benchmarks was

windows 10 - 2.3 GHz Intel Core i5 and 8GB memory.

WindTerm1.7, WindTerm 1.2, FileZilla 3.48.1, WinSCP 5.17.2 (Build 10278) tests are performed on WSL(Ubuntu 18.04.2).

All test data is for reference only.

  • 5GB huge file (5,154,830 KB), generated by random data
Download Time Download Rate Upload Time Upload Rate
WindTerm 1.7 (Use high speed transfer) 24s 211.6 MB/s 21s 240.3 MB/s
WindTerm 1.7 24s 210.3 MB/s 21s 239.4 MB/s
WindTerm 1.2 37s 139.3 MB/s 43s 119.9 MB/s
FileZilla 32s 161.1 MB/s 30s 171.8 MB/s
WinSCP 81s 63.7 MB/s 91s 56.7 MB/s
Download Time Download Rate Upload Time Upload Rate
WindTerm 1.7 27s 3.8 MB/s 13s 8.1 MB/s
WindTerm 1.2 32s 3.4 MB/s 10s 10.7 MB/s
FileZilla 48s 2.2 MB/s 35s 3.1 MB/s
WinSCP 42s 2.6 MB/s 12s 8.9 MB/s

Terminal Performance

The hardware used for generating the data in these benchmarks was

windows 10 - 2.3 GHz Intel Core i5 and 8GB memory.
MacOs 10.13 - 2.3 GHz Intel Core i5 and 8GB memory.

WindTerm 1.7, rxvt, putty, xterm tests are performed on WSL(Ubuntu 18.04.2).

Iterm2, kitty, Alacritty tests are performed on MacOS shell,

For WindTerm: No color scheme used in windterm. Color scheme will result in approximately 2% loss and more memory usage.

For Alacritty: Can not find how to set the scrollback lines limit, so every test use its default setting and no memory usage measured.

The version of terminals:

windterm      v1.7
rxvt-unicode: v9.2.2
putty:        v0.71
xterm:        v3.30
iterm2:       v3.3.6
alacritty:    v0.3.3
kitty:        v0.14.6

All test data is for reference only.

  • 97.6MB random text (102,401,504 bytes, 1,329,878 lines, generated and tested by random_test.sh)

In all cases, three runs were made to warm system caches. The reported numbers are the median of five runs.

  1. Telnet:
Lines of scrollback Data Rate(MB/sec) Memory Usage(MB)
WindTerm unlimited 43.6 107.9
rxvt 1,350,000 37.8 842.2
Putty 1,350,000 4.9 733.4
xterm 1,350,000 2.2 3328.4
  1. SSH:
Lines of scrollback Data Rate(MB/sec) Memory Usage(MB)
WindTerm unlimited 42.4 110.0
rxvt 1,350,000 40.2 842.2
Putty 1,350,000 4.8 734.9
xterm 1,350,000 2.3 3328.4
  1. Shell:
Lines of scrollback Data Rate(MB/sec) Memory Usage(MB)
iterm2 unlimited - (Take too long time) more than 1300
kitty unlimited 17.2 2655
Alacritty Limited scrollback 41.4 -
  • time seq 1 n
  1. n = 1,000,000, scrollback = 1,000,000 Lines
Time(sec) Memory Usage(MB)
WindTerm 1.302 18.2
rxvt 5.082 633.3
putty 4.161 551.1
xterm 40.421 2500.7
iterm2 2.116 146.3
Kitty 2.535 2376.5
Alacritty 1.215 Not measured, use its default scrollback setting
  1. n = 2,000,000, scrollback = 2,000,000 Lines
Time(sec) Memory Usage(MB)
WindTerm 2.405 32.3
rxvt 10.896 1266.6
putty 16.045 1102.6
xterm 68.154 5005.5
iterm2 4.181 383.2
Kitty 5.620 4749.9
Alacritty 2.448 Not measured, use its default scrollback setting
  1. n = 5,000,000 scrollback = 5,000,000 Lines
Time(sec) Memory Usage(MB)
WindTerm 5.704 69.5
rxvt 27.533 3166.2
putty 45.911 2757.1
xterm - Out of memmory
iterm2 10.805 1048.3
Kitty - Out of memory
Alacritty 6.172 Not measured, use its default scrollback setting
  1. n = 10,000,000 scrollback = 10,000,000 Lines
Time(sec) Memory Usage(MB)
WindTerm 11.255 132.3
rxvt - Out of memory
putty - Out of memory
xterm - Out of memmory
iterm2 20.468 2231.3
Kitty - Out of memory
Alacritty 12.332 Not measured, use its default scrollback setting
  1. n = 10,000,000 scrollback = 30 Lines
Time(sec) Memory Usage(MB)
WindTerm 10.546 0.8
rxvt 9.687 0.1
putty 95.382 0.4
xterm 286.510 0.1
iterm2 25.448 7.4
Kitty 16.104 0.5
Alacritty 12.221 Not measured, use its default scrollback setting

Latency

Considering the network influence on the latency, the following data is from DIGEdit. DIGEdit is the text component of WindTerm.

Min Max Avg SD
DIGEdit 1.9 7.6 2.9 0.8
Windows Notepad 0.9 16.5 7.8 1.8
GVim 0.9 10.4 2.8 1.2

Shortcuts

Shortcut Action
Alt+C Copy
Alt+D Show command palette
Alt+F Find
Alt+F3 Find next
Alt+Shift+F3 Find previous
Alt+F4 Exit
Alt+M, Alt+F Toggle full screen
Alt+M, Alt+H Toggle hex view
Alt+N New session
Alt+O Open session
Alt+S Save text
Alt+T, Alt+B Toggle margin blank
Alt+T, Alt+F Toggle margin fold
Alt+T, Alt+N Toggle margin number
Alt+T, Alt+S Toggle margin symbol
Alt+V Paste
Alt+W, Alt+D Close active dock
Alt+W, Alt+G Close active group
Alt+W, Alt+H Split horizontally
Alt+W, Alt+L Show outline pane
Alt+W, Alt+V Split vertically
Alt+X Copy and paste
Alt+- Zoom in
Alt++ Zoom out
Alt+[ Activate next view
Alt+] Activate previous view
Ctrl+. Jump to next fold
Ctrl+, Jump to previous fold
Ctrl+Shift+A Select all text
Ctrl+Shift+T Reopen closed session
Ctrl+Shift+W Close current session
Ctrl+Shift+- Select current fold text
Shift+Del Copy
Shift+End Jump to document end
Shift+Home Jump to document home
Shift+Ins Paste
Shift+PgDown Jump to next page
Shift+PgUp Jump to previous page

Roadmap

Release cycle:

2-4 weeks.

Next release (Early Octoberfor reference only):

  • Linux Version
  • Linux bash
  • External tools

Todo list:

  • Protocols:
    • Rlogin
    • SSH
      • ProxyCommand
  • UI:
    • Config dialog
  • Terminal:
    • MacOs bash
  • Session:
    • Auto Complete
    • Proxy
    • Chat mode
    • Log viewer
  • File transfer:
    • ftp, ftps
    • Xmodem, Ymodem, Zmodem(sz, rz)
  • Script, macro and plugin stystem
  • More ...