You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
4.0 KiB
84 lines
4.0 KiB
|
|
Architectural Overview of Konsole for KDE 4.0 |
|
|
|
Authors: Robert Knight <robertknight@gmail.com> |
|
Last Updated: 14-02-2007 |
|
Summary: This document describes the basic architecture of Konsole for KDE 4.0 |
|
|
|
===================================================================================== |
|
|
|
|
|
Contents: |
|
1. Introduction |
|
2. Back-end |
|
3. Front-end |
|
3.1 Terminal display |
|
3.2 User interface |
|
|
|
|
|
===================================================================================== |
|
|
|
1. Introduction |
|
|
|
Konsole consists of two main components, the back-end, which performs the terminal |
|
emulation, and the front-end, which renders the terminal display, handles user input |
|
and provides the user interface. |
|
|
|
2. Back-end |
|
|
|
The back-end provides the interface for the terminal emulation and an implementation of |
|
a DEC VT102 terminal. |
|
|
|
The task of the back-end is to take a serial stream of characters arriving from the |
|
program currently running in the terminal, decode and interpret them to produce |
|
an image of characters which can be rendered by the front-end. The incoming |
|
stream of characters can be encoded in a variety of formats, and may include |
|
'escape-sequences'. These are special sequences of characters which can: |
|
- Turn various formatting options on or off ( text color, bold, underline etc. ) |
|
- Move the cursor around ( new characters are inserted at the current cursor position ) |
|
- Insert, delete or replace lines on screen |
|
- Change various aspects of the terminal state |
|
- ... and other tasks |
|
|
|
When the back-end receives input from the program running in the terminal, it first decodes |
|
it into the standard Unicode format used internally. This is done in a generic fashion which |
|
is independant of the kind of terminal actually being emulated. Once the characters have |
|
been decoded into a format that Konsole can understand, the interpretation of the characters is |
|
performed by an implementation of a specific type of terminal. The terminal emulation has |
|
access to one or more screens, which act as a canvas which the emulation can draw characters |
|
on, with various associated formatting information. Each screen may have a history scroll |
|
associated with it. When new lines are added to the screen, older lines will be transferred |
|
to the history scroll. Different history scroll implementations are available, and the number |
|
of lines they can store and where they store those lines varies between them. The history scroll |
|
provides the facility which allows the user to scroll the display up and down to look at previous |
|
output. |
|
|
|
The terminal emulation is aware of the displays which are connected to it, and when it |
|
receives input, it schedules an update of the attached displays. If several batches |
|
of input are received in quick succession, only one update will be performed. The update |
|
itself consists of the emulation getting the final character image from the current screen |
|
and sending it to the terminal display, which can then render the updates. |
|
|
|
The back-end is also responsible for encoding key-presses and other input from the user |
|
and sending it as a serial character stream to the standard input of the program |
|
currently running in the terminal. The translation of key-presses into character |
|
sequences which are sent to the terminal is customiseable using so-called 'keytrans' files, |
|
a number of which are provided with Konsole. |
|
|
|
Key Classes: TEmulation - The generic terminal emulation implementation |
|
TEmuVt102 - The DEC VT102 + xterm extensions implementation |
|
TEScreen - The screen which acts as a canvas for the emulation to draw on |
|
TEHistory - Interface for history scroll classes |
|
|
|
3. Front-end |
|
|
|
The front-end consists primarily of the user interface and the terminal displays. |
|
|
|
3.1 Terminal display |
|
|
|
The terminal display is a widget which renders an image of characters on screen or to another device |
|
such as a printer. Each back-end may have one or more terminal displays connected to it. |
|
|
|
3.2 User interface |
|
|
|
|
|
|