# Design of the terminal plugin

This document describes the design of the terminal plugin. Any significant change to the terminal plugin should also involve changes here.

# Personas

### Janet Tobin

An experienced data scientist with a graduate degree in a technical field and has been coding for more than 5 years in multiple languages. She is 35 years old, has a solid income, and lives in an urban setting. In the past she has used the Jupyter Notebook alongside a text editor (Sublime Text) and the Terminal app on a Mac. She loves to code and feels at home in a terminal.

**Goal:** Replace the usage of Mac's Terminal app, in particular when running Jupyter on a remote system.

Some things they would do in the terminal include

- Run command line git.
- Small amounts of general software engineering to support their data science, such as running test suites, moving files around at the command line.
- Run vim.
- Run command line IPython.

# User tasks

Users should be able to:

- Open a new terminal (command palette, top menu)
- Close a terminal (UI)
- Change the font size (bigger/smaller) (command palette, top menu)
- Close all terminals (command palette, top menu)
- See the name of the terminal in the dock area tab (UI)
- Copy text from the terminal (UI+keyboard)
- Paste text into the terminal (UI+keyboard)
- Reconnect all terminals after a network outage (command palette)
- Toggle between black/white and white/black (command palette, menu)
- Copy and paste commands into the terminal (shortcut, mouse)
- Go to different directories (commands inside terminal)
- Access or use IPython from the terminal (commands inside terminal)

# Visual Design

- Terminal menu should follow design guidelines for all menus.
- Terminal theme can change from black/white to white/black

Team IO: @faricacarroll @spoorthyv @charnpreetsingh185 @katiewhite360
