354 lines
12 KiB
Raw Normal View History

_____ _ ___ _____
| ___/ \ / _ \ _ _ | ____|___ ___ _ __ ___ ___ _ __
| |_ / _ \| | | | (_|_) | _| / __|/ __| '__/ _ \/ _ \ '_ \
| _/ ___ \ |_| | _ _ | |___\__ \ (__| | | __/ __/ | | |
|_|/_/ \_\__\_\ (_|_) |_____|___/\___|_| \___|\___|_| |_|
Frequently Asked Questions about the "Escreen/Etwin" extension
Q What is it?
A Eterm now offers you to compile in experimental support for the
"screen" program. "screen" is a terminal multiplexer (one window,
several shells). Yes, it's like konsole or multi-gnome-terminal,
only that your shells won't die just because X or the Window Manager
do. Oh, and you can pick up your home session from work, and vice
versa. And several people can connect to the same session at once,
You get this picture -- if you're a power-user, this is for you.
Also, if you're not a power-user, this is *not* for you. It's alpha.
It's experimental. Reported bugs will get fixed where possible, but
there can be no newbie support at this time.
Q How do I get it?
A You already have it.
./configure --enable-escreen && make && make install
Oh, and you also need the screen program. In our tests, we used
Screen version 3.09.11 (FAU) 14-Feb-02.
Q What should I expect from it? (subject to change)
A An Eterm should open with a screen (without a status-line) running
inside of it. There should be a button-bar in the Eterm enumerating
the multiplexed terminal (you usually start with one), and button with
a menu of screen-related actions. If you normally don't use a button-bar,
Escreen will create one for you. Otherwise, it will add buttons to your
existing bar.
* .screenrc, $SCREENRC, [/usr/local]/etc/screenrc and $SYSSCREENRC are
supported. To a point. If something doesn't work, try things without
the screenrc. If it works then, find the offending line in the screenrc
and send it to me if you'd like a fix. Thankyou.
* Eterm-buttons are supported (left click on display-name to activate
the display, middle to close it, right to rename it).
* Sending statements to screen (^A: in the default setup) with
* support for screen command-line options:
Eterm -U screen://localhost/-xRR+-c~/.screenrc.testing
* menu for "screen"-functions (if you add your own, use ^A as the
escape-character in the ECHO action; Escreen will remap it to
whatever is actually used in the session)
* alert boxes for messages from screen
* support for SSH-tunneling through firewalls
* Easy-to-remember key-layout (optional, see below)
* You can pass arbitrary paramters to screen/scream
Q What's new?
* Should work with Debian Unstable now (2002/10/03)
* libscream's functions are available through Eterm's scripting
facility. See escreen.cfg for an example.
* Preliminary Twin support. For now, Twin-URLs (Eterm -U twin://)
and Twin's mouse-protocol are supported, allowing you start twin
within Eterm (making it the only terminal emulator to support Twin,
AFAIK). Next release should feature Twin support through libscream
(thus exposing Twin to button- and key-bindings through Eterm's
scripting interface).
For more information on Twin see
* Tear-off tabs. You can select the button-representation of a
display and drag-and-drop it [currently under reconstruction]
- to another button:
The display is moved to that position; the dragged-to display
and all displays following it each move one slot to the right.
(Yes, a swap may occur rather than an insert, cause that's what
screen does. We'll provide a work-around with the next version.)
- to the desktop:
This opens another Escreen window (selecting the dragged session
where possible). This is very alpha and not intended for productive
use (yet).
Q What should I expect in the future? (TODO)
* Limited support for scrolling. screen doesn't give us all the info
we'd need to make this really sexy.
Q How do I start it?
A If you call it an Eterm, it will behave like one. Same for an Escreen.
(you'd have to symlink from Escreen to Eterm first, of course).
Additionally, when called with a command-line (-e "/some/program"), the
suite will *always* behave like an Eterm, even if invoked as Escreen.
Likewise, when called with an URL (-U screen://,
it will behave like an Escreen, even if invoked under another name.
Q Something is amiss! Moan, moan, complain, complain!
A Before you complain:
* Take a deep breath, remember you didn't pay for this.
* Check whether you are using the latest version. Support for each
version ceases with the release of a new one!
* Read all of the FAQ, your question may be answered in there.
Remember that the FAQ grows with almost each release, so re-reading
it with each release is a good idea. Gives you something to do while
compiling, too. Also see the manual page for Eterm, and that for screen.
* Check whether the problem only occurs when using your screenrc
(see below).
* If remote sessions break, check whether terminfo isn't broken on the
remote machine.
* Send a detailed bug-report. Often, it will not be possible to reproduce
the bug on my set, so I'll need the info from yours. This includes your
screenrc. Sometimes tracing the problem will only be possible if you send
me Escreen's debug output. To get it, #define NS_DEBUG in screamcfg.h
and recompile.
* If you send a usable bug-report, you will normally receive a free fix,
or at least an explanation why there will be no fix. If on the other
hand you asked something that's explained in this FAQ, we will laugh
at you and THEN be rude. Sorry, but you already got free code, a free
FAQ, and, in many cases, free support. Wasting my time with questions
I already answered is not a welcome response to this generosity.
Q Creating a new screen takes forever!? (While connecting to an
existing one doesn't?)
A It's the price of making things compatible with stupid screen. To
disable compatibility mode for local connections, pass -z 0 to Eterm
on the command line. (This has no effect on remote sessions!)
Depending on your setup, -z 0 will either make creating new screens
much faster, or not work at all for you. Good luck.
Q ^A does funny things!
A Well, yes. ^A talks to the screen program. Put a line
like "escape ^Aa" in "~/.screenrc". The example declares
Control-A (^A) to be the magic key (and ^A-a what you need
to press to send the escape (^A in the example) to the application
instead); you'll want to put something else to move it around.
See "man screen" for details.
Note that ^A: opens a buffer where you can directly enter
statements like "escape ^Uu"; trying things out will be
easier that way. Yes, it the magic key will be ^U: afterwards. ; )
Q I typed ^A and it *doesn't do* funny things!
A You probably already have changed the magic escape key to something
other than ^A (on the command-line, within Escreen, or in .screenrc).
Er, you *did* hold Control, then press A, rather then typing a ^ and
an A, right?
Q But I don't like all this control-whatever stuff, can I have easier
to remember key-bindings?
A Sure. Eterm is The Configurable Terminal, after all. A pret-a-porter
example that you can simply add to the action context of your theme.cfg
file (or %include from it) lives in escreen.cfg -- enjoy.
Q Escreen changes the escape on the remote box to the same thing as on
the local box, does it have to?
A You can always override the escapes like so:
Eterm -U screen://^Xy
Where ^X is the escape and y the literal (man screen).
Q Escreen only creates a new session when there is none; otherwise,
it connects to the existing one!
A It's not a bug, it's a feature. : ) The default parameters for
the screen Escreen starts are "-RDD". You can override those by
putting your own parameters in the URL
Eterm -U "protocol://user@host:port/screen_parameters"
like so:
Eterm -U "screen://"
or, for a local screen with no parameters:
Eterm -U "localhost/ " # which is the same as
Eterm -U "/ " # which is the same as
Eterm -U /+
Q Escreen complains about stuff in my .screenrc!
A If it works aside from that, ignore the machine. If it doesn't, try
things without the screenrc. If it works then, find the offending
line in the screenrc and send it to me if you'd like a fix. Thankyou.
Q When Escreen connects to an existing session, things don't work.
They do otherwise.
A In all likelihood you're not using the same .screenrc when picking
up the session that you used when creating it. If it's just a matter
of the escapes being different, you can tell the front-end which ones
the backend uses either by providing the right screenrc, or by setting
them on the command-line:
Eterm -U "/-e^Xy"
Where ^X is the escape-character, and y the literal. Replace as needed.
See "man screen" for more info on escapes.
Q I don't see any buttons when I run Escreen (Eterm -U "")!
A Escreen could not set up screen in a decent way. Don't use -z 0.
Try it without the screenrc interfering. If this only happens when
picking up a session, see above.
Q Escreen opens, then closes again (with a local session).
A Escreen cannot run "screen". If you do have "screen", and it is in the
search path, screen apparently terminates right away. Normally
this is a session-problem: there are several sessions, and Escreen
doesn't know which one to pick up, or all sessions are "dead"
screen -ls will give you a list of the sessions;
screen -wipe will remove dead sessions;
Eterm -U "/-r session_name" will pick up the session named session_name.
Q Escreen opens, then closes again (with a remote session).
If it's not one of the problems described above, the remote end might
just find your terminal type confusing. The "--term-name" option with
something vanilla (--term-name vt100) should remedy this.
Q Escreen works, except when I use -Z to tunnel through a firewall?
A Try to manually ssh to the firewall, see how long that takes. Then,
tune the delay in the -Z option accordingly (cf man Eterm):
Eterm -U ... -Z "localport:firewall:remoteport,delay"
Q I'd like for the button labels to be in a different colour.
A At this time, the labels follow the general (text) colours.
You will be able to define colours for (foreground|background|active|bell)
windows' labels in later releases.
Q "screen" support rocks! Can we have it in konsole/multi-gnome-terminal?
A I will not attempt anything like that before I am happy with Escreen.
The code, however, is LGPL'd, and its use is documented by example of
Eterm (grep for ESCREEN). If you can work with that, do.
Q Who's responsible for this?
A Escreen is an Eterm extension conceived and written by Azundris.
Do not complain to KainX (who courteously added the patch for the
enjoyment of the hardy) if you break your Eterm by compiling this
in (or by trying to use the alpha-functionality). By using this,
you agree that anything happening while or because of using it is
your fault, and your fault only.
Unfortunately, screen is poorly coded, and a bummer to support.
Someone (perhaps this kitty) may at some point provide a better
backend, but since we cannot expect that backend on our every
client's machine, we'll still need to support GNU screen, much
as we may hate its protocol (or lack thereof, really).
-- Azundris 2002/05/23 <>