Skip to content

Commit

Permalink
More docs.
Browse files Browse the repository at this point in the history
  • Loading branch information
sedwards2009 committed Mar 16, 2016
1 parent 6dccfb5 commit 4326a10
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 28 deletions.
35 changes: 11 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

Extraterm
=========
*The terminal with a lot extra*
Expand All @@ -7,11 +6,11 @@ Extraterm

:loudspeaker: Follow development on [Twitter @ ExtratermDev](https://twitter.com/ExtratermDev)

:wrench: Github: https://github.com/sedwards2009/extraterm
:octocat: Github: https://github.com/sedwards2009/extraterm

About
-----
Extraterm is an open source project to build a better modern terminal emulator but it is also a platform for experimentation with more radical features around command line based computer interaction.
Extraterm is an open source project to build a better and modern terminal emulator, and also to experiment with more radical features to enhance the command line. More background information is in the [Why document](why.md).

The primary developer is [Simon Edwards](mailto:[email protected]).

Expand All @@ -20,7 +19,7 @@ Status
------
:warning: Extraterm is very much in development and not suitable for production use. Use at your own risk. :warning:

With that out the way, the primary author does use it as their main terminal emulator. The basics are in place and it will run most common terminal applications such as vi, emacs and joe and even more demanding applications such as midnight commander.
With that out of the way, the primary author does use it as their main terminal emulator on a daily basis. The basics are in place and it will run most common terminal applications such as vi, emacs and joe without problems and even more demanding applications such as midnight commander.

Current features:

Expand All @@ -29,29 +28,17 @@ Current features:
* Multiple tabs/terminals
* Keyboard based selection
* (Basic) vertical split
* Show images
* Show images in the terminal
* Shell integration; can isolate and 'frame' command output
* Previous command output can be used as input for new commands
* Command output is editable in place
* [MIT license](LICENSE.txt)
* ...much more to come

Pages
-----

Getting Started
---------------
A detailed [guide and tutorial is here](docs/guide.md)


Download
--------
Release downloads can be found on the [Releases Page](https://github.com/sedwards2009/extraterm/releases). Installation and instructions are in the [guide is here](docs/guide.md).


FAQ
---
The [FAQ is here](docs/faq.md).


Development & Contributing
--------------------------
Extraterm is an open source project and welcomes contributors. More information about [development is here](docs/development.md).

* ### [Getting Started Tutorial](docs/guide.md)
* ### [Downloads and Releases](https://github.com/sedwards2009/extraterm/releases)
* ### [FAQ](docs/faq.md)
* ### [Development and Contributing](docs/development.md)
9 changes: 6 additions & 3 deletions docs/development.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
Development
===========
Development and Contributing
============================

Read the [Why document](why.md) to get an idea as to how I'm approaching this project.


First: One Simple Rule
----------------------
A simple ground rule: Extraterm is intended to be an open source *project*, and not just open source *code*. This means that all contributors need to be able get along together and cooperate on a basic level in a productive and civil way.
A simple ground rule: Extraterm is intended to be an open source *project*, and not just open source *code*. This means that all contributors need to be able get along together and cooperate on a basic level in a productive and civil way. If you can stick to this rule then you are welcome to this project.


Technology
Expand Down
28 changes: 27 additions & 1 deletion docs/guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Installation
------------
Extraterm support Linux, Mac OS X and Cygwin on Windows. Download the zip file for your operating system on the [github releases page](https://github.com/sedwards2009/extraterm/releases).

Unzip the file somewhere convenient. Start Extraterm by running the `extraterm` or `extraterm.exe` file inside the unzip directory.
Unzip the file somewhere convenient. Start Extraterm by running the `extraterm` or `extraterm.exe` file inside the unzip directory. OS X users can just start the application via the Finder.

Extraterm doesn't need any other installation.

Expand Down Expand Up @@ -99,9 +99,35 @@ Now I can go into selection mode and cut away the parts of the text I don't need
With a shell pipe and `xargs` I can give the list of documents to the `wc` (word count) command:


Executing Commands from Selection Mode
--------------------------------------
Command output in a frame can be edited directly. Extraterm also has some shortcuts to make this capability even more useful.

* `Ctrl+Enter` will type the currently selected text into the shell.
* `Ctrl+Shift+Enter` will type the currently select text into the shell and press the enter key. Effectively it executes the selection in the shell. Use with care.



Tips
====

See the [FAQ](faq.md) too

Keyboard Shortcuts
------------------

| Shortcut | Action |
| -------- | ------ |
| `Ctrl+Shift+T` | Create a new tab |
| `Alt+Left` | Switch to the tab to the left |
| `Alt+Right` | Switch to the tab to the right |
| `Ctrl+Shift+S` | Split/unsplit the tabs vertically into 2 panes |
| `Ctrl+Shift+Q` | Close the current tab |
| `Ctrl+Tab` | Switch between tab panes |
| `Shift+PageUp` | Scroll the terminal up |
| `Shift+PageDown` | Scroll the terminal down |
| `Ctrl+Shift+W` | Delete the current frame when in selection mode |


Terminal Tabs
-------------
Expand Down
28 changes: 28 additions & 0 deletions docs/why.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Project Goals, or Why Bother at all?
------------------------------------
This project didn't start out as some big plan to build a new cross platform terminal emulator with some crazy features. It initially grew out of two things: 1) a desire to mess around with node-webkit and all of the new web APIs, and 2) a need for a better terminal emulator which worked on cygwin, something that was even half as good as KDE's Konsole on Linux.

As the code started to move along and began to work, I also started to look closer at how I was using the command line and what kind of new features I would find useful. A lot of common repetitive tasks we all do in a terminal seemed to me to be needlessly difficult, and the terminal does little to help. It is far too busy pretending to be an old green screen complete with attached dot matrix printer and spool of paper. It is a system that deals in text but doesn't let you actually do anything with the text. (No, being able to select text and copy it to the clipboard is not enough.) Terminals are terrible at doing text.

These are the two main goals now:

* Build a solid cross platform terminal emulator.
* Let me do my work in the terminal better, faster and easier than before.

It should do the standard features that we all expect well, and secondly it should try out new ways of doing things. Yes, a lot of these new features will be failed experiments. If something doesn't work then we can rip it out again. At the time of writing this text there are already a bunch of failed experiments buried deep in the git history.


Some (rough) Design Principles
------------------------------

These are some of the basic principles and guidelines governing the design of Extraterm:

* Backwards compatibility with existing terminal based programs is a must. A terminal that doesn't work with terminal software is a dead duck.
* Backwards compatibility with our decades old terminal habits is highly desirable. No one should have to change any habits if they don't want to. People can incorporate new features into their work flow when they are ready.
* At the very least do text better than before. (Look at text editors for inspiration)
* Aim for tools and features which combine with each other.
* Support ad hoc interactive work flows. There is more than one way of doing it.
* Make things fast and immediate. It should be interactive.
* Take advantage of the structure in the data. For example, a shell session has a clear structure of enter command, run command, get output. It is not just dumb text. It means something to the user. Many pieces of data we use in a terminal are not just text but have structure which could be better presented. For example, many files in a Linux system are little databases with their own structure, many text based file formats are mark up or trees etc.

-- Simon Edwards, 2016

0 comments on commit 4326a10

Please sign in to comment.