revery-ui / revery-terminal

Barebones terminal emulator built with ReasonML + Revery + libvterm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

revery-terminal

Build Status

A terminal emulator built with Revery.

This is a barebones terminal emulator factored out from the work to include a terminal emulator in Onivim 2.

It's also a fun exploration in leveraging an Elm-style architecture in a natively compiled application.

image

Pre-requisites

Building

  • npm install -g esy@0.6.2
  • esy install
  • esy build

Running

  • esy run

Limitations

This is just meant as an exploration, and isn't production-ready. In particular, there are some pieces missing:

  • No Unicode support at the moment - assumes ASCII rendering
  • No ligatures or text shaping
  • No Windows support at the moment - we use the openpty API which is not available on Windows
  • Minimal keys are handled

These would all be great contribution opportunities, though!

Source Overview

Main modules

  • src/bin/App.re - this is the entry point for the application (where we start the window, wire up our store).
  • src/bin/Model.re - this is the heart of our application - that provides the definition of Model.t as well as how it changes over time (by providing an updater function).

Supporting modules

  • src/lib/ReveryTerminal.rei - contains cross-platform utilities for working with a terminal.
  • src/pty - small OCaml binding to the openpty system call, to create a pseudoterminal.

Technologies Used

We also use the JetBrains Mono font.

License

MIT

About

Barebones terminal emulator built with ReasonML + Revery + libvterm

License:MIT License


Languages

Language:Reason 80.6%Language:C 17.3%Language:Shell 0.9%Language:OCaml 0.8%Language:C++ 0.3%