Fill in the lost unref call. Thanks Sadrul.
[screen-lua.git] / src / FAQ
blob6c9c8afa918a55e503846682cee666ad1d157157
1                                                                     jw  21.10.93
2                                                                         05.05.94
4    screen: frequently asked questions -- known problems -- unimplemented bugs
5 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
8 Q:   Why is it  impossible to download  a file with Kermit/sz/rz  when  
9      screen is running? Do I need to set some special variables?
11 A:   Screen  always   interprets   control-sequences   sent   by   the
12      applications   and  translates/optimizes  them  for  the  current
13      terminal type.  Screen always  parses  the  user  input  for  its
14      escape  character  (CTRL-A).   Both are basic screen features and
15      cannot be switched off.  Even  if  it  were  possible  to  switch
16      screen into a completely transparent mode, you could never switch
17      between windows, while kermit/sz/rz is downloading  a  file.  You  
18      must  wait til  the end as  kermit/sz/rz will  not transmit  your 
19      input during  a file transfer and as kermit/sz/rz would  be  very  
20      confused  if  screen switched  away  the  window  containing  the
21      other  kermit/sz/rz.  Simply detach your screen session  for each 
22      file transfer and start the  transfer program only from the shell 
23      where you started screen. 
25 Q:   I  am using screen with  a  YYY terminal, which supports  the XXX
26      graphic language.  I  am very happy with  it, except one thing: I 
27      cannot render graphics into screen windows.
28   
29 A:   You are out of luck there. Screen provides  a fixed set of escape
30      sequences in order to make  it possible to switch terminal types.
31      Screen has  to know exactly what the escape sequences  do  to the
32      terminal because  it  must hold  an  image  in  memory. Otherwise 
33      screen could  not  restore  the  image  if  you switch to another 
34      window.  Because  of  this  you  have  to  change screens  escape
35      sequence parser (ansi.c)  to  pass the XXX graphics sequences  to 
36      the terminal.  Of course the graphics will  be lost if you switch
37      to  another window. Screen  will only  honour graphics  sequences 
38      that are demanded by an overwhelming majority.
40 Q:   For some unknown reason, the  fifo  in  /tmp/screens/S-myname  is
41      gone,  and  i  can't  resume my screen session. Is there a way to
42      recreate the fifo?
44 A:   Screen checks the fifo/socket  whenever  it  receives  a  SIGCHLD
45      signal.  If missing, the fifo/socket is recreated then. If screen
46      is  running  non  set-uid  the  user  can  issue  a  'kill  -CHLD
47      screenpid'  directly (it is -CHILD on some systems). Screenpid is
48      the process-id of the screen process found in a 'ps -x'  listing.
49      But  usually  this won't work, as screen should be installed set-
50      uid root. In this case you will not be able to send it a  signal,
51      but  the  kernel  will.  It  does  so, whenever a child of screen
52      changes its state. Find the process-id (shellpid  below)  of  the
53      "least  important"  shell  running  inside  screen. The try 'kill
54      -STOP shellpid'.  If the fifo/socket does not  reappear,  destroy
55      the  shell  process.  You  sacrify one shell to save the rest. If
56      nothing works, please do  not  forget  to  remove  all  processes
57      running in the lost screen session.
59 Q:   When you start "screen" a page of text comes up to  start  you
60      off.   Is  there  a way to get rid of this text as a command line
61      argument or by using a switch of some sort.  
62   
63 A:   Just  put  the following line in your ~/.screenrc:
64          startup_message off
65      Many peole ask this, although  it  is  in the man page, too :-)
67 Q:   Start "screen emacs"  and  run   emacs   function   suspend-emacs
68      (ctrl-z). The window containing emacs vanishes. 
70 A:   This is a known  bug.  Unfortunatly  there   is   no   easy   fix
71      because  this  is specified in the POSIX  standard.  When  a  new
72      window is created Screen opens  up  a  new  session  because  the
73      window    has    to  get   the  pty  as a controlling terminal (a
74      session  can  only  have  one  controlling  terminal).  With  the
75      setsid()   call the   process also    creates   a   new   process
76      group.  This process  group is orphaned,   because  there  is  no
77      process  in   the  session    which is  not   in   the    process
78      group.   Now if the process group  leader  (i.e.  your   program)
79      gets   a  TTIN/TTOU/TSTP,   POSIX  states that  the  kernel  must
80      send   a   KILL signal to the process group because there is   no
81      one  left  to  continue  the process.  Even    if   screen  would
82      try to restart the program, that would be after it  received  the
83      KILL signal which  cannot  be caught  or ignored.
84      
85      tromey@klab.caltech.edu (Tom Tromey):  I've  noticed  this  exact
86      same problem.  I put this in my .emacs file.  It seems to work:
87         
88         ;; If running under screen, disable C-z.
89         (if (and (getenv "STY") (not window-system))
90                 (global-unset-key "\C-z"))
92 Q:   Screen gets the terminal size wrong and messes up.
94 A:   Before you start screen: Check with 'stty -a' what  the  terminal
95      driver  thinks  about  rows  and  columns.  Check the environment
96      variables LINES and COLUMNS.  Then from within screen check  with
97      the info command (CTRL-A i) what size screen thinks your terminal
98      is. If correcting tty driver setting  and  environment  variables
99      does  not help, look up the terminal capability definition. First
100      the TERMCAP environment variable. If this is not set, look up the
101      terminals  name  as  defined  in the environment variable TERM in
102      /etc/termcap or in the terminfo database with untic  or  infocmp.
103      There  may  be  :li=...:  and  :co=...:  or even :ll=...: entries
104      (cols#... and lines#...  when it's terminfo) defined incorrectly.
105      Either  construct  your  own  TERMCAP  environment variables with
106      correct settings, use screens terminfo/termcap  command  in  your
107      .screenrc  file  or  have  the  database  corrected by the system
108      administrator.
110 Q:   Screen messes up the terminal output when I use my favourite  ap-
111      plication. Setting the terminal size does not help.
113 A:   Probably you got the termcap/terminfo entries wrong. Fixing  this
114      is  a  three  stage  procedure.  First,  find  out if terminfo or
115      termcap is  used.  If  your   system   only   has   /etc/termcap,
116      but    not  /usr/lib/terminfo/...   then  you  are using termcap.
117      Easy. But if your system has both, then it depends how the appli-
118      cation and how  screen  were  linked.  Beware,  if  your applica-
119      tion runs on another host via rlogin, telnet  or  the  like,  you
120      should check the terminfo/termcap  databases there. If you cannot
121      tell if terminfo or termcap is used (or  you  just  want  to   be
122      save),   the   do   all  steps  in  stage  3 in parallel for both
123      systems (on all envolved hosts).  Second:  Understand  the  basic
124      rules  how  screen  does its terminal  emulation.  When screen is
125      started or reattached, it relies on the TERM environment variable
126      to  correctly  reflect  the  terminal type  you  have  physically
127      in front of you. And the entry should either exist in the  system
128      terminfo/termcap  database  or  be  specified via the TERMCAP en-
129      vironment variable (if screen is using the  termcap  system).  On
130      the  other  end,  screen understands one set of control codes. It
131      relies on the application using these codes. This means  applica-
132      tions   that  run  under screen  must be able to adapt their con-
133      trol codes to screen. The application should use the  TERM  vari-
134      able  and  termcap or  terminfo  library to find out how to drive
135      its terminal. When running under screen, the terminal is  virtual
136      and  is  only defined by  the  set  of  control codes that screen
137      understands.  The  TERM  variable  is  automatically    set    to
138      "screen"  and  the  "screen"-entries  should  exist  in the data-
139      bases. If your application uses hardcoded  control  codes  rather
140      than  a database, you are  on  your own.  Hint:  The codes under-
141      stood by screen are a superset  of  the  very  common  definition
142      named  "vt100".  Look  at   the   documentation  of  screen.  The
143      codes  are  listed there. Third:  Have  the  entry  "screen"  in-
144      stalled  on  all hosts or make sure you  can  live  with "vt100".
145      Check the codes sent by your application, when the TERM  variable
146      is  set  to "screen". Do not try to set the TERM  variable inside
147      screen  to anything other than "screen"  or "vt100"  or  compati-
148      ble.  Thus your application can drive screen correctly. Also take
149      care that  a good entry is installed  for your physical  terminal
150      that   screen   has  to drive.  Even if the entry was good enough
151      for your application to drive the terminal  directly, screen  may
152      find   flaws,   as  it tries to use other capabilities while  op-
153      timizing   the   screen   output.    The    screenrc     commands
154      "termcap"  and/or  "terminfo"  may help to fine-tune capabilities
155      without calling the supervisor to change the database.
157 Q:   I cannot configure screen. Sed does not work.
159 A:   The  regular expressions used  in  our  configure scrip  are  too
160      complicated for GNU sed version 2.03.  In  this regard it is  bug
161      compatible with  Ultrix 3.1 "sed":  GNU  sed  version 2.03  dumps
162      core with our configure script.  Try an older release.  E.g. from
163      ftp.uni-erlangen.de:/pub/utilities/screen/sed-2.02b.tar.gz
165 Q:   When reattaching a session  from  a  different  Workstation,  the
166      DISPLAY   environment  variable  should be updated. Even ``CTLR-A
167      : setenv DISPLAY newhost:0'' does not work as expected.
169 A:   Under unix every process  has its own environment.  The  environ-
170      ment  of the SCREEN process can be changed with the `setenv' com-
171      mand.  This  however  cannot  affect the   environment   of   the
172      shells or applications already running under screen. Subsequently
173      spawned processes will reflect the changes.  One should be  aware
174      of  this  problem when running applications from very old shells.
175      Screen is a means for keeping processes alive.
177 Q:   About once every 5 times  I ran the program,  rather than getting
178      a "screen," I got someone elses IRC output/input.
180 A:   What probably happened is that an IRC process was left running on
181      a pseudo tty  in such a way that the  kernel thought  the tty was
182      available  for reallocation.   You  can  fix  this  behaviour  by
183      applying the SunOS 4.1.x tty jumbo patch (100513-04).
185 Q:   Screen compiled on SunOS 5.3 cannot reattach a detached session.
187 A:   You are  using /usr/ucb/cc, this compiler  is wrong.  Actually it 
188      links  with  a  C-library that  mis-interprets dirent.  Try again
189      with /opt/SUNWspro/bin/cc!
191 Q:   The "talk" command does not work when Screen is active.
193 A:   Talk  and several  other programs  rely on entries  in the  Utmp-
194      Database  (/etc/utmp).  On some  systems this  Database is  world 
195      writable,  on others  it is not.  If it  is not,  screen must  be 
196      installed with the appropriate  permissions (user or group s-bit)
197      just like any  program that uses  PTYs (rlogin, xterm, ...). When
198      screen cannot write to utmp, you will see messages on you display
199      which do not belong to any screen window. 
200      When screen can update utmp, it is not guaranteed that it does as
201      you  expect.  First this depends  on  the config.h  file defining 
202      UTMPOK, LOGINDEFAULT, and perhaps CAREFULUTMP.  Second it depends
203      on the screenrc files (system wide and per user), if utmp entries
204      are done.  Third, you can control  whether windows are logged  in
205      with screens ``login'' command.
207 Q:   Seteuid()  does not work as expected in AIX.  Attempting a multi-
208      user-attach results in a screen-panic: "seteuid: not owner".
210 A:   This   is  not  a   screen  problem.   According  to  Kay  Nettle
211      (pkn@cs.utexas.edu) you need the AIX patch PTF 423674.
213 Q:   When  I  type  cd directory (any directory  or just  blank)  from 
214      within one of the windows in screen, the whole thing just freezes
215      up.
217 A:   You display the  current working directory  in xterm's title bar,
218      This may be caused by hardcoded ESC-sequences in the shell prompt
219      or in an cd alias.  In Xterm the coding is 
220                 ESC ] n ; string_to_display ^G 
221      where n = 1, 2, 3  selects the location of the  displayed string.
222      Screen misinterprets  this as the ansi  operating system  comment
223      sequence:
224                 ESC ] osc_string 
225      and waits (according to ansi) for the string terminator
226                 ESC \
227      Screen versions after 3.5.12 may provide a workaround.
229 Q:   Mesg or biff cannot be turned on or off while running screen.
231 A:   Screen failed to change the owner of the pty it uses. You need to
232      install screen setuid-root. See the file INSTALL for details.
234 Q:   The cursor left key deletes the characters instead of just moving the
235      cursor. A redisplay (^Al) brings everything back.
237 A:   Your terminal emulator treats the backspace as "destructive". You
238      can probably change this somewhere in the setup. We can't think
239      of a reason why anybody would want a destructive backspace, but
240      if you really must have it, add the lines
241         termcap  <TERM> 'bc@:bs@'
242         terminfo <TERM> 'bc@:bs@'
243      to your ~/.screenrc (replace <TERM> with the terminal type your
244      emulator uses).
246 Q:   I have an old SysV OS (like Motorola SysV68) and sometimes screen
247      doesn't reset the attributes correctly. A redisplay (^Al) doesn't
248      make things better.
250 A:   The libcurses library has a bug if attributes are cleared with
251      the special ue/se capabilities. As a workaround (other than upgrading
252      your system) modify 'rmul' (and 'rmso'?) in screen's terminfo entry:
253         rmul=\E[m, rmso=\E[m