/terminal

Generic terminal library

Primary LanguageCommon LispGNU General Public License v3.0GPL-3.0

Provides a generic interface an imaginary thing once called a terminal.

It's not fully baked yet, but it's more than half baked.

Unusual characteristics:

  • Doesn't require curses, but can use it.
  • Sort of works on Windows, as well as Unix.
  • Depends on some junk in the the town. and on opsys.

Example usage:

(with-terminal ()
  (tt-clear)
  (tt-write-string-at 5 10 "Guess what key will exit: ")
  (let ((key (tt-get-key)))
    (tt-write-span `(#\newline "That's " (:bold "correct!") ". " #\newline
                     "It was the " (:magenta ,(char-util:nice-char key))
                     " key." #\newline))))
(with-terminal ()
  (loop :until (tt-listen-for .05) :do
    (tt-color (aref #(:red :green :blue :yellow) (random 4)) :default)
    (tt-move-to (random (tt-height)) (random (tt-width)))
    (tt-write-char #\X)))

There's a fairly big docstring on the :terminal package.

There are no automated tests yet, but there are interactive tests in terminal-test.

Note that this depends on yew and is infrequently updated from there.