Skip to content
andychu edited this page Sep 2, 2021 · 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.
  • 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

  • Buttery Smooth Emacs -- nice observations about legacy architectural decisions and fixes for them!

  • Adventures in Terminal Emulators -- terminal emulators involve parsing, keyboard/graphics, and Unix/libc interaction

  • Typing with Pleasure -- Nice article about typing latency. I can feel the difference in typing latency when I hit Ctrl-Alt-F1 for a text mode terminal vs. when I'm in an Ubuntu desktop, and especially a web browser.

  • Terminal and Shell Performance -- Latency distribution for different terminal emulators. How did he measure it?

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