mbrumlow / exoshell

Porgramable shell for your terminal

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Exoshell

A terminal proxy with subshell for programmatic control your terminal via Common Lisp.

This is very much a work in progress – Here be Dragons!

Screenshot

/images/exoshell.png

Video

https://youtu.be/xn83HuGUduE

Getting Started

Prerequisites

This project requires ECL (Embeddable Common-Lisp) which can be found at the link below.

Installing

autoreconf -iv
./configure 
make 
Sudo make install 

FAQ

  • Does this require Emacs?

    No, Emacs is not required. But many parts of this project are modeled off of Emacs.

  • Why did you make this?

    See the “Why I made this” section below.

  • What terminal can I use this?

    Any xterm compatible terminal should work fine. Although some things have been tailored to Alacritty not fully implemented xterm implementation. Namely the lack of support for clearing a rectangular region. This may be emulated later.

  • Why this over a normal script?

    Scripts require you to copy them to their target and run them. A function in exoshell can execute on any remote host you are connected to, not requing you to copy the script and or ensure the interrupter exist on the host – so long as you use standard system commands that are on the host.

Why I made this

For the longest time I have wanted to be able to programmatic control my terminal for various task. This is mostly because my career path has required me to log into many differed systems not fully under my control, or as one offs. I often thought it would be nice to be able to log my interactions with such systems, and to be able to automate some of the more repetitive task without giving up interactivity with the terminal as you do with things like expect scripts. The solution for me was to have some way of reading exactly what is on the terminal pragmatically and then reacting to what is on the screen with various code snippets.

Future features

  • Send and receive files from remote nested terminals.
  • Parse JSON on display to gather information.
  • Line, word and character hooks.
  • Expect like handling of events on screen.

About

Porgramable shell for your terminal

License:GNU General Public License v3.0


Languages

Language:C 96.5%Language:Common Lisp 2.0%Language:M4 1.1%Language:Makefile 0.4%