Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | .TH MULTIXTERM 1 "16 August 2002" |
2 | .SH NAME | |
3 | multixterm \- drive multiple xterms separately or together | |
4 | .SH SYNOPSIS | |
5 | .B multixterm | |
6 | [ | |
7 | .I args | |
8 | ] | |
9 | .SH DESCRIPTION | |
10 | Multixterm creates multiple xterms that can be driven together | |
11 | or separately. | |
12 | ||
13 | In its simplest form, multixterm is run with no arguments and | |
14 | commands are interactively entered in the first entry field. | |
15 | Press return (or click the "new xterm" button) to create a new | |
16 | xterm running that command. | |
17 | ||
18 | Keystrokes in the "stdin window" are redirected to all xterms | |
19 | started by multixterm. xterms may be driven separately simply | |
20 | by focusing on them. | |
21 | ||
22 | The stdin window must have the focus for keystrokes to be sent | |
23 | to the xterms. When it has the focus, the color changes to | |
24 | aquamarine. As characters are entered, the color changes to | |
25 | green for a second. This provides feedback since characters | |
26 | are not echoed in the stdin window. | |
27 | ||
28 | Typing in the stdin window while holding down the alt or meta | |
29 | keys sends an escape character before the typed characters. | |
30 | This provides support for programs such as emacs. | |
31 | ||
32 | .SH ARGUMENTS | |
33 | .RS | |
34 | .TP 4 | |
35 | -xa | |
36 | The optional \-xa argument indicates arguments to pass to | |
37 | xterm. | |
38 | ||
39 | .TP | |
40 | -xc | |
41 | The optional \-xc argument indicates a command to be run in | |
42 | each named xterm (see \-xn). With no \-xc argument, the command | |
43 | is the current shell. | |
44 | ||
45 | .TP 4 | |
46 | -xd | |
47 | The optional \-xd argument indicates a directory to search for | |
48 | files that will appear in the Files menu. By default, the | |
49 | directory is: ~/lib/multixterm | |
50 | ||
51 | .TP 4 | |
52 | -xf | |
53 | The optional \-xf argument indicates a file to be read at | |
54 | startup. See FILES below for more info. | |
55 | ||
56 | .TP 4 | |
57 | -xn | |
58 | The optional \-xn argument indicates a name for each xterm. | |
59 | This name will also be substituted for any %n in the command | |
60 | argument (see \-xc). | |
61 | ||
62 | .TP 4 | |
63 | -xv | |
64 | The optional \-xv flag puts multixterm into a verbose mode | |
65 | where it will describe some of the things it is doing | |
66 | internally. The verbose output is not intended to be | |
67 | understandable to anyone but the author. | |
68 | ||
69 | .RE | |
70 | Less common options may be changed by the startup file (see | |
71 | FILES below). | |
72 | ||
73 | All the usual X and wish flags are supported (i.e., \-display, | |
74 | \-name). There are so many of them that to avoid colliding and | |
75 | make them easy to remember, all the multixterm flags begin | |
76 | with \-x. | |
77 | ||
78 | If any arguments do not match the flags above, the remainder of the | |
79 | command line is made available for user processing. By default, the | |
80 | remainder is used as a list of xterm names in the style of \-xn. The | |
81 | default behavior may be changed using the .multixtermrc file (see DOT | |
82 | FILE below). | |
83 | ||
84 | .SH "EXAMPLE COMMAND LINE ARGUMENTS" | |
85 | The following command line starts up two xterms using ssh to | |
86 | the hosts bud and dexter. | |
87 | ||
88 | multixterm \-xc "ssh %n" bud dexter | |
89 | ||
90 | .SH FILES | |
91 | Command files may be used to drive or initialize multixterm. | |
92 | The File menu may be used to invoke other files. If files | |
93 | exist in the command file directory (see \-xd above), they will | |
94 | appear in the File menu. Files may also be loaded by using | |
95 | File->Open. Any filename is acceptable but the File->Open | |
96 | browser defaults to files with a .mxt suffix. | |
97 | ||
98 | Files are written in Tcl and may change any variables or | |
99 | invoke any procedures. The primary variables of interest are 'xtermCmd' | |
100 | which identifies the command (see \-xc) and 'xtermNames' | |
101 | which is a list of names (see \-xn). The procedure | |
102 | xtermStartAll, starts xterms for each name in the list. Other | |
103 | variables and procedures may be discovered by examining | |
104 | multixterm itself. | |
105 | ||
106 | .SH "EXAMPLE FILE" | |
107 | The following file does the same thing as the earlier example | |
108 | command line: | |
109 | .nf | |
110 | ||
111 | # start two xterms connected to bud and dexter | |
112 | set xtermCmd "ssh %n" | |
113 | set xtermNames {bud dexter} | |
114 | xtermStartAll | |
115 | ||
116 | .fi | |
117 | .SH "DOT FILE" | |
118 | At startup, multixterm reads ~/.multixtermrc if present. This | |
119 | is similar to the command files (see FILES above) except | |
120 | that .multixtermrc may not call xtermStartAll. Instead it is | |
121 | called implicitly, similar to the way that it is implicit in | |
122 | the command line use of \-xn. | |
123 | ||
124 | The following example .multixtermrc file makes every xterm run | |
125 | ssh to the hosts named on the command line. | |
126 | ||
127 | set xtermCmd "ssh %n" | |
128 | ||
129 | Then multixterm could be called simply: | |
130 | ||
131 | multixterm bud dexter | |
132 | ||
133 | If any command-line argument does not match a multixterm flag, | |
134 | the remainder of the command line is made available to .multixtermrc | |
135 | in the argv variable. If argv is non-empty when .multixtermrc returns, it is assigned to xtermNames unless xtermNames is non-empty in which case, the | |
136 | content of argv is ignored. | |
137 | ||
138 | Commands from multixterm are evaluated early in the | |
139 | initialization of multixterm. Anything that must be done late | |
140 | in the initialization (such as adding additional bindings to | |
141 | the user interface) may be done by putting the commands inside | |
142 | a procedure called "initLate". | |
143 | ||
144 | .SH MENUS | |
145 | Except as otherwise noted, the menus are self-explanatory. | |
146 | Some of the menus have dashed lines as the first entry. | |
147 | Clicking on the dashed lines will "tear off" the menus. | |
148 | ||
149 | .SH "USAGE SUGGESTION \- ALIASES AND COMMAND FILES" | |
150 | Aliases may be used to store lengthy command-line invocations. | |
151 | Command files can be also be used to store such invocations | |
152 | as well as providing a convenient way to share configurations. | |
153 | ||
154 | Tcl is a general-purpose language. Thus multixterm command | |
155 | files can be extremely flexible, such as loading hostnames | |
156 | from other programs or files that may change from day-to-day. | |
157 | In addition, command files can be used for other purposes. | |
158 | For example, command files may be used to prepared common | |
159 | canned interaction sequences. For example, the command to | |
160 | send the same string to all xterms is: | |
161 | ||
162 | xtermSend "a particularly long string" | |
163 | ||
164 | The File menu (torn-off) makes canned sequences particularly | |
165 | convenient. Interactions could also be bound to a mouse button, | |
166 | keystroke, or added to a menu via the .multixtermrc file. | |
167 | ||
168 | The following .multixtermrc causes tiny xterms to tile across | |
169 | and down the screen. (You may have to adjust the parameters | |
170 | for your screen.) This can be very helpful when dealing with | |
171 | large numbers of xterms. | |
172 | .nf | |
173 | ||
174 | set yPos 0 | |
175 | set xPos 0 | |
176 | ||
177 | trace variable xtermArgs r traceArgs | |
178 | ||
179 | proc traceArgs {args} { | |
180 | global xPos yPos | |
181 | set ::xtermArgs "-geometry 80x12+$xPos+$yPos \-font 6x10" | |
182 | if {$xPos} { | |
183 | set xPos 0 | |
184 | incr yPos 145 | |
185 | if {$yPos > 800} {set yPos 0} | |
186 | } else { | |
187 | set xPos 500 | |
188 | } | |
189 | } | |
190 | .fi | |
191 | ||
192 | The xtermArgs variable in the code above is the variable corresponding | |
193 | to the \-xa argument. | |
194 | ||
195 | xterms can be also be created directly. The following command file | |
196 | creates three xterms overlapped | |
197 | horizontally: | |
198 | .nf | |
199 | ||
200 | set xPos 0 | |
201 | foreach name {bud dexter hotdog} { | |
202 | set ::xtermArgs "-geometry 80x12+$xPos+0 \-font 6x10" | |
203 | set ::xtermNames $name | |
204 | xtermStartAll | |
205 | incr xPos 300 | |
206 | } | |
207 | ||
208 | .fi | |
209 | .SH "USAGE SUGGESTION \- SELECTING HOSTS BY NICKNAME" | |
210 | The following .multixtermrc shows an example of changing the | |
211 | default handling of the arguments from hostnames to a filename | |
212 | containing hostnames: | |
213 | ||
214 | set xtermNames [exec cat $argv] | |
215 | ||
216 | The following is a variation, retrieving the host names from | |
217 | the yp database: | |
218 | ||
219 | set xtermNames [exec ypcat $argv] | |
220 | ||
221 | The following hardcodes two sets of hosts, so that you can | |
222 | call multixterm with either "cluster1" or "cluster2": | |
223 | .nf | |
224 | ||
225 | switch $argv { | |
226 | cluster1 { | |
227 | set xtermNames "bud dexter" | |
228 | } | |
229 | cluster2 { | |
230 | set xtermNames "frank hotdog weiner" | |
231 | } | |
232 | } | |
233 | ||
234 | .fi | |
235 | ||
236 | ||
237 | .SH COMPARE/CONTRAST | |
238 | It is worth comparing multixterm to xkibitz. Multixterm | |
239 | connects a separate process to each xterm. xkibitz connects | |
240 | the same process to each xterm. | |
241 | ||
242 | .SH LIMITATIONS | |
243 | ||
244 | Multixterm provides no way to remotely control scrollbars, resize, and | |
245 | most other window system related functions. | |
246 | ||
247 | Because xterm has no mechanism for propagating size information to | |
248 | external processes, particularly for character graphic applications | |
249 | (e.g., vi, emacs), you may have to manually ensure that the spawned | |
250 | process behind each xterm has the correct size. For example, if you | |
251 | create or set the xterm to a size, you may have to send an explicit | |
252 | stty command with the correct size to the spawned process(es). | |
253 | Alternatively, you can add the correct size argument when an xterm is | |
254 | created (i.e., "-geometry 80x20"). | |
255 | ||
256 | Multixterm can only control new xterms that multixterm itself has | |
257 | started. | |
258 | ||
259 | As a convenience, the File menu shows a limited number of | |
260 | files. To show all the files, use File->Open. | |
261 | ||
262 | .SH FILES | |
263 | $DOTDIR/.multixtermrc initial command file | |
264 | .br | |
265 | ~/.multixtermrc fallback command file | |
266 | .br | |
267 | ~/lib/multixterm/ default command file directory | |
268 | ||
269 | .SH BUGS | |
270 | If multixterm is killed using an uncatchable kill, the xterms | |
271 | are not killed. This appears to be a bug in xterm itself. | |
272 | ||
273 | Send/expect sequences can be done in multixterm command files. | |
274 | However, due to the richness of the possibilities, to document | |
275 | it properly would take more time than the author has at present. | |
276 | ||
277 | .SH REQUIREMENTS | |
278 | Requires Expect 5.36.0 or later. | |
279 | .br | |
280 | Requires Tk 8.3.3 or later. | |
281 | ||
282 | .SH VERSION | |
283 | This man page describes version 1.8 of multixterm. | |
284 | ||
285 | The latest version of multixterm is available from | |
286 | http://expect.nist.gov/example/multixterm . If your version of Expect | |
287 | and Tk are too old (see REQUIREMENTS above), download a new version of | |
288 | Expect from http://expect.nist.gov | |
289 | ||
290 | .SH DATE | |
291 | April 30, 2002 | |
292 | ||
293 | .SH AUTHOR | |
294 | Don Libes <don@libes.com> | |
295 | ||
296 | .SH LICENSE | |
297 | Multixterm is in the public domain; however the author would | |
298 | appreciate acknowledgement if multixterm or parts of it or ideas from | |
299 | it are used. |