1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
|
.if n .ig
.de HB
.ie \\n[.$] .ft HB
.el \f[HB]\\$*\fP
..
.if t .ig
.de HB
.ie \\n[.$] .ul 999
.el .ul
\\$*
..
.als TB HB
.TH SPLITVT 1 "1/5/95" "SPLITVT" "NONESSENTIAL UTILITIES"
.SH NAME
splitvt - run two shells in a split window
.SH SYNOPSIS
.nf
.ft B
splitvt [options] [shell]
.SH OPTIONS
.LP
.TP
.TB
.I \-upper command
Runs 'command' in the upper window
.TP
.TB
.I \-lower command
Runs 'command' in the lower window
.TP
.TB
.I \-bottom
Stats with the focus in the bottom window
.TP
.TB
.I \-s numlines
Sets 'numlines' to the number of lines in the top window. This number
will be modified if the screen isn't big enough to handle the full
size.
.TP
.TB
.I \-t title
Sets an xterm title bar to 'title'
.TP
.TB
.I \-login
Runs the programs under each window as though they were login shells.
This is useful to have csh source it's .login file, bash source .profile,
etc.
.TP
.TB
.I \-nologin
Overrides any "set login on" statement in the startup file.
.TP
.TB
.I \-rcfile file
Loads 'file' as the startup file instead of ~/.splitvtrc.
.TP
.TB
.I \-norc
Suppresses loading your ~/.splitvtrc
.TP
.TB
.I \-f
Allow setting the height of either the top or the bottom window to less than
3 lines.
.TP
.TB
.I \-v
Print out the version number of splitvt
.LP
.SH DESCRIPTION
.LP
This program splits the screen into two windows, one above the other,
and runs a shell in each one. The default shell is taken from the
SHELL environment variable, or /bin/csh if SHELL isn't in the
environment, but another shell can be specified on the command line.
The top window is the default current window, but you can change to
the other by pressing ^W. Pressing ^V will quote the next character
to the current shell. Pressing ^O will put splitvt into command mode.
These special characters (command mode, switch window, and quote next
character) can be modified from within the .splitvtrc file.
When in command mode, splitvt will read one non-numeric character,
perform the requested command, and then revert to normal operations.
Numeric characters are interpreted as a parameter for the specified
command. The currently supported commands are:
.TP
.TB
.I 'h'
Print a help window for the escape commands
.LP
.TP
.TB
.I '\-'
Shrink the current window
.LP
.TP
.TB
.I '+'
Expand the current window
.LP
.TP
.TB
.I 'c'
Select a block of text in the current window
.LP
.TP
.TB
.I 'p'
Paste the selected text to the current window
.LP
.TP
.TB
.I 'k'
Kill the current window (hangup signal)
.LP
.TP
.TB
.I 'x'
Lock the screen, after prompting for password
.LP
.TP
.TB
.I 'r'
Repaint the screen (clearing screen garbage)
.LP
.TP
.TB
.I 'q'
Quickly quit splitvt, killing the running shells
.LP
More functions may be added in the future.
If the \-s command line option is used, the upper window will be bound
to the user defined number of lines even if the screen is resized.
Otherwise, the screen will be split into two equal parts based on
the new size of the screen.
The environment variable SPLITVT is set in the shells forked by splitvt.
In the shell running in the upper window, this variable is set to the
value "upper", while the shell running in the lower window has this
variable set to the value "lower". This is useful in shell scripts to
provide different behavior depending on which window the script is
running in. An example of this is shown in the file "menu" in the examples
directory in the splitvt distribution.
When splitvt starts up, it looks in your home directory for a file named
.TB
.I .splitvtrc
You can set a number of parameters from within this file, including
all of the special characters, the default number of lines in the upper
window, whether or not to run the commands as login shells, and even
default commands to run in each window.
.LP
Here is an example of a .splitvtrc file:
.nf
.ft CW
.in +5n
# This is an example .splitvtrc file.
set command_char ^O
set quote_char ^V
set switch_char ^W
set upper_lines 12
run \-upper /bin/sh
run \-lower top
set login on
# This next line would override the above run statements
#run /bin/tcsh
.ft
.fi
.in
.sp
If programs like vi are doing strange things to the window while in
splitvt, you probably need to set the LINES environment variable to a
correct value, or set the terminal's window sizing correctly. This
should be done automatically, but may need to be corrected.
If you are running under an xterm window, the title bar will probably
be updated to show the version of splitvt that you are running.
Under a true xterm window, you can also switch which half of the window
you are typing into by clicking the mouse in the half of the window
in which you want to type. You can also drag and drop the separator
bar by pressing down on the mouse button over the separator bar,
holding it down, moving the mouse to where you want the bar to end up,
and then releasing the button.
splitvt will attempt to erase the current utmp entry, and replace it
with entries for the two windows. This allows you to use programs
such as 'talk' within the splitvt windows. If you do not have write
permission to the /var/run/utmp file, you will not be able to modify the
utmp entries.
splitvt can be made set-uid root. splitvt will reset its user id to
that of the person running it, just before it exec()'s the shell under
the window. The splitvt process remains with root permissions, and
will change ownership of the pseudo terminals to that of the person
running splitvt, and then reset it to root when the window is closed.
.LP
SPLITVT IS NOT GUARANTEED TO BE A SAFE SET-UID PROGRAM!
.LP
I have done all I know to keep splitvt a safely usable set-uid program,
but I do not know everything, and am not responsible for any security
weaknesses splitvt might posess.
.SH BUGS
When used with a certain public domain version of ksh, you have to
manually kill \-9 on the shell processes after you quit splitvt. This
has to do with a bug in that version of ksh (Version 06/03/86a and
possibly others).
If splitvt is compiled with xterm support, when run under an xterm,
the cut and paste feature is semi-disabled. The title bar may also
be reset to the string "xterm" after splitvt quits. See the comments
at the top of splitvt.c for how to disable xterm support.
Ansi colors are not repainted on screen refresh.
.SH CAVEATS
There may be conflicts between splitvt's characters and other
programs. You can either change splitvt's default characters with
command line options, or you can type Ctrl-V (the quote character)
within splitvt, and the next character typed will be sent to the
current window, no matter what it is.
splitvt can only be used by terminals using vt100 emulation, due to
the use of specific vt100 escape codes. (vt300, xterm, Linux console,
etc, emulation also works)
When running in an xterm, if you press the escape key, you will have
to type another character in order for the escape to be seen by the
running program.
.SH AUTHOR
Sam Lantinga slouken@cs.ucdavis.edu
|