Skip to content
andychu edited this page Aug 9, 2022 · 58 revisions

Project Goals

Other Collections of Links

Rich Command Shells

Rich Terminals

  • https://domterm.org/ -- A terminal emulator based on web technologies. Beyond solid xterm compatibility, it supports powerful features for REPL (read-eval-print-loop) consoles: Application output can have images, rich text, and links, with structure-based line-breaking (pretty-printing), and folding.
  • hyper (https://github.com/vercel/hyper) A Terminal Built on Web Technologies. Built with Electron.
  • TermKit -- Interesting but defunct project that makes the Unix paradigm graphical.
  • Terminus: A Terminal Supporting Inline HTML
  • Schirm -- nice screenshot / animation
  • Rat -- Compose Shell Commands to Build Interactive Terminal Applications. Uses git log as an example.

Models for Integrating Commands and Graphics

Writing User Interfaces in Shell

IDEs

  • RStudio -- Has a REPL and different types of panes for displaying an interacting with data. Notably, the entire IDE runs on the desktop and it runs in a browser. I think this is done with Google Web Toolkit.
    • Oil will borrow the model of R data frames (as well as borrowing from enhancements like dplyr, data.table)

Protocols

  • List of Jupyter Kernels -- how do they work? There is a bash kernel. How does it do completion? What hooks does oil need to support kernels?
    • IBash Notebook -- Has the ability to display images inline with the display command. Two problems: buffering, and interacting with REPLs you spawn. These seem like pretty big problems.
  • Microsoft's Language Server Protocol
    • Protocol History -- Is this suitable for shell? Oil will have functions, so at the very least we want to complete function arguments, as well as command line arguments. I think common queries are for declarations and uses, which apply in big shell programs as well.

JavaScript Libraries for the Browser

Implementation Issues

Essays / Articles

Learning from Terminals to Design the Future of User Interfaces -- I agree with almost all these ideas. Current UIs are bloated and slow. Terminals are good but limited. They need graphics, images, tables, mouse interactivity, etc.

Projects

Clone this wiki locally