Magyar oldalakEnglish pages

Károly Lőrentey

Emacs multi-tty support

As a hobby project, I am implementing multiple terminal support for GNU Emacs. My goal is to allow opening multiple, different tty devices and simultaneous X (graphical) and tty frames from a single Emacs session.

Use cases

  • Emacs is notoriously slow at startup, so most people use another editor or emacsclient for quick editing jobs from the console. Unfortunately, emacsclient was very awkward to use, because it did not support opening a new Emacs frame on the current virtual console. Now, with multi-tty support, it can do that. (Emacsclient starts up faster than vi!)
  • Some Gnus users (including me) run Gnus in an X frame in its own Emacs instance, which they typically leave running for weeks. It would be nice if they could connect to this instance from a remote ssh session and check their messages without opening a remote X frame or resorting to gnus-slave.

Screenshots

 

The first image is a simple screenshot with an X frame and an emacsclient tty frame within the same Emacs instance.

The second screenshot shows an X frame for multi-tty and 4 terminal frames. All terminal frames connected to a single emacs instance from different types of terminals: rxvt that supports 8 or 256 colors, black on white or white on black. The image shows that the faces in each frame use colors according to the terminal type and foreground/background color. (Screenshot contributed by Dan Nicolaescu -- thanks!)

Status

The branch is now very stable and almost full-featured. All of the major problems have been fixed, only a few minor issues remain. (It still needs to be ported to Windows/Mac/DOS, though. Also, if you want to work on multiple X displays, you will need to compile Emacs without GTK support.) Both multiple tty device support and simultaneous X and tty frame support works fine. Emacsclient has been extended to support opening new tty and X frames. It has been changed open new Emacs frames by default.

The multi-tty branch has been scheduled for inclusion in the next major release of Emacs (version 23). I expect the merge into the development trunk to occur sometime during next year (2006), after the merge of the Unicode branch.

Please read the README.multi-tty file for compilation instructions, other issues, implementation notes and TODO items.

Suggestions and comments are welcome.

Download

I use Bazaar 1 for the revision control of the multi-tty branch. Use the following commands to download the source:

   baz grab http://lorentey.hu/grab/multi-tty

Do not be alarmed if this first checkout takes a few minutes to complete. Once you have a source tree, updating it to the latest revision will be _much_ faster. Use the following command for the update:

   baz replay

The archive is signed with my GPG key.

If the grab command fails, you can use one of the following archive mirrors to get the sources. The branch is named lorentey@elte.hu--2004/emacs--multi-tty--0.

   http://aszt.inf.elte.hu/~lorentey/mirror/arch/2004
   http://mirrors.sourcecontrol.net/lorentey%40elte.hu--2004
   http://lorentey.hu/arch/2004/

If you don't have Bazaar installed, frequently updated patches against recent Emacs CVS HEADs are available.

Debian packages

If you run Debian, or a distribution based on Debian, you are welcome to use our binary packages; put these lines in your /etc/apt/sources.list:

   # Multi-tty Emacs
   deb http://aszt.inf.elte.hu/~lorentey/mirror/apt unstable multi-tty
   deb-src http://aszt.inf.elte.hu/~lorentey/mirror/apt unstable multi-tty

Note that these packages are intended solely to provide an easy way to test the new multi-tty features. They are not to be taken as Emacs releases, and it's a mistake to expect robust operation or any kind of timely support. Do not install them, unless you'd like to have your editor crash on you.

Mailing lists

The multi-tty mailing list is for general discussion of the multi-tty branch. Bug reports should also be sent here.

If you want to be notified when new revisions are available, sign up to the read-only commit notification mailing list.

 
 

Your browser is not able to accept my CSS2 presentation stylesheet. If you find the non-CSS version of my homepage unbearably ugly, please update your browser. The entire content of this site is accessible even if you stay with your current browser.