![]() ![]() Within Warp we can parse the DCS, deserialize the JSON, and create a new block within our data model. OurThis DCS contains an encoded JSON string that includes metadata about the session that we want to render. ![]() Using these hooks, we send a custom Device Control String (DCS) from the running session to Warp. Thankfully, most shells provide hooks for before the prompt is rendered (zsh calls this precmd) and before a command is executed (preexec). For example if the shell wants to tell the terminal to render text red, bold, and underline it would send a specific escape code, which the terminal then parses and renders with the appropriate styles. A terminal implements the VT100 spec, which is used to communicate information from the shell to the terminal. At a high level, a terminal reads and writes bytes from a pseudoterminal to interact with the shell. The terminal has no concept of what program is running, or really of anything that’s happening within the shell. We’ve actually written a blog post about the state of CLIs today and why we should build an integrated shell and terminal experience here. But on top of that, you have access to a code editor for input, and you can discover new and past commands more easily via keyboard-first menus. You can still use the CLI: with Warp you can still write composable commands over SSH. We want to keep the best parts of CLIs while modernizing the experience. Shells can’t show completion menus to help with discoverability. Users can’t move their cursors with their mouse. However, we have observed that more companies are building graphical interfaces to their tools and services we believe this is, in part, because the limited character-in-character-out protocol of the terminal impairs accessibility and discoverability. GUIs are slower, less flexible, won’t work over SSH, and are not composable, etc. We at Warp are huge fans of CLIs: they are easy to build, fast, composable, scriptable, and keyboard-first. ![]()
0 Comments
Leave a Reply. |