SCREEN - Miscellaneous Stuff

Miscellaneous things about SCREEN - the repository for new stuff. Hints, tips&tricks, and so on.


Events - :monitor and :silence

SCREEN can tell you about two kinds of events on the invisible windows: Activity and non-activity for N seconds.

Monitor: When you tell SCREEN to "monitor" a window then it will notify you when some process writes data this window, ie when the contents of the window get changed.

Examples: You might monitor a window which contains a chat client when nothing much is happening and you are waiting for people to say something.

Examples: When you are installing a program and you are waiting for the compiler to finish then you can set the window around it to "wait for silence" which then might indicate that the compiler has finished.


TERMINFO

Mario Michael da Costa mario(at)controlnet.co.in [2002-12-13]

An annoying behaviour is noticed when running vim in screen on some setups. typing the "End" key does not move the cursor to the end of the line as expected. instead, a beep is heard and if there is any character under the cursor then its case gets changed.

This behaviour is noticed both in the command as well as in the insert modes of vim. this is because typing the "End" key issues the character sequences "ESC [ 4 ~".

so what happens in Vim is this: if you are in insert mode then the ESC will end it; if you were in command mode then you'll get a beep. the '[4~' is not real command sequence, but the '~' at the end can get accepted asthe switch-case command, so it might result in changing the current character's case.

now, vim knows that you are using "TERM=screen" (you can check with ":set term?" from within) but the treminfo for "screen" might not be available. and that's why it cannot recognize the special keys like "End".

To correct this as a normal user, we need to generate the proper terminfo for screen. we'll have to create the directory ~/.terminfo and place the info from screeninfo.src into it which comes with screen in the subdirectory terminfo. for this we'll use tic. and then we'll have to tell the shell about the local installation by setting TERMINFO.

  mkdir ~/.terminfo
  tic screen-3.x.x/terminfo/screeninfo.src
  export TERMINFO=~/.terminfo

Of course this will only work for the current session, so you must add the TERMINFO to your shell's setup:

  bash/ksh/zsh: export TERMINFO=~/.terminfo
  csh/tcsh:            TERMINFO=~/.terminfo; setenv TERMINFO

Background Image for each Window

If you are using the terminal "rxvt" (which allows for a background image) then you can have a different image for each window. Here's how:

Advertise hardstatus support as:

termcapinfo xterm 'hs:ts=\E2;:fs=\007:ds=\E]0;screen\007'

Then change the hardstatus line to:

defhstatus "screen: ^E (^Et)^G^[]10;[pixmap:^E]"
or
defhstatus "screen: ^E (^Et)^G^[]20;^E"

where '^G' is control-g and '^[' is 'esc'.

Now all you need to do is have images like 1.xpm, 2.xpm, 3.xpm etc. in the place where rxvt can find them ($RXVTPATH). Whenever you change to screen 1, you get 1.xpm and so on.

Submitted by: Prabhanjan M prabham@prithvi.siliconsystems.co.in