SCREEN Development and WishList

Some things that screen users have wished for - and keep wishing for as there are no people who write patches for these things (hint hint ;-).

All the existing features need more documentation especially with examples. Can you help? Let me know!

mind you - the maintainers try to keep a high level of code quality.

And now for the wishes..


Wishes

Startup as Zombie Window
Problem: Once the first process in a window ends you may be left with a zombie window which you can resurrect. However, the process must have been running to get such a zombie window - you cannot open a window in a zombie mode.
Solution: Add the startup option "-z" to open a window in "zombie mode" directly.
Thomas Glanzmann sithglan(at)stud.uni-erlangen.de

Command Line - Tab Completion
Problem: Some command names are quite long - and they cannot be abbreviated with a unique prefix like you can do in vim.
Solution: Add tab completion to command names - and possibly for values, too (like in mutt).
Monique ... EMAIL 2003-03-02

WindowList - show full title name
Windows titles are shown up to a maximum of 20 characters. [ansi.c -- ChangeAKA] This is useful for the "windows" command (which shows them in one line) - however, the titles shown in the "windowlist" can be much longer and probably should be.
Shin.Tanaka@ferguson.com [2002-02-26]

WindowList - add searches
Problem: With many windows open you'd have to select a window by moving through the list step-by-step, taking many commands.
Solution:
Felix Rosencrantz f_rosencrantz@email.com [2002-02-22]

Command alias: ":cd" -> ":chdir"
":cd" displays the current dir. Synonymous to ":pwd" and "cd .".

Swap Split Windows
Problem: You can split a windows - but you cannot swap their contents.
Solution: Add code for swapping the windows' contents.
Nicholas Muguira nmuguria(at)cox.net [2003-02-11]

Vertical Split
Problem: You can split windows horizontally - but not vertically. This feature is useful for comparing files side-by-side.
Solution: write the code.
Miciah Dashiel Butler Masters theweirdo@subdimension.com [2002-02-16]
Dan Nelson dnelson@allantgroup.com [2002-02-19] suggest looking at FreeBSD's program "window" which allows to place windows of arbitrary size next to each onto the same terminal. See page http://www.freebsd.org/cgi/man.cgi?query=window

Make local: zombie window
Problem: You can turn on/off the zombie mode - but only for all windows. But this feature can be useful for only some windows. Either way - you'll have to keep switching zombie mode on or off depending on your current situation.
Solution: Allow the zombie feature to be a local feature.
Eliphas Levy Theodoro eliphas@f2s.com 2001-11-29

:info - show current values
There is no command to give an overview to Boolean and numerical values.

Window Numbering in Keyboard Style
The digits on keyboards usually start with '1', go to '9' and *end* with '0'. However, the first number given to windows is the '0'. So it might be easier for some users to start the numbering with '1'.
Suggestion: Allow these numbering schemes with some option:
        value numbering
        zero  0123456789...
        one    123456789...
Matt Ackeret mattack@vax.area.com [1998-01-02]
Workaround by aurelio marinho jargas aurelio@conectiva.com.br [2000-07-26]
        bind c screen 1
This adds the window number '1' to create new windows. Thus the window number '0' never gets used. However, opening new windows with some other command might use the window number '0' then - unless you tell these command to use '1' (or higher), too.

Copy Mode - additional jump commands [98....,1999-11-18]
Add these jump commands:
        B       jump backwards to beginning of current/next WORD
        W       jump forwards  to beginning of current/next WORD
        E       jump to end                 of current/next WORD
        t x     jump forwards  "to"   character (before) 'x'
        T x     jump backwards "to"   character (before) 'x'
        f x     jump forwards  "find" character (onto)   'x'
        F x     jump backwards "find" character (onto)   'x'
Note: "WORD" is meant here in the sense of "non-whitespace sequence". [Inspired by Vim.]
Sven Guckes guckes@math.fu-berlin.de [1998-01-01]
Enhance the search commands by adding support for regexpr (regular expressions).
Matt Ackeret (mattack@vax.area.com) [1998-01-02]

Copy Mode - search modifier
Add a search modifier 'i' to ignore the case for current search. This allows to search with "/foo/i" and catch "Foo", "fOO", "FoO", etc. [Inspired by Vim.]
Sven Guckes guckes@math.fu-berlin.de [2002-02-19]

Copy Mode - Block Selection
Allow rectangular selection of text.
Inspired by Vim's "visual block mode".
Oliver Braun obraun@informatik.unibw-muenchen.de [2002-09-11]

Parameter Dialog (NEW feature)
Problem: Although you can bind a command to a key you cannot make screen ask for parameters.
Example: Ask for a host name on an rlogin or for the builtin "telnet" command.
Suggestion: Add an input dialog which allows input of parameters to screen commands.

New option: "--escape [<sessionname>]"
Shows the current escape key of session. enable change of escape key of a session.
Workaround: Detach the current session - and then reattach to it with a new escape key screen -e^aa -r session-id


SCREEN Wishes - Change Commands

:bind
:bind key
Problem: The command "help" shows a table of current bindings - but when searching for a key in the table you cannot use the copy mode to search through the online help; you have to find the keys yourself.
Suggestion: Change the ":bind" command such that it shows all current bindings when no parameter is given. When only one parameter is given then assume that it is the name of a key and then show its default binding and its current binding. Example: :bind-show Enter key: k default binding: k -> kill current binding: k -> :echo "kill kill kill"
Sven Guckes [1999-06-15,2002-02-18]

:digraph
:digraph char1 char2 number
Change the syntax of this command such that you can give the parameters onto the command line right away - and that :digraph (without any parameters) shows the table of the current digraph combinations.
Sven Guckes [2000-07-20,2002-02-18]

:info - "show wait for silence"
The info command shows a "monitor" for activity - but not whether a "wait for silence" is active on the current window.

:lockscreen - show tty and hostname [1999-06-14]
Problem: The "lockscreen" message just shows information about the user name and login name:
        Screen used by Sven Guckes <guckes>.
        Password:
However, this does not have information about the host or tty which makes it hard to remember which password you have to enter when you are using screen sessions on more than one machine or account.
Suggestion: Add the $HOSTNAME and $TTY info to the message. Info about the screen version and an optional "away mesage" would be nice, too. :-) Example:
        This screen session is locked.
        Screen-3.9.11 on /dev/pts/23 for
        Sven Guckes <sven@guckes.net>
        "Out to lunch - back at 2pm."
        Password:

:lockscreen - make see-through
Problem: The "lock screen" shows minimal information, hiding everything. Sometimes, however, it would be sufficient to simply lock the input and *keep* showing what's going on. Examples: Monitor your mailbox for new entries. Show IRC channel on a monitor in a shop window. Show what you are doing - but on another display.
Suggestion: Make screen show the password dialogue only when there is input from stdin.
Sven Guckes [2002-07-31]


SCREEN Wishes - New Commands

:bell [n] message
Sets the bell message for the new window n.
Problem: Ringing the bell is useful for some processes - but screen allows audible/visual bell only.
Suggestion: Allow the bell to be set locally, ie for each window.

:localwipeout ON
Problem: The command "screen -wipe" also wipes out session for which the process runs on remote hosts.
Suggestion: Prevent wiping of remote sessions by a setup file command.
Allows wiping of screens only on from the host where the session was invoked on. Thus prevents wiping of screens from other hosts.

:merge
Problem: You have two sessions, but you'd rather have both of them in one session.
Solution: Add a command to ":merge" two sessions into one.
Johannes Zellner johannes@zellner.org 2000-07-22

:prune
Creates a new session with the current window's process and removes it from current session.
This allows eg to remove a chat program from a work session without ending the process.

:pwd
Displays the current directory of the session.
Workaround: Use ":!pwd" to print the working directory. However, the result is printed onto the current window and is not displayed as a message.
As the resulting string might be wider than the current window I suggest to add this info to the extended info screen.

:set var=value
:set var!
Problem: Many commands do not show the current value of a setting. Thus you cannot check on the current value. This makes it quite hard to find the correct setting.
Suggestion: Add the command ":set" for setting a variable - and make ":set var" (ie without giving a new value) return its current value as a message. Also add ":set var!" to toggle the value of a Boolean variable.

:toggle - Boolean variable toggle
Problem: Boolean variables have to be toggled via the command line using long command names and variable names. Adding a binding for each of those variables quickly gives away free keys.
Solution: Add a command ":toggle" as a lead-in for toggling values. Allow '-' to toggle options, so "CTRL-A - i" would toggle the value as set with the command ":ignorecase". Bind this command to '-' by default. [This solution is inspired by the pager "less" which allows to toggle many values with the '-' as a command.]
Sven Guckes [2001-11-26,2002-02-19]


SCREEN Wishes - New Options

lockscreen_auto N
Automatically lock the screen session after N seconds of idle time, ie no input from the user. the default should be zero (no auto lockscreen) the default avlue should be "0" to prevent any automatic locking - it will probably put off newbies that way.
Sven Guckes [2002-09-01]


Wishes that have come true

case insensitive search on scrollback buffers
Problem: In copy mode you can search for strings - but the search is case sensitive.
Solution: Add a switch to searching. Maybe implement this like with "less": Allow '-' to toggle options, so "-i" would toggle "insensitive search mode". Add an option which ignores the case of characters in searches, eg "set search-mode ignore-case".
clemens fischer ino-waiting@gmx.net 2001-11-26
Workaround: screen-3.9.11 now has the command "ignorecase". It is just not so easy to toggle that settings as in "less".
ignorecase [on|off]
Tell screen to ignore the case of caracters in searches.
Default is `off'.

:source [filename] [961107]
Problem: You can change the setup file - but for changes to a running session you need to type in every new changed setting manually. (No, you cannot paste text onto the command line. ;-)
Solution: Add command ":source" which will read a setup file, default "$HOME/.screenrc". The command "screen" should not be executed by default but should be optional.
screen-3.9.11 now has the :source command.

:zombie
Purpose: Do not close the window when the last process terminates. This allows to messages that processes have given, such as logout messages or those "death messages" like "segmentation fault". ;-)
Usage:
:zombie key
Example:
Enter the screen command zombie z, then use ^Ac to create a new window with a shell and exit shell. Now the window does not go away but screen displays this:
        === Window terminated (Fri Jan  2 19:45:00 1998) ===
Now you will know when the process ended. So should be lose a connection due to an auto-logout then you'll know when it happened. Furthermore, SCREEN gives you this message when you type any key (ie any key but those mentioned in the message):

        Press z to destroy - or ^@ to resurrect
This reminds you of the key which will destroy the window (the "zombie key") and to use control-space to "resurrect" the window, ie start the process again which started the window. This is especially useful when you have a connection running in a window, eg "ssh host". Should you lose the conenction then typing CONTROL-SPACE will restart it. :-)