SCREEN - window manager
Sat May 10 04:10:58
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..
- Startup as Zombie Window
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.
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
Some command names are quite long -
and they cannot be abbreviated with
a unique prefix like you can do in vim.
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
With many windows open you'd have to select a window by
moving through the list step-by-step, taking many commands.
- Add a search command which searches by title.
- Add a sort command which can sort by title name
and maybe other criteria.
- Allow to wrap around from first entry to last entry.
- And maybe present all windows in a grid fashion (like "ls" does).
- Allow to select a windows by its number. Tomas Ögren firstname.lastname@example.org [2002-03-20]
- Felix Rosencrantz email@example.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
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 firstname.lastname@example.org [2002-02-16]
- Dan Nelson email@example.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.
- Make local: zombie window
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.
Allow the zombie feature to be a local feature.
- Eliphas Levy Theodoro firstname.lastname@example.org 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'.
Allow these numbering schemes with some option:
- Matt Ackeret email@example.com [1998-01-02]
- Workaround by aurelio marinho jargas firstname.lastname@example.org [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 email@example.com [1998-01-01]
Enhance the search commands by adding support for regexpr (regular expressions).
- Matt Ackeret (firstname.lastname@example.org) [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 email@example.com [2002-02-19]
- Copy Mode - Block Selection
- Allow rectangular selection of text.
- Inspired by Vim's "visual block mode".
- Oliver Braun firstname.lastname@example.org [2002-09-11]
- Parameter Dialog (NEW feature)
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.
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 key
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.
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:
Enter key: k
default binding: k -> kill
current binding: k -> :echo "kill kill kill"
- Sven Guckes [1999-06-15,2002-02-18]
- :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>.
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.
Add the $HOSTNAME and $TTY info to the message.
Info about the screen version and an
optional "away mesage" would be nice, too. :-)
This screen session is locked.
Screen-3.9.11 on /dev/pts/23 for
Sven Guckes <email@example.com>
"Out to lunch - back at 2pm."
- :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.
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.
Ringing the bell is useful for some processes -
but screen allows audible/visual bell only.
Allow the bell to be set locally, ie for each window.
- :localwipeout ON
The command "screen -wipe" also wipes out session
for which the process runs on remote hosts.
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.
- Problem: You have two sessions, but you'd
rather have both of them in one session.
Add a command to ":merge" two sessions into one.
- Johannes Zellner firstname.lastname@example.org 2000-07-22
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.
Displays the current directory of the session.
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!
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.
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.
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.
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 email@example.com 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".
Tell screen to ignore the case of caracters in searches.
Default is `off'.
- :source [filename] 
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. ;-)
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.
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". ;-)
- 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. :-)