Linux Terminal System

Conceptual Linux terminal

Terminal API

Terminal emulators

Graphical user interfaces

Conceptual Linux terminal

Application

Kernel

Mainframe

Modem

Modem

Terminal

Keyboard

Display

User

stdin/stdout

Low-level calls: read(), write(), fd's

High-level calls: fread(), fwrite(), FILE*'s

Formatted I/O: fscanf(), fprintf(), FILE*'s

Redirection: dup2(), pipes “|”, redir “>”

$ randomize < input | rot13 | tee log | rot13 | sort

$ cat log

input

randomize

rot13

tee

rot13

log

terminal

cat

sort

Escape sequences & function keys

Many incompatible escape sequences and terminal capabilities

$TERM identifies terminal type

termcap/terminfo defines terminal types

Application

Terminal

Escape sequences

“\e[2J” = clear screen

Function key sequences

“\e[A” = up arrow key

ioctls and termios

ioctls give very low-level access

termios standardizes interface

ioctls/termios can adjust canonical (cooked) and non-canonical (raw) modes

Linux terminal provides font, etc. ioctls

Serial ports have baud rate, etc. ioctls

curses, ncurses, and S-Lang

Wrapper libraries hide complexity of terminal programming

Provides portable interface to many terminal types

curses: cursor control library

ncurses: new curses

S-Lang: contains terminal control library

Terminal emulators

Consumer computer systems have integrated human interface hardware, so terminal functionality must be emulated

Dumb terminal: works like a teletype

Linux vt100: VGA + keyboard + buzzer

GNU screen: display multiplexing

xterm: text terminals in graphical display

X Window System

X server gives programs access to keyboard, mouse, and display hardware

Client apps tell the server what to draw

User sits in front of X server

Mainframe

X app 1

X server

Kbd/VGA

User

Mainframe

X app 2

VNC: Virtual Network Computing

Cross between GNU screen and X

User sits in front of VNC client (“viewer”)

Mainframe

gimp

Xvnc

Mainframe

wmaker

xterm

Workstation

XFree86

vncviewer

User

Conclusion

Archetypical Linux terminal system

Program input and output

Terminal API, low- and high-level

Terminal emulators

Graphical user interfaces

Slides available online:

http://ioioio.net/school/terminal/slides.pdf

GNU screen

VPN over SSH

2004-09-27T18:41:51