EtherTerm (SDL2) Telnet/SSH Terminal
C++ Makefile
Latest commit b836a35 May 10, 2016 @M-griffin Update README.rst
Permalink
Failed to load latest commit information.
UnitTests Started Unit Tests with UnitTest++ in CodeLite. Jan 28, 2015
assets Fixed some missing pixels Jul 6, 2015
tools Publish binary distributions for EtherTerm Feb 22, 2015
.gitattributes 💥🐫 Added .gitattributes & .gitignore files Dec 22, 2014
.gitignore add build output assets to .gitignore Feb 18, 2015
EtherTerm-DEBUG.mk Updated Makefiles for Release Optimizations Feb 22, 2015
EtherTerm-release.mk Updated Makefiles for 2.8 Demo Jun 27, 2015
EtherTerm.linux-DEBUG.mk Updated Linux Makefiles for 2.7 Alpha Build. Jun 20, 2015
EtherTerm.linux-arch-DEBUG.mk Updated Linux Makefiles for 2.7 Alpha Build. Jun 20, 2015
EtherTerm.linux-arch.mk Updated Makefiles for 2.8 Demo Jun 27, 2015
EtherTerm.linux.mk Initial FreeBSD port. Jan 3, 2016
EtherTerm.mk Updated Makefile to Current Build Jun 27, 2015
EtherTerm.osx-DEBUG.mk Updated OSX Makefiles for 2.7 Alpha Jun 20, 2015
EtherTerm.osx.mk Updated Makefiles for 2.8 Demo Jun 27, 2015
Makefile Update Makefile Feb 22, 2015
README.rst Update README.rst May 11, 2016
inputHandler.cpp Fixes for better memory handling. Jun 27, 2015
inputHandler.hpp Fixed Input Buffering Jun 21, 2015
linkList.cpp Code Cleanup via CppCheck Jun 20, 2015
linkList.hpp Code Cleanup via CppCheck Jun 20, 2015
main.cpp Initial FreeBSD port. Jan 3, 2016
mainMenuState.cpp Added in Font Switch Back for Outro.ans display. Jun 27, 2015
mainMenuState.hpp Fixes for better memory handling. Jun 27, 2015
menuConfig.cpp Fixes for better memory handling. Jun 27, 2015
menuConfig.hpp Fixes for better memory handling. Jun 27, 2015
menuFunction.cpp Fixes for better memory handling. Jun 27, 2015
menuFunction.hpp Code Cleanup via CppCheck Jun 20, 2015
menuIO.cpp Fixed SSH Login Dialogs Jun 27, 2015
menuIO.hpp Code Cleanup via CppCheck Jun 20, 2015
menuManager.cpp Fixes for better memory handling. Jun 27, 2015
menuManager.hpp Fixes for better memory handling. Jun 27, 2015
messageQueue.hpp Fixes for better memory handling. Jun 27, 2015
queueManager.cpp Fixes for better memory handling. Jun 27, 2015
queueManager.hpp Fixes for better memory handling. Jun 27, 2015
renderer.cpp Update renderer.cpp Feb 27, 2016
renderer.hpp Fixes for better memory handling. Jun 27, 2015
safeQueue.hpp Fixes for better memory handling. Jun 27, 2015
screenBuffer.cpp Fixes for better memory handling. Jun 27, 2015
screenBuffer.hpp Fixes for better memory handling. Jun 27, 2015
sequenceDecoder.cpp Fixes for better memory handling. Jun 27, 2015
sequenceDecoder.hpp Fixes for better memory handling. Jun 27, 2015
sequenceManager.cpp Fixes for better memory handling. Jun 27, 2015
sequenceManager.hpp Fixes for better memory handling. Jun 27, 2015
sequenceParser.cpp Fixes for better memory handling. Jun 27, 2015
sequenceParser.hpp Code Cleanup via CppCheck Jun 20, 2015
socketFTP.cpp Code Cleanup via CppCheck Jun 20, 2015
socketHandler.cpp Fixes for better memory handling. Jun 27, 2015
socketHandler.hpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
socketSSH.cpp Code Cleanup via CppCheck Jun 20, 2015
socketState.hpp Fixes for better memory handling. Jun 27, 2015
socketTelnet.cpp Code Cleanup via CppCheck Jun 20, 2015
sshState.cpp Fixed SSH Login Dialogs Jun 27, 2015
sshState.hpp Fixes for better memory handling. Jun 27, 2015
stateParser.cpp Re-factoring and Cleanup. May 23, 2015
telnet.hpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
telnetState.cpp Fixed Include Files for SDL_Net Jun 27, 2015
telnetState.hpp Fixes for better memory handling. Jun 27, 2015
termManager.cpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
termManager.hpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
termState.hpp Fixes for better memory handling. Jun 27, 2015
termStateMachine.cpp Fixes for better memory handling. Jun 27, 2015
termStateMachine.hpp Fixes for better memory handling. Jun 27, 2015
tinystr.cpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
tinystr.hpp Update header filenames extensions to C++ std. Jun 17, 2015
tinyxml.cpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
tinyxml.hpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
tinyxmlerror.cpp Re-factoring many changes, Initial Decoupling! Jun 17, 2015
tinyxmlparser.cpp Code Cleanup via CppCheck Jun 20, 2015

README.rst

Introduction

Screenshot

EtherTerm is a portable terminal emulator and telnet/ssh client for Windows and Unix. It differs from standard terminal emulators such as xterm and PuTTY by providing a common telnet and ssh protocol across platforms, with particular focus on font sets appropriate for connecting to BBS servers using cp437, and amiga art.

EtherTerm is comparable to programs such as syncterm and netrunner. Notably: It is an SDL graphics program and makes use of full OpenGL/DirectX graphics acceleration.

Project details

EtherTerm is Public Domain Software, (c) 2014-2015 Michael Griffin <mrmisticismo@hotmail.com>

Currently, no auto-configure environment is provided, and build targets are limited to Windows, Linux, and OSX. EtherTerm is Alpha software. Please report any issues or feature requests as a github issue. Pull requests welcome.

Fonts

Each system can be setup with a default font. Any systems using Syncterm escape sequences for font switching will override the default font.

  • VGA-8x16 (CP437)
  • MicroKnightPlus-8x16 (AMIGA)
  • Mo'soul-8x16 (AMIGA)
  • Pot Noodle-8x16 (AMIGA)
  • Topaz Plus-8x16 (AMIGA)

Fullscreen

ALT + ENTER cycles between:

  • 1x unscaled window
  • 2x scaled window
  • scaled fullscreen

Keymapping

Etherterm currently follows the default Windows telnet output keys sequences as used in Syncterm as ANSI, VT100, LINUX and SCO key mappings are also available.

Copy/Paste

Copy and paste is comparable to X11: Left mouse click and drag to select text on the screen, release to copy selected text to the clipboard. Right mouse click to paste text from the clipboard.

Dialing directory

To add new systems or remove, you must edit the assets/dialdirectory.xml file.

Downloads (Demo Previews)

For all other systems, you must build from the project folder.

Building

Generally, the following libraries must be installed:

  • sdl2 and sdl2_net
  • libssh (Requires OpenSSL, Zlib)

As well as a recent version of gnu/gcc providing g++, or clang.

For Windows, mingw32 or 64 is required.

  • NOTE: EtherTerm will seek an ./assets folder relative to the executable. In this way, it is not (yet) a very "portable" executable. At this stage, please execute only from the project folder.
  • ./EtherTerm to run on unix systems, or just EtherTerm on Windows.

Windows

Must compile with latest c++ environment flags: At the very least and you can also replace 0x with 11 on newer compilers. Usually g++ (4.7)+ or compatible compiler:

` -std=gnu++11 or -std=c++11 `

To build windows you must already have a compiler and the requirements. You can use a good IDE like CodeLite, CodeBlocks, or Visual Studio. You must install the libs and setup the include paths, like any project.

Makefile(s) are provided for g++ compiles on Windows.

With Windows you will need to setup a command line environment appropriate for compilation of this project, or create a build target with the necessary settings using a project file of your preferred IDE:

make clean-win
make win

OSX

  • Install HomeBrew http://brew.sh/
  • brew install sdl2 sdl2_net libssh
  • make clean-osx
  • make osx

Ubuntu, Mint, and Debian Linux

  • sudo apt-get install build-essential libsdl2-dev libsdl2-net-dev libssh-dev
  • make clean-linux
  • make linux

Arch Linux

  • sudo pacman -S sdl2 sdl2_net extra/libssh
  • make clean-linux
  • make linux-arch

Changelog

v2.8

  • Several fixes after the large re-factoring of code.
  • Updates for memory handling and data queue.
  • more fixes and restructing of the internals, no new features yet.

v2.7

  • Reworking of the internal systems
  • Added buffering for input sequences
  • Updated make file for better optimizations and error checking.

v2.4 - 2.6

  • Reworking of the internal systems and various fixes
  • fixes for public key authentication

v2.3

  • ALT + H for quick disconnection ("hangup")
  • SSH login/password prompts when not specified in assets/dialdirectory.xml
  • Selection of various input key mappings (VT100, ANSI, etc.)

TODO

  • "change_scroll_region": csr terminal sequence.
  • "alternate screen" buffer: smcup, rmcup terminal sequence.
  • scrollback buffer.
  • interactively edit the dialing directory.
  • other runtime configuration/setup options.
  • alternative window sizes, currently limited to only 80x25.
  • attempting to reach compliance with terminal type 'xterm-256color'.
  • transfer protocols (x, y, and z-modem).
  • ftp client support.
  • utf-8 encoding.

Acknowledgments and Thanks

  • dingo: Telnet options and general terminal functionality.
  • g00r00: Optimization ideas on scrolling pixels faster.
  • SDL Game Development.
  • maze: Testing and bug reports.
  • Caphood: Testing and bug reports.
  • IceDevil: Testing and bug reports.
  • haliphax: Testing and bug reports.
  • hellbeard: Testing and bug reports.