The One Lab

Design for an Interface Agnostic, Detachable Screen

Overview

It seems that there's quite a lot of repeated code out in the open source arenas -- especially in the area of terminals and such. Take, for instance, the humble xterm: it opens a pseudo-TTY, connects itself to it, and provides a simple terminal with which you can issue commands to the system.

Enter screen. Screen allows one to multiplex a single terminal and provide tab-like functionality. But Screen itself provides more than just simple tabbing -- it can even do UTF-8 conversion for terminals that do not support it, activity notification, and run in the background with no terminal attached whatsoever.

Unfortunately, screen seems to be a lesser-known utility, as it has been around for years upon years, and only the rare power users who know of its existance use it. So much so, that even developers of other terminal programs forget about its existance (witness the existance of Konsole, gnome-terminal, and iTerm). What these terminals lack is the basic functionality that the underlying screen program provides: detachability.

Many times it has been when my X session has crashed and destroyed whatever work I had previously running in a terminal window. Sadly, had I had screen running, my work would have been preserved until power was finally removed, or screen was killed.

It seems to me like this senseless ignorance of previous projects needs to be fixed. Gnome-terminal, Konqueror, and yes, even iTerm could all benefit if screen's services were better abstracted into a library/daemon of sorts.

Detailed Design