terminal emulator library with optional gui