From owner-freebsd-hackers@FreeBSD.ORG Thu Aug 30 12:51:09 2007 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7AE716A417 for ; Thu, 30 Aug 2007 12:51:09 +0000 (UTC) (envelope-from simias.n@gmail.com) Received: from simias.hd.free.fr (vit94-5-82-243-51-8.fbx.proxad.net [82.243.51.8]) by mx1.freebsd.org (Postfix) with ESMTP id 3D16613C45B for ; Thu, 30 Aug 2007 12:51:08 +0000 (UTC) (envelope-from simias.n@gmail.com) Received: from simias.hd.free.fr (localhost [127.0.0.1]) by simias.hd.free.fr (8.14.1/8.14.1) with ESMTP id l7UCN1kX013076; Thu, 30 Aug 2007 14:23:02 +0200 (CEST) (envelope-from simias.n@gmail.com) Received: (from simias@localhost) by simias.hd.free.fr (8.14.1/8.14.1/Submit) id l7UCMjr5013075; Thu, 30 Aug 2007 14:22:46 +0200 (CEST) (envelope-from simias.n@gmail.com) X-Authentication-Warning: simias.hd.free.fr: simias set sender to simias.n@gmail.com using -f From: Simias To: freebsd-hackers@freebsd.org References: Date: Thu, 30 Aug 2007 14:22:30 +0200 In-Reply-To: (djembe nazar's message of "Thu\, 30 Aug 2007 12\:23\:37 +0100") Message-ID: <86d4x52ovt.fsf@simias.hd.free.fr> User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: djembe nazar Subject: Re: two-way terminal multiplexing X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Aug 2007 12:51:10 -0000 "djembe nazar" writes: > I am trying to work out a way to do the following for a > "FreeBSD teaching environment": > > The intention is to have two terminals, one above the other. > The bottom terminal shows one's own commands and output like > an ordinary xterm whilst the top terminal shows the commands > and output of a peer (such as an instructor). > > The pupil is not allowed to enter commands into the > instructor's terminal, it simply shows what the instructor > typed and the resulting output of the commands. The same > is true of the reverse. The overall concept is to allow an > instructor to tutor a pupil over an appropriate medium such > as instant messaging whilst allowing the pupil to learn by > example with a very hands-on approach. > > In the case of a standard 1-to-1 teaching environment, the > instructor would see his/her own terminal on the bottom and > the terminal of the pupil on the top. The pupil would see the > reverse (instructor's terminal above, his/her own terminal > below). > > pupil sees: instructor sees: > +-----------------+ +-----------------+ > | INSTRUCTOR TERM | | PUPIL TERM | > +-----------------+ +-----------------+ > | PUPIL TERM | | INSTRUCTOR TERM | > +-----------------+ +-----------------+ > > I do not understand how to achieve this. Is this even possible > given standard unix security with regards to hijacking the > tty devices of other users on the system? > I think you may achieve this with GNU Screen, since it supports multi users sessions (look for addacl and aclchg in the screen(1) man page). If you want to do that by yourself, I'd use a client/server architecture, the instructor would start a program like script(1), but instead of writing to a file, it'd write to a socket, and the pupil would start a client version that will just read the socket and output what it receives. Note that it probably won't work very well if the two terminals have different size and/or different Termcaps (especially with curses apps like vi or emacs). It's quite trivial to implement, but maybe it won't meet your requirements. -- Simias