|
|
1.1 root 1: .\" Copyright (c) 1985, 1990 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" This code is derived from software contributed to Berkeley by
5: .\" Edward Wang at The University of California, Berkeley.
6: .\"
7: .\" Redistribution and use in source and binary forms are permitted provided
8: .\" that: (1) source distributions retain this entire copyright notice and
9: .\" comment, and (2) distributions including binaries display the following
10: .\" acknowledgement: ``This product includes software developed by the
11: .\" University of California, Berkeley and its contributors'' in the
12: .\" documentation or other materials provided with the distribution and in
13: .\" all advertising materials mentioning features or use of this software.
14: .\" Neither the name of the University nor the names of its contributors may
15: .\" be used to endorse or promote products derived from this software without
16: .\" specific prior written permission.
17: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
18: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
19: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20: .\"
21: .\" @(#)window.1 6.13 (Berkeley) 7/24/90
22: .\"
23: .Dd July 24, 1990
24: .Dt WINDOW 1
25: .Os BSD 4.3
26: .Sh NAME
27: .Nm window
28: .Nd window environment
29: .Sh SYNOPSIS
30: .Nm window
31: .Op Fl t
32: .Op Fl f
33: .Op Fl d
34: .Op Fl e Ar escape-char
35: .Op Fl c Ar command
36: .Sh DESCRIPTION
37: .Nm Window
38: implements a window environment on
39: ASCII terminals.
40: .Pp
41: A window is a rectangular portion of the physical terminal
42: screen associated with a set of processes. Its size and
43: position can be changed by the user at any time. Processes
44: communicate with their window in the same way they normally
45: interact with a terminal\-through their standard input, output,
46: and diagnostic file descriptors. The window program handles the
47: details of redirecting input an output to and from the
48: windows. At any one time, only one window can receive
49: input from the keyboard, but all windows can simultaneously send output
50: to the display.
51: .Pp
52: When
53: .Nm window
54: starts up, the commands (see long commands below)
55: contained in the file
56: .Pa .windowrc
57: in the user's home directory are
58: executed. If it does not exist, two equal sized windows spanning
59: the terminal screen are created by default.
60: .Pp
61: The command line options are
62: .Tw Fl
63: .Tp Fl t
64: Turn on terse mode (see
65: .Ic terse
66: command below).
67: .Tp Fl f
68: Fast. Don't perform any startup action.
69: .Tp Fl d
70: Ignore
71: .Pa .windowrc
72: and create the two default
73: windows instead.
74: .Tp Cx Fl e
75: .Cx \&\ \&
76: .Ar escape-char
77: .Cx
78: Set the escape character to
79: .Ar escape-char .
80: .Ar Escape-char
81: can be a single character, or in the form
82: .Ic ^X
83: where
84: .Ar X
85: is any character, meaning
86: .Cx control\-
87: .Ar X .
88: .Cx
89: .Tp Cx Fl c
90: .Cx \&\ \&
91: .Ar command
92: .Cx
93: Execute the string
94: .Ar command
95: as a long command (see below)
96: before doing anything else.
97: .Tp
98: .Pp
99: Windows can overlap and are framed as necessary. Each window
100: is named by one of the digits ``1'' to ``9''. This one-character
101: identifier, as well as a user definable label string, are displayed
102: with the window on the top edge of its frame. A window can be
103: designated to be in the
104: .Ar foreground ,
105: in which case it will always be
106: on top of all normal, non-foreground windows, and can be covered
107: only by other foreground windows. A window need not be completely
108: within the edges of the terminal screen. Thus a large window
109: (possibly larger than the screen) may be positioned to show only
110: a portion of its full size.
111: .Pp
112: Each window has a cursor and a set of control functions. Most intelligent
113: terminal operations such as line and
114: character deletion and insertion are supported. Display modes
115: such as underlining and reverse video are available if they are
116: supported by the terminal. In addition,
117: similar to terminals with multiple pages of memory,
118: each window has a text buffer which can have more lines than the window
119: itself.
120: .Ss Process Environment
121: With each newly created window, a shell program is spawned with its
122: process environment tailored to that window. Its standard input,
123: output, and diagnostic file descriptors are bound to one end of either
124: a pseudo-terminal
125: .Xr (pty 4 )
126: or a UNIX domain socket
127: .Xr (socketpair 4 ) .
128: If a pseudo-terminal is used, then its special
129: characters and modes (see
130: .Xr stty 1 )
131: are copied from the physical
132: terminal. A
133: .Xr termcap 5
134: entry tailored to this window is created
135: and passed as environment
136: .Xr (environ 5 )
137: variable
138: .Ev TERMCAP .
139: The termcap entry contains the window's size and
140: characteristics as well as information from the physical terminal,
141: such as the existence of underline, reverse video, and other display
142: modes, and the codes produced by the terminal's function keys,
143: if any. In addition, the window size attributes of the pseudo-terminal
144: are set to reflect the size of this window, and updated whenever
145: it is changed by the user. In particular, the editor
146: .Xr vi 1
147: uses
148: this information to redraw its display.
149: .Ss Operation
150: During normal execution,
151: .Nm window
152: can be in one of two states:
153: conversation mode and command mode. In conversation mode, the
154: terminal's real cursor is placed at the cursor position of a particular
155: window--called the current window--and input from the keyboard is sent
156: to the process in that window. The current window is always
157: on top of all other windows, except those in foreground. In addition,
158: it is set apart by highlighting its identifier and label in reverse video.
159: .Pp
160: Typing
161: .Cx Nm window
162: .Cx 's
163: .Cx
164: escape character (normally
165: .Ic ^P )
166: in conversation
167: mode switches it into command mode. In command mode, the top line of
168: the terminal screen becomes the command prompt window, and
169: .Nm window
170: interprets input from the keyboard as commands to manipulate windows.
171: .Pp
172: There are two types of commands: short commands are usually one or two
173: key strokes; long commands are strings either typed by the user in the
174: command window (see the
175: .Dq Ic \&:
176: command below), or read from a file (see
177: .Ic source
178: below).
179: .Ss Short Commands
180: Below,
181: .Ar #
182: represents one of the digits ``1'' to ``9''
183: corresponding to the windows 1 to 9.
184: .Ic ^X
185: means
186: .Cx control\-
187: .Ar X ,
188: .Cx
189: where
190: .Ar X
191: is any character. In particular,
192: .Ic ^^
193: is
194: .Li control\-^.
195: .Ar Escape
196: is the escape key, or
197: .Ic ^\&[
198: .Tw Ds
199: .Tp Ar #
200: Select window
201: .Ar #
202: as the current window
203: and return to conversation mode.
204: .Tp Cx Ic %
205: .Ar #
206: .Cx
207: Select window
208: .Ar #
209: but stay in command mode.
210: .Tp Ic ^^
211: Select the previous window and return to conversation
212: mode. This is useful for toggling between two windows.
213: .Tp Ic escape
214: Return to conversation mode.
215: .Tp Ic ^P
216: Return to conversation mode and write
217: .Ic ^P
218: to the
219: current window. Thus, typing two
220: .Cx Ic ^P
221: .Cx \'s
222: .Cx
223: in conversation
224: mode sends one to the current window. If the
225: .Nm window
226: escape is changed to some other character, that
227: character takes the place of
228: .Ic ^P
229: here.
230: .Tp Ic ?
231: List a short summary of commands.
232: .Tp Ic ^L
233: Refresh the screen.
234: .Tp Ic q
235: Exit
236: .Nm window .
237: Confirmation is requested.
238: .Tp Ic ^Z
239: Suspend
240: .Nm window .
241: .Tp Ic w
242: Create a new window. The user is prompted for the positions
243: of the upper left and lower right corners of the window.
244: The cursor is placed on the screen and the keys ``h'', ``j'',
245: ``k'', and ``l''
246: move the cursor left, down, up, and right, respectively.
247: The keys ``H'', ``J'', ``K'', and ``L'' move the cursor to the respective
248: limits of the screen. Typing a number before the movement keys
249: repeats the movement that number of times. Return enters the cursor position
250: as the upper left corner of the window. The lower right corner
251: is entered in the same manner. During this process,
252: the placement of the new window is indicated by a rectangular
253: box drawn on the screen, corresponding to where the new window
254: will be framed. Typing escape at any point
255: cancels this command.
256: .Pp
257: This window becomes the current window,
258: and is given the first available ID. The default buffer size
259: is used (see
260: .Ar default_nline
261: command below).
262: .Pp
263: Only fully visible windows can be created this way.
264: .Tp Cx Ic c
265: .Ar #
266: .Cx
267: Close window
268: .Ar # .
269: The process in the window is sent
270: the hangup signal (see
271: .Xr kill 1 ) .
272: .Xr Csh 1
273: should
274: handle this signal correctly and cause no problems.
275: .Tp Cx Ic m
276: .Ar #
277: .Cx
278: Move window
279: .Ar #
280: to another location. A box in the shape
281: of the window is drawn on
282: the screen to indicate the new position of the window, and the same keys as
283: those for the
284: .Ic w
285: command are used to position the box. The
286: window can be moved partially off-screen.
287: .Tp Cx Ic M
288: .Ar #
289: .Cx
290: Move window
291: .Ar #
292: to its previous position.
293: .Tp Cx Ic s
294: .Ar #
295: .Cx
296: Change the size of window
297: .Ar # .
298: The user is prompted
299: to enter the new lower right corner of the window. A box
300: is drawn to indicate the new window size. The same
301: keys used in
302: .Ic w
303: and
304: .Ic m
305: are used to enter the position.
306: .Tp Cx Ic S
307: .Ar #
308: .Cx
309: Change window
310: .Ar #
311: to its previous size.
312: .Tp Ic ^Y
313: Scroll the current window up by one line.
314: .Tp Ic ^E
315: Scroll the current window down by one line.
316: .Tp Ic ^U
317: Scroll the current window up by half the window size.
318: .Tp Ic ^D
319: Scroll the current window down by half the window size.
320: .Tp Ic ^B
321: Scroll the current window up by the full window size.
322: .Tp Ic ^F
323: Scroll the current window down by the full window size.
324: .Tp Ic h
325: Move the cursor of the current window left by one column.
326: .Tp Ic j
327: Move the cursor of the current window down by one line.
328: .Tp Ic k
329: Move the cursor of the current window up by one line.
330: .Tp Ic l
331: Move the cursor of the current window right by one column.
332: .Tp Ic ^S
333: Stop output in the current window.
334: .Tp Ic ^Q
335: Start output in the current window.
336: .Tp Ic :
337: Enter a line to be executed as long commands.
338: Normal line
339: editing characters (erase character, erase word, erase line)
340: are supported.
341: .Tp
342: .Ss Long Commands
343: Long commands are a sequence of statements
344: parsed much like a programming language, with a syntax
345: similar to that of C. Numeric and string expressions and variables
346: are supported, as well as conditional statements.
347: .Pp
348: There are two data types: string and number. A string is a sequence
349: of letters or digits beginning with a letter. ``_'' and ``.'' are
350: considered letters. Alternately, non-alphanumeric characters can
351: be included in strings by quoting them in ``"'' or escaping them
352: with ``\\''. In addition, the ``\\'' sequences of C are supported,
353: both inside and outside quotes (e.g., ``\\n'' is a new line,
354: ``\\r'' a carriage return). For example, these are legal strings:
355: abcde01234, "&#$^*&#", ab"$#"cd, ab\\$\\#cd, "/usr/ucb/window".
356: .Pp
357: A number is an integer value in one of three forms:
358: a decimal number, an octal number preceded by ``0'',
359: or a hexadecimal number preceded by ``0x'' or ``0X''. The natural
360: machine integer size is used (i.e., the signed integer type
361: of the C compiler). As in C, a non-zero number represents
362: a boolean true.
363: .Pp
364: The character ``#'' begins a comment which terminates at the
365: end of the line.
366: .Pp
367: A statement is either a conditional or an expression. Expression
368: statements are terminated with a new line or ``;''. To continue
369: an expression on the next line, terminate the first line with ``\\''.
370: .Ss Conditional Statement
371: .Nm Window
372: has a single control structure:
373: the fully bracketed if statement in the form
374: .Pp
375: .Ds I
376: if <expr> then
377: \t<statement>
378: \t...
379: elsif <expr> then
380: \t<statement>
381: \t...
382: else
383: \t<statement>
384: \t...
385: endif
386: .De
387: .Pp
388: The
389: .Ic else
390: and
391: .Ic elsif
392: parts are optional, and the latter can
393: be repeated any number of times.
394: <Expr>
395: must be numeric.
396: .Ss Expressions
397: Expressions in
398: .Nm window
399: are similar to those in the
400: C language, with most C operators supported on numeric
401: operands. In addition, some are overloaded to operate on strings.
402: .Pp
403: When an expression is used as a statement, its value is discarded
404: after evaluation. Therefore, only expressions with side
405: effects (assignments and function calls) are useful as statements.
406: .Pp
407: Single valued (no arrays) variables are supported, of both
408: numeric and string values. Some variables are predefined. They
409: are listed below.
410: .Pp
411: The operators in order of increasing precedence:
412: .Tw Fl
413: .Tp Cx <
414: .Va expr1
415: .Cx >
416: .Cx \&\ \&
417: .Ic =
418: .Cx \&\ \&
419: .Cx <
420: .Va expr2
421: .Cx >
422: .Cx
423: Assignment. The variable of name
424: .Cx <
425: .Va expr1
426: .Cx >,
427: .Cx
428: which must be string valued,
429: is assigned the result of
430: .Cx <
431: .Va expr2
432: .Cx >.
433: .Cx
434: Returns the value of
435: .Cx <
436: .Va expr2
437: .Cx >.
438: .Cx
439: .Tp Cx <
440: .Va expr1
441: .Cx >
442: .Cx \&\ \&
443: .Ic ?
444: .Cx \&\ \&
445: .Cx <
446: .Va expr2
447: .Cx >
448: .Cx \&\ \&
449: .Ic :
450: .Cx \&\ \&
451: .Cx <
452: .Va expr3
453: .Cx >
454: .Cx
455: Returns the value of
456: .Cx <
457: .Va expr2
458: .Cx >
459: .Cx
460: if
461: .Cx <
462: .Va expr1
463: .Cx >
464: .Cx
465: evaluates true
466: (non-zero numeric value); returns the value of
467: .Cx <
468: .Va expr3
469: .Cx >
470: .Cx
471: otherwise. Only
472: one of
473: .Cx <
474: .Va expr2
475: .Cx >
476: .Cx
477: and
478: .Cx <
479: .Va expr3
480: .Cx >
481: .Cx
482: is evaluated.
483: .Cx <
484: .Va Expr1
485: .Cx >
486: .Cx
487: must
488: be numeric.
489: .Tp Cx <
490: .Va expr1
491: .Cx >
492: .Cx \&\ \&
493: .Ic \&|\&|
494: .Cx \&\ \&
495: .Cx <
496: .Va expr2
497: .Cx >
498: .Cx
499: Logical or. Numeric values only. Short circuit evaluation is supported
500: (i.e., if
501: .Cx <
502: .Va expr1
503: .Cx >
504: .Cx
505: evaluates true, then
506: .Cx <
507: .Va expr2
508: .Cx >
509: .Cx
510: is not evaluated).
511: .Tp Cx <
512: .Va expr1
513: .Cx >
514: .Cx \&\ \&
515: .Ic \&&\&&
516: .Cx \&\ \&
517: .Cx <
518: .Va expr2
519: .Cx >
520: .Cx
521: Logical and with short circuit evaluation. Numeric values only.
522: .Tp Cx <
523: .Va expr1
524: .Cx >
525: .Cx \&\ \&
526: .Ic \&|
527: .Cx \&\ \&
528: .Cx <
529: .Va expr2
530: .Cx >
531: .Cx
532: Bitwise or. Numeric values only.
533: .Tp Cx <
534: .Va expr1
535: .Cx >
536: .Cx \&\ \&
537: .Ic ^
538: .Cx \&\ \&
539: .Cx <
540: .Va expr2
541: .Cx >
542: .Cx
543: Bitwise exclusive or. Numeric values only.
544: .Tp Cx <
545: .Va expr1
546: .Cx >
547: .Cx \&\ \&
548: .Ic \&&
549: .Cx \&\ \&
550: .Cx <
551: .Va expr2
552: .Cx >
553: .Cx
554: Bitwise and. Numeric values only.
555: .Tp Cx <
556: .Va expr1
557: .Cx >
558: .Cx \&\ \&
559: .Ic =
560: .Cx \&\ \&
561: .Cx <
562: .Va expr2
563: .Cx >,
564: .Cx \&\ \&
565: .Va expr1
566: .Cx >
567: .Cx \&\ \&
568: .Ic !=
569: .Cx \&\ \&
570: .Cx <
571: .Va expr2
572: .Cx >
573: .Cx
574: Comparison (equal and not equal, respectively). The boolean
575: result (either 1 or 0) of the comparison is returned. The
576: operands can be numeric or string valued. One string operand
577: forces the other to be converted to a string in necessary.
578: .Tp Cx <
579: .Va expr1
580: .Cx >
581: .Cx \&\ \&
582: .Ic <
583: .Cx \&\ \&
584: .Cx <
585: .Va expr2
586: .Cx >,
587: .Cx \&\ \&
588: .Va expr1
589: .Cx >
590: .Cx \&\ \&
591: .Ic >
592: .Cx \&\ \&
593: .Cx <
594: .Va expr2
595: .Cx >,
596: .Cx \&\ \&
597: .Va expr1
598: .Cx >
599: .Cx \&\ \&
600: .Ic <=
601: .Cx \&\ \&
602: .Cx <
603: .Va expr2
604: .Cx >,
605: .Cx
606: Less than, greater than, less than or equal to,
607: greater than or equal to. Both numeric and string values, with
608: automatic conversion as above.
609: .Tp Cx <
610: .Va expr1
611: .Cx >
612: .Cx \&\ \&
613: .Ic <<
614: .Cx \&\ \&
615: .Cx <
616: .Va expr2
617: .Cx >,
618: .Cx \&\ \&
619: .Va expr1
620: .Cx >
621: .Cx \&\ \&
622: .Ic >>
623: .Cx \&\ \&
624: .Cx <
625: .Va expr2
626: .Cx >
627: .Cx
628: If both operands are numbers,
629: .Cx <
630: .Va expr1
631: .Cx >
632: .Cx
633: is bit
634: shifted left (or right) by
635: .Cx <
636: .Va expr2
637: .Cx >
638: .Cx
639: bits. If
640: .Cx <
641: .Va expr1
642: .Cx >
643: .Cx
644: is
645: a string, then its first (or last)
646: .Cx <
647: .Va expr2
648: .Cx >
649: .Cx
650: characters are
651: returns (if
652: .Cx <
653: .Va expr2
654: .Cx >
655: .Cx
656: is also a string, then its length is used
657: in place of its value).
658: .Tp Cx <
659: .Va expr1
660: .Cx >
661: .Cx \&\ \&
662: .Ic +
663: .Cx \&\ \&
664: .Cx <
665: .Va expr2
666: .Cx >,
667: .Cx \&\ \&
668: .Va expr1
669: .Cx >
670: .Cx \&\ \&
671: .Ic -
672: .Cx \&\ \&
673: .Cx <
674: .Va expr2
675: .Cx >
676: .Cx
677: Addition and subtraction on numbers. For ``+'', if one
678: argument is a string, then the other is converted to a string,
679: and the result is the concatenation of the two strings.
680: .Tp Cx <
681: .Va expr1
682: .Cx >
683: .Cx \&\ \&
684: .Ic \&*
685: .Cx \&\ \&<
686: .Va expr2
687: .Cx >,
688: .Cx \&\ \&<
689: .Va expr1
690: .Cx >
691: .Cx \&\ \&
692: .Ic \&/
693: .Cx \&\ \&<
694: .Va expr2
695: .Cx >,\&\ \&<
696: .Va expr1
697: .Cx >,
698: .Cx \&\ \&<
699: .Va expr1
700: .Cx >
701: .Cx \&\ \&
702: .Ic \&%
703: .Cx \&\ \&<
704: .Va expr2
705: .Cx >
706: .Cx
707: Multiplication, division, modulo. Numbers only.
708: .Tp Cx <
709: .Va expr
710: .Cx >,
711: .Cx \&\ \&
712: .Ic ~
713: .Cx <
714: .Va expr
715: .Cx >,
716: .Cx \&\ \&
717: .Ic \&!
718: .Cx <
719: .Va expr
720: .Cx >,
721: .Cx \&\ \&
722: .Ic \&$
723: .Cx <
724: .Va expr
725: .Cx >,
726: .Cx \&\ \&
727: .Ic \&$?
728: .Cx <
729: .Va expr
730: .Cx >
731: .Cx
732: The first three are unary minus, bitwise complement and logical complement
733: on numbers only. The operator, ``$'', takes
734: .Cx <
735: .Va expr
736: .Cx >
737: .Cx
738: and returns
739: the value of the variable of that name. If
740: .Cx <
741: .Va expr
742: .Cx >
743: .Cx
744: is numeric
745: with value
746: .Ar n
747: and it appears within an alias macro (see below),
748: then it refers to the nth argument of the alias invocation. ``$?''
749: tests for the existence of the variable
750: .Cx <
751: .Va expr
752: .Cx >,
753: .Cx
754: and returns 1
755: if it exists or 0 otherwise.
756: .Tp Cx <
757: .Va expr
758: .Cx >(<
759: .Ar arglist
760: .Cx >)
761: .Cx
762: Function call.
763: .Cx <
764: .Va Expr
765: .Cx >
766: .Cx
767: must be a string that is the unique
768: prefix of the name of a builtin
769: .Nm window
770: function
771: or the full name of a user defined alias macro. In the case of a builtin
772: function,
773: .Cx <
774: .Ar arglist
775: .Cx >
776: .Cx
777: can be in one of two forms:
778: .Dl <expr1>, <expr2>, ...
779: .Dl argname1 = <expr1>, argname2 = <expr2>, ...
780: The two forms can in fact be intermixed, but the result is
781: unpredictable. Most arguments can be omitted; default values will
782: be supplied for them. The
783: .Ar argnames
784: can be unique prefixes
785: of the the argument names. The commas separating
786: arguments are used only to disambiguate, and can usually be omitted.
787: .Pp
788: Only the first argument form is valid for user defined aliases. Aliases
789: are defined using the
790: .Ic alias
791: builtin function (see below). Arguments
792: are accessed via a variant of the variable mechanism (see ``$'' operator
793: above).
794: .Pp
795: Most functions return value, but some are used for side effect
796: only and so must be used as statements. When a function or an alias is used
797: as a statement, the parenthesis surrounding
798: the argument list may be omitted. Aliases return no value.
799: .Tp
800: .Ss Builtin Functions
801: The arguments are listed by name in their natural
802: order. Optional arguments are in square brackets
803: .Sq Op .
804: Arguments
805: that have no names are in angle brackets
806: .Sq <> .
807: An argument meant to be a boolean flag (often named
808: .Ar flag )
809: can be one of
810: .Ar on ,
811: .Ar off ,
812: .Ar yes ,
813: .Ar no ,
814: .Ar true ,
815: or
816: .Ar false ,
817: with
818: obvious meanings, or it can be a numeric expression,
819: in which case a non-zero value is true.
820: .Tw Fl
821: .Tp Cx Ic alias
822: .Cx \&([<
823: .Ar string
824: .Cx ]>,
825: .Cx \&\ \&[<
826: .Ar string\-list
827: .Cx >]\&)
828: .Cx
829: If no argument is given, all currently defined alias macros are
830: listed. Otherwise,
831: .Cx <
832: .Ar string
833: .Cx >
834: .Cx
835: is defined as an alias,
836: with expansion
837: .Cx <
838: .Ar string\-list
839: .Cx > .
840: .Cx
841: The previous definition of
842: .Cx <
843: .Ar string
844: .Cx >,
845: .Cx
846: if any, is returned. Default for
847: .Cx <
848: .Ar string\-list
849: .Cx >
850: .Cx
851: is no change.
852: .Tp Cx Ic close
853: .Cx (<
854: .Ar window\-list
855: .Cx >)
856: .Cx
857: Close the windows specified in
858: .Cx <
859: .Ar window\-list
860: .Cx >.
861: .Cx
862: If
863: .Cx <
864: .Ar window\-list
865: .Cx >
866: .Cx
867: is the word
868: .Ar all ,
869: than all windows are closed. No value is returned.
870: .Tp Cx Ic cursormodes
871: .Cx \&(
872: .Op Ar modes
873: .Cx \&)
874: .Cx
875: Set the window cursor to
876: .Ar modes .
877: .Ar Modes
878: is the bitwise
879: or of the mode bits defined as the variables
880: .Ar m_ul
881: (underline),
882: .Ar m_rev
883: (reverse video),
884: .Ar m_blk
885: (blinking),
886: and
887: .Ar m_grp
888: (graphics, terminal dependent). Return
889: value is the previous modes. Default is no change.
890: For example,
891: .Li cursor($m_rev$m_blk)
892: sets the window cursors to blinking
893: reverse video.
894: .Tp Cx Ic default_nline
895: .Cx \&(
896: .Op Ar nline
897: .Cx \&)
898: .Cx
899: Set the default buffer size to
900: .Ar nline .
901: Initially, it is
902: 48 lines. Returns the old default buffer size. Default is
903: no change. Using a very large buffer can slow the program down
904: considerably.
905: .Tp Cx Ic default_shell
906: .Cx \&([<
907: .Ar string\-list
908: .Cx >]\&)
909: .Cx
910: Set the default window shell program to
911: .Cx <
912: .Ar string\-list
913: .Cx >.
914: .Cx
915: Returns
916: the first string in the old shell setting. Default is no change. Initially,
917: the default shell is taken from the environment variable
918: .Ev SHELL .
919: .Tp Cx Ic default_smooth
920: .Cx \&(
921: .Op Ar flag
922: .Cx \&)
923: .Cx
924: Set the default value of the
925: .Ar smooth
926: argument
927: to the command
928: .Nm window
929: (see below). The argument
930: is a boolean flag (one of
931: .Ar on ,
932: .Ar off ,
933: .Ar yes ,
934: .Ar no ,
935: .Ar true ,
936: .Ar false ,
937: or a number,
938: as described above). Default is no change.
939: The old value (as a number) is returned.
940: The initial value is 1 (true).
941: .Tp Cx Ic echo
942: .Cx \&(
943: .Op Ar window
944: .Cx \&,\&\ \&[<
945: .Ar string\-list
946: .Cx >]\&)
947: .Cx
948: Write the list of strings,
949: .Cx <
950: .Ar string-list
951: .Cx >,
952: .Cx
953: to
954: .Nm window ,
955: separated
956: by spaces and terminated with a new line. The strings are only
957: displayed in the window, the processes in the window are not
958: involved (see
959: .Ic write
960: below). No value is returned. Default
961: is the current window.
962: .Tp Cx Ic escape
963: .Cx \&(
964: .Op Ar escapec
965: .Cx \&)
966: .Cx
967: Set the escape character to
968: .Ar escape-char .
969: Returns the old
970: escape character as a one-character string. Default is no
971: change.
972: .Ar Escapec
973: can be a string of a single character, or
974: in the form
975: .Fl ^X ,
976: meaning
977: Cx control\-
978: .Ar X
979: .Cx .
980: .Cx
981: .Tp Cx Ic foreground
982: .Cx \&(
983: .Op Ar window
984: .Cx \&,
985: .Op Ar flag
986: .Cx \&)
987: .Cx
988: Move
989: .Nm window
990: in or out of foreground.
991: .Ar Flag
992: is a boolean value. The old foreground flag
993: is returned. Default for
994: .Nm window
995: is the current window,
996: default for
997: .Ar flag
998: is no change.
999: .Tp Cx Ic label
1000: .Cx \&(
1001: .Op Ar window
1002: .Cx \&,
1003: .Op Ar label
1004: .Cx \&)
1005: .Cx
1006: Set the label of
1007: .Nm window
1008: to
1009: .Ar label .
1010: Returns the old
1011: label as a string. Default for
1012: .Nm window
1013: is the current
1014: window, default for
1015: .Ar label
1016: is no change. To turn
1017: off a label, set it to an empty string ("").
1018: .Tp Cx Ic list
1019: .Cx \&( \&)
1020: .Cx
1021: No arguments. List the identifiers and labels of all windows. No
1022: value is returned.
1023: .Tp Cx Ic select
1024: .Cx \&(
1025: .Op Ar window
1026: .Cx \&)
1027: .Cx
1028: Make
1029: .Nm window
1030: the current window. The previous current window
1031: is returned. Default is no change.
1032: .Tp Cx Ic source
1033: .Cx \&(
1034: .Ar filename
1035: .Cx \&)
1036: .Cx
1037: Read and execute the long commands in
1038: .Ar filename .
1039: Returns -1 if the file cannot be read, 0 otherwise.
1040: .Tp Cx Ic terse
1041: .Cx \&(
1042: .Op flag
1043: .Cx \&)
1044: .Cx
1045: Set terse mode to
1046: .Ar flag .
1047: In terse mode, the command window
1048: stays hidden even in command mode, and errors are reported by
1049: sounding the terminal's bell.
1050: .Ar Flag
1051: can take on the same
1052: values as in
1053: .Ar foreground
1054: above. Returns the old terse flag.
1055: Default is no change.
1056: .Tp Cx Ic unalias
1057: .Cx \&(
1058: .Ar alias
1059: .Cx \&)
1060: .Cx
1061: Undefine
1062: .Ar alias .
1063: Returns -1 if
1064: .Ar alias
1065: does not exist,
1066: 0 otherwise.
1067: .Tp Cx Ic unset
1068: .Cx \&(
1069: .Ar variable
1070: .Cx \&)
1071: .Cx
1072: Undefine
1073: .Ar variable .
1074: Returns -1 if
1075: .Ar variable
1076: does not exist,
1077: 0 otherwise.
1078: .Tp Cx Ic variables
1079: .Cx \&( \&)
1080: .Cx
1081: No arguments. List all variables. No value is returned.
1082: .Tp Cx Ic window
1083: .Cx \&(
1084: .Op Ar row
1085: .Cx \&,
1086: .Cx \&\ \&
1087: .Op Ar column
1088: .Cx \&,
1089: .Cx \&\ \&
1090: .Op Ar nrow
1091: .Cx \&,
1092: .Cx \&\ \&
1093: .Op Ar ncol
1094: .Cx \&,
1095: .Cx \&\ \&
1096: .Op Ar nline
1097: .Cx \&,
1098: .Cx \&\ \&
1099: .Op Ar label
1100: .Cx \&,
1101: .Cx \&\ \&
1102: .Cx Op Ar pty
1103: .Cx \&,
1104: .Cx
1105: .Op Ar frame
1106: .Cx \&,
1107: .Cx \&\ \&
1108: .Op Ar mapnl
1109: .Cx \&,
1110: .Cx \&\ \&
1111: .Op Ar keepopen
1112: .Cx \&,
1113: .Cx \&\ \&
1114: .Op Ar smooth
1115: .Cx \&,
1116: .Cx \&\ \&
1117: .Op Ar shell
1118: .Cx \&).
1119: .Cx
1120: Open a window with upper left corner at
1121: .Ar row ,
1122: .Ar column
1123: and size
1124: .Ar nrow ,
1125: .Ar ncol .
1126: If
1127: .Ar nline
1128: is specified,
1129: then that many lines are allocated for the text buffer. Otherwise,
1130: the default buffer size is used. Default values for
1131: .Ar row ,
1132: .Ar column ,
1133: .Ar nrow ,
1134: and
1135: .Ar ncol
1136: are, respectively,
1137: the upper, left-most, lower, or right-most extremes of the
1138: screen.
1139: .Ar Label
1140: is the label string.
1141: .Ar Frame ,
1142: .Ar pty ,
1143: and
1144: .Ar mapnl
1145: are flag values
1146: interpreted in the same way as the argument to
1147: .Ar foreground
1148: (see above);
1149: they mean, respectively, put a frame around this window (default true),
1150: allocate pseudo-terminal for this window rather than socketpair (default
1151: true), and map new line characters in this window to carriage return
1152: and line feed (default true if socketpair is used, false otherwise).
1153: Normally, a window is automatically closed when its process
1154: exits. Setting
1155: .Ar keepopen
1156: to true (default false) prevents this
1157: action. When
1158: .Ar smooth
1159: is true, the screen is updated more frequently
1160: (for this window) to produce a more terminal-like behavior.
1161: The default value of
1162: .Ar smooth
1163: is set by the
1164: .Ar default_smooth
1165: command (see above).
1166: .Ar Shell
1167: is a list of strings that will be used as the shell
1168: program to place in the window (default is the program specified
1169: by
1170: .Ar default_shell ,
1171: see above). The created window's identifier
1172: is returned as a number.
1173: .Tp Cx Ic write
1174: .Cx \&(
1175: .Op Ar window
1176: .Cx \&,\&\ \&[<
1177: .Ar string\-list
1178: .Cx >]\&)
1179: .Cx
1180: Send the list of strings,
1181: .Cx <
1182: .Ar string-list
1183: .Cx >,
1184: .Cx
1185: to
1186: .Nm window ,
1187: separated
1188: by spaces but not terminated with a new line. The strings are actually
1189: given to the window as input. No value is returned. Default
1190: is the current window.
1191: .Tp
1192: .Ss Predefined Variables
1193: These variables are for information only. Redefining them does
1194: not affect the internal operation of
1195: .Nm window .
1196: .Tw Fl
1197: .Tp Ar baud
1198: The baud rate as a number between 50 and 38400.
1199: .Tp Ar modes
1200: The display modes (reverse video, underline, blinking, graphics)
1201: supported by the physical terminal. The value of
1202: .Ar modes
1203: is the bitwise or of some of the one bit values,
1204: .Ar m_blk ,
1205: .Ar m_grp ,
1206: .Ar m_rev ,
1207: and
1208: .Ar m_ul
1209: (see below).
1210: These values are useful
1211: in setting the window cursors' modes (see
1212: .Ar cursormodes
1213: above).
1214: .Tp Ar m_blk
1215: The blinking mode bit.
1216: .Tp Ar m_grp
1217: The graphics mode bit (not very useful).
1218: .Tp Ar m_rev
1219: The reverse video mode bit.
1220: .Tp Ar m_ul
1221: The underline mode bit.
1222: .Tp Ar ncol
1223: The number of columns on the physical screen.
1224: .Tp Ar nrow
1225: The number of rows on the physical screen.
1226: .Tp Ar term
1227: The terminal type. The standard name, found in the second name
1228: field of the terminal's
1229: .Ev TERMCAP
1230: entry, is used.
1231: .Sh ENVIRONMENT
1232: .Nm Window
1233: utilizes these environment variables:
1234: .Ev HOME ,
1235: .Ev SHELL ,
1236: .Ev TERM ,
1237: .Ev TERMCAP ,
1238: .Ev WINDOW_ID .
1239: .Sh FILES
1240: .Dw /dev/[pt]ty[pq]?
1241: .Di L
1242: .Dp Pa ~/.windowrc
1243: startup command file.
1244: .Dp Cx Pa /dev/
1245: .Op Pa pt
1246: .Cx ty
1247: .Op Pa pq
1248: .Cx ?
1249: .Cx
1250: pseudo-terminal devices.
1251: .Dp
1252: .Sh HISTORY
1253: .Nm window
1254: appeared in 4.3 BSD.
1255: .Sh DIAGNOSTICS
1256: Should be self explanatory.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.