twin(1) twin(1)

twin - a Textmode WINdow environment

twin [OPTION [...]]

This manual page uses some parts of /usr/local/share/doc/twin/Tutorial. you should look at this file if you need further info.

Twin creates, draws and manages windows inside a text display. It implements in text mode the same concepts that X11 does in graphics:

a. draw on some kind of screen (tipically a computer monitor).

b. allow multiple windows to coexist on the same screen, and draw independently on each of them.

c. talk to external programs (even on other machines) so that the programs receive keystrokes, mouse movements, etc. and can send back drawing commands.

Twin runs on the linux console, inside itself, in a twin terminal and on X11: it creates a window and draws in it, does not run inside an xterm or similar. It can also run on generic text terminals (ttys) using the termcap/ncurses driver, but it will work far from optimal.

display this help and exit
output version information and exit
start display as exclusive
start in background without display
start with the given display (multiple -hw=... allowed)

tty[@<tty device>]

~/.twinrc configuration file for the Twin user interface
~/.TwinAuth holds some magic data that clients use to answer the challenge received from twin. See Security section.

Specifies the Twin server to be used. Twin can create a window on another twin server and use it as display.
Specifies the X11 server to be used. Twin can create a window on an X11 server and use it as display.

The authorization method currently used vaguely resembles Xauthority: the file .TwinAuth in your home directory holds some magic data that clients use to answer the challenge received from twin. If that data is wrong or the file doesn't exist, clients can connect to twin only using the unix socket (TWDISPLAY=:<something>) so they must run on the same machine as twin; remote programs won't be able to connect. Also, the unix socket is set to permissions 600, so only the owner can connect to it (at least on Linux it works this way). The `challenge' is actually an MD5 checksum verification: server sends 256 bytes of random data; client does MD5 of that data + .TwinAuth and sends MD5 back. If server agrees on MD5, it grants connection. This challenge method has an important feature: The contents of your .TwinAuth is NEVER transmitted through any socket. So, unless your home directory resides on an NFS filesystem, you can be sure that noone will be able to find the data contained in your .TwinAuth by spying the network between twin and the clients you start. On the other hand, the connection between twin and clients is NOT encrypted, so it is easy to find out what you type and what you see in the client windows by spying the network as above.

run a twin server, and let it try to autodetect the type of display (X11, tty or twin):


run a twin server, specifying to create an X11 window to use as display:

twin --hw=X

Massimiliano Ghilardi <>