diff options
Diffstat (limited to 'zwgc/zwgc.1.in')
-rw-r--r-- | zwgc/zwgc.1.in | 1067 |
1 files changed, 1067 insertions, 0 deletions
diff --git a/zwgc/zwgc.1.in b/zwgc/zwgc.1.in new file mode 100644 index 0000000..88a7ba4 --- /dev/null +++ b/zwgc/zwgc.1.in @@ -0,0 +1,1067 @@ +.\" $Id$ +.\" # end of TP (cf }N below) +.\" # copied here, since we use @ in some of our tags, and that +.\" # messes up \w and \h +.de }1 +.ds ]X \&\\*(]B\\ +.nr )E 0 +.if !"\\$1"" .nr )I \\$1n +.}f +.ll \\n(LLu +.in \\n()Ru+\\n(INu+\\n()Iu +.ti \\n(INu +.ie !\\n()Iu+\\n()Ru-\w'\\*(]X'u-3p \{\\*(]X +.br\} +.el \\*(]X\h@|\\n()Iu+\\n()Ru@\c +.}f +.. +.de }N +.if \\n()E .br +.di +.if "\\n()E"0" .}f +.if "\\n()E"1" .}1 +.if "\\n()E"2" .}2 +.nr )E 0 +.. +.\" # tagged paragraph (paragraph with hanging label, but no para spacing) +.de TQ +.if !"\\$1"" .nr )I \\$1n +.ne 1.1v +.in \\n()Ru +.nr )E 1 +.ns +.it 1 }N +.di ]B +.. +.TH ZWGC 1 "November 30, 1989" "MIT Project Athena" +.SH NAME +zwgc \- Zephyr Windowgram Client program +.SH SYNOPSIS +.B zwgc +[ \-reenter ] [ \-nofork ] [ \-ttymode ] [ \-f +.I filename +] [ \-subfile +.I filename +] [ \-loc +.I text +] [ \-default +.I portname +] [ \-disable +.I portname +] ... [ output driver options ] +[ X Toolkit options... ] +.SH DESCRIPTION +.I Zwgc +is the main +.I zephyr(1) +client. It is responsible for receiving selected zephyr notices on +behalf of the user, formatting them, and displaying them using +one or more of the output devices. + +.SS "Selection of Zephyr Notices" +.PP +.I Zwgc +subscribes to various notice classes and instances on behalf of the +user. Only notices in the subscription list will be received. The +subscription list is composed of the default subscriptions (stored on +the server), the user's subscriptions file, and any subscriptions made +using +.IR zctl (1). +The user's subscription file defaults to +.IR $HOME/.zephyr.subs , +or it can be specified with the \-subfile +option. If "\-" is specified as the subscription filename, the +subscriptions will be read from standard input. + +.PP +The +.I zctl +command is used to manipulate and change subscriptions. See the +.IR zctl (1) +man page for details. + +.SS "Zephyr Description Files" +.PP +.I Zwgc +formats its output messages according to the commands in its +description file. The user's description file +.RI ( $HOME/.zwgc.desc +by default, or whatever is specified by \-f) is read, or the system file +is read if the user's does not exist. +.PP +Every time a notice is received, +.I zwgc +runs through the description file, and executes the appropriate commands. + +.SS "Zephyr Description File Syntax" +.PP +A description file is simply a list of commands. Whitespace (spaces, +tabs, and line breaks) is used +to separate tokens. The type and amount of whitespace separating tokens +is irrelevant. +Comments can be delimited by # and newline (for line-oriented comments, +e.g. "# this is a comment" on a line by itself) or by /* and */ (e.g. "/* +this is a comment */"). + +.SH "DESCRIPTION LANGUAGE" +.SS Expressions +Expressions are used by certain commands. +They are composed from string literals, variable references, +function calls, and operators. Parentheses can be used anywhere in an +expression to group expressions or increase readability. +.PP +String literals are specified by putting the contents in "double quotes". +.PP +Variables are set using the +.B set +command (see "COMMANDS", below). They are +referenced in an expression by using the form +.IR $varname . +Some variables are set by default for each notice. +All other variables retain their values between notice interpretations, +so that if you set a variable, it retains that value until later +modified. +.PP +Functions are called using a C-like syntax, +\fBfname\fR(\fIexpr1\fR,\fIexpr2\fR), where +.B fname +is the +function name and +.IB expr n +are the arguments. +.PP +Binary operators use infix notation, such as "a == b". +.PP +Some commands use an expression list (exprlist), which is simply a set +of expressions separated by whitespace (e.g. $var1 "lit1" $var2). + +.SS "Default variables" +.PP +The following variables are always available: +.TP 5 +.B 1, ... +Numeric variables are assigned values corresponding to that field in the +notice (the body of each notice is conceptually an array of fields, each +terminated with a null character). If the number is greater than the +number of fields actually in the notice, the value is "". For example, +the standard zwrite messages have two fields: $1 is the signature, and +$2 is the text of the message. +.TP 5 +.B auth +An indication of the authenticity of the notice. ``yes'' means the +notice is authentic, ``no'' means it is not, and ``forged'' means that +the message claimed to be authentic but the verification of the claim +failed. The ``forged'' indication usually appears when a user has +changed his Kerberos tickets with +.IR kinit (1) +but has not run ``zctl sub'' to +register this change with the Zephyr servers. +.TP +.B class +The class of the current notice. +.TP +.B date +The date on which the notice was sent. +.TP +.B default +The default output format for the current notice +.TP +.B error +An error message from the port read/write commands. +.TP +.B fromhost +The full name of the host from which the notice appears to have been +sent. +.I This is not fully reliable, +as the information used to determine this hostname is not guaranteed to +be correct (even for authentic messages). +.TP +.B fullsender +The notice sender's name, including the zephyr realm name. +.TP +.B instance +The instance of the current notice. +.TP +.B kind +The kind of notice. +.TP +.B message +The full text of the message, with nulls converted to newlines. +.TP +.B number_of_fields +The number of fields in the message (a string representation of a +decimal number). +.TP +.B opcode +The opcode of the current notice. +.TP +.B output_driver +The name of the output driver in use. +.TP +.B port +The port from which the notice was sent. +.TP +.B realm +The local zephyr realm. +.TP +.B recipient +The recipient for the current notice. If the notice is a multicast +(sent to several people), the recipient is set to ``*''. +.TP +.B sender +Usually a shortened version of fullsender. If the realm of the sender +is equal to the realm of the recipient, +.I sender +omits the realm name. +.TP +.B time +The time of day at which the notice was sent. +.TP +.B user +The full zephyr name of the user (e.g. marc@ATHENA.MIT.EDU). +.TP +.B version +The current version of +.IR zwgc . +.TP +.B zephyr_version +The protocol version of the notice. +.PP +All of these variables (except for error, output_driver, and version) +are re-set before each notice is processed. + +.SS Functions +.PP +Following is a list of functions available for use in the description +file. +.TP 5 +.BI buffer () +The contents of the current output buffer. +.TP +.BI downcase (expr) +Returns the value of \fIexpr\fR, converted to lower case. +.TP +.BI get (expr) +Returns a line from the port named \fIexpr\fR. If there is no text +waiting on the port (e.g. the program connected to the port has not +printed any output), this function will wait until it can read a line of +text from the port. +.TP +.BI getenv (expr) +Returns the value of the environment variable \fIexpr\fR, or the empty +string if it does not exist. + +.TP +.BI lany "(expr1, expr2), " rany "(expr1, expr2)" +Return a number of characters equal to the length of +.I expr2 +from the beginning +.RB ( lany ) +or end +.RB ( rany ) +of +.I expr1 +(e.g. lany("1234567890","foo") would return "123"). +If +.I expr1 +is a variable reference, the variable +is modified to remove the characters returned. +If +.I expr2 +is longer than +.IR expr1 , +the value of +.I expr1 +is returned (and +.I expr1 +is set to "", if a variable). +.TP +.BI lbreak "(expr1, expr2), " rbreak "(expr1, expr2)" +.I Expr2 +defines a set of characters. The function returns the longest +initial +.RB ( lbreak ) +or final +.RB ( rbreak ) +string from +.I expr1 +composed of characters +.I not +in this set (e.g. lbreak("characters", "tuv") would return "charac"). If +.I expr1 +is a variable reference, the variable +is modified to remove the characters returned. If no characters +in +.IR expr2 " are in " "expr1, " then " expr1 " +is returned (and +.I expr1 +is set to "", if a variable). +.TP +.BI lspan "(expr1, expr2), " rspan "(expr1, expr2)" +These functions are the negation of the +.B break +functions; the returned string consists of characters +.I in +the set defined by +.I expr2 +.TP +.BI protect (expr) +Returns a string which will be evaluated identically to \fIexpr\fR, +but will not affect any surrounding environments. That is, any +characters which could close outside environments are quoted, and any +environments in \fIexpr\fR which are not closed at the end are closed. +.TP +.BI substitute (expr) +Evaluates variable references of the form \fI$variable\fR in expr and +converts $$ to $. +.TP +.BI upcase (expr) +Returns the value of \fIexpr\fR, converted to upper case. +.TP +.BI verbatim (expr) +Returns a string that will be displayed exactly as \fIexpr\fR looks. +Anything which could be mistaken for an environment is quoted. +.TP +.BI stylestrip (expr) +Returns \fIexpr\fR with all environments stripped out. +.TP +.BI zvar (expr) +Returns the value of the zephyr variable \fIexpr\fR, +or the empty +string if it does not exist. [Zephyr variables +can be set and examined with +.IR zctl (1).] + +.SS Operators +.PP +Following is a list of operators which can be used in the description +file to compose expressions: +.TP +.IB expr1 " + " expr2 +String concatenation of +.IR expr1 " and " expr2 +.TP +.IB expr1 " == " expr2 +True if the two expressions are equal, false otherwise. +.TP +.IB expr1 " =~ " expr2 +True if the regular expression pattern +.IR expr2 " matches " expr1. +.TP +.IB expr1 " !~ " expr2 +Negation of "=~". +.TP +.IB expr1 " != " expr2 +Negation of "==" +.TP +\fIexpr1\fB and \fIexpr2\fR, \fIexpr1\fB & \fIexpr2\fR +True if +.IR expr1 " and " expr2 +are both true. +.TP +\fIexpr1\fB or \fIexpr2\fR, \fIexpr1\fB | \fIexpr2\fR +True if either of +.IR expr1 " or " expr2 +are true. +.TP +\fB! \fIexpr1\fR, \fBnot \fIexpr1\fR +The logical negation of +.I expr1. + +.SS Commands +.PP +Following is a list of the commands usable in the description +language: +.TP 5 +.BI appendport " expr1 expr2" +Creates a port called \fIexpr1\fR. All output to the port will be +appended to the file \fIexpr2\fR. There is no input. If the file is +created, its mode is set to read-write, owner only (no access for others). +.TP +.B break +Exits the innermost if, case, or while block. +.TP +\fBcase \fIexpr1\fR [ ((\fBmatch \fIexpr\fR [,\fIexpr ...\fR]) | \fBdefault\fR)\fI commands \fR] ... \fBendcase\fR +Evaluates \fIexpr1\fR. Then, each of the match expressions is +evaluated in order. The first time an expression matches \fIexpr1\fR, +then the body of commands under it is executed, and the rest of the case +statement is skipped. This compare is case-insensitive. default always +matches, so it should always appear as the last set of commands. See +the default description file for an example of use. +.TP +.B clearbuf +Clears the output buffer (see below for details on buffering). +.TP +.BI closeinput " expr" +Closes the file associated with \fIexpr\fR. +.TP +.BI closeoutput " expr" +Sends an EOF (end-of-file) to the process if \fIexpr\fR was a port created by +execport, or closes the file if it was created by outputport or +appendport. +.TP +.BI closeport " expr" +Closes both input and output of \fIexpr\fR as defined above. +.TP +.BI fields " variable1 ..." +sets the list of variables to be equal to the fields in the +notice. If there are more variables than fields, the extra +variables are left empty. +.TP +.BI exec " exprlist" +Executes a program without any input or output. A command named by +\fIexprlist\fR is executed. Each expression is used as an argument to +the program; the first expression names the program (it may be either an +absolute pathname, or a program name; the user's PATH is searched to +find simple program names). +.TP +.BI execport " expr1 exprlist" +Creates a port called \fIexpr1\fR. A command named by \fIexprlist\fR +is executed, as described above for \fBexec\fR. +All output to the port is sent to the standard input +of the process. Reading from the port will return the standard output +of the process. +.TP +.B exit +Completes processing of the current notice. The remainder of the +description file is ignored after execution of this command. +.\" hack because the following line otherwise breaks because it is too long. +.TP +\fBif \fIexpr1 \fBthen \fIcommands1\fR [\fBelseif \fIexpr2 \fBthen \fIcommands2\fR] ... [\fBelse \fIcommandsn\fR] \fBendif\fR +If \fIexpr1\fR evaluates to true, execute \fIcommands1\fI, etc. [A conditional +construct, similar to the constructs in the C shell (csh).] +.TP +.BI inputport " expr1 expr2" +Creates a port called \fIexpr1\fR. All input from the port comes from +the file \fIexpr2\fR. There is no output. +.TP +.B noop +does nothing +.TP +.BI outputport " expr1 expr2" +Creates a port called \fIexpr1\fR. The file \fIexpr2\fR will be +truncated, or created if it does not exist. All output to the port +will be appended to the file \fIexpr2\fR. There is no input. If the file is +created, its mode is set to read-write, owner only (no access for others). +.TP +.BI print " expr1 ..." +adds the values of the expressions to the current output buffer. The +values of the expressions are separated by spaces in the output. +.TP +.B put \fR[\fIexpr \fR[\fIexprlist\fR]] +Sends data to a port. If \fIexpr\fR is provided, then it is used as the +port, otherwise the port used is the +port corresponding to the default output device. +If \fIexprlist\fR is provided, the expressions in the list are sent to +the port, separated by spaces. If it is omitted, then the contents +of the output buffer are sent as the data. +.TP +.BI set " variable " = " expr" +sets +.I variable +equal to +.IR expr . +Variable can later be +referenced by +.IR $variable . +.TP +.BI show " text " endshow +Appends text to the output buffer. This command is special, because +the string does not need to be quoted. Whitespace at the beginning or +end of the lines of text is ignored. The \fIendshow\fR must appear as +the first token on a line (it may only be preceded on that line by whitespace). +Variable substitutions and formatting commands +(but not expressions or functions) are processed in the text. Example: +.nf +show + this is some text + from: $sender +endshow +.fi +.TP +.BI while " expr " do " statements " endwhile +Executes \fIstatements\fR until \fIexpr\fR is false. + +.SH PORTS +.PP +Ports are an abstraction encompassing all I/O forms of which +zwgc is capable. There are pre-existing output ports corresponding to each +of the output devices, and more ports can be created with the +port commands described above. + +.SH OUTPUT +The output is usually collected in the +.I "output buffer" +and saved until a +.I put +command sends the output to an output device (such as an X display or a +terminal). The output buffer is implicitly cleared after each notice is +completely processed. + +.PP +Output devices are implemented as output ports. A message is +displayed in a device-dependent manner when a string is output to the +port corresponding to the output device. Formatting commands are +embedded in the text as @ commands of the form @command(text). +Command names are case-insensitive and consist of alphanumeric +characters and underscores. Valid brackets are () [] {} and <>. +If the command name is empty (such as in +.RB `` @(foo) ''), +then a new +environment with no changes is created (This is useful to temporarily +change some parameter of the output, such as the font). +.PP +The following output devices are supported: +.TP 5 +stdout +Sends the string to standard output exactly as is. +.TP +stderr +Sends the string to standard error exactly as is. +.TP +plain +Sends the string with all formatting environments removed to standard +output. +.TP +tty +Does formatting on the message according to @ commands embedded in the +text. The output, +with appropriate mode-changing sequences, is sent to the standard output. +The appropriate characteristics of the display are taken from +the TERMCAP entry (see +.IR termcap (5)) +for the terminal named by the TERM environment variable. +Supported @ commands are: +.RS 10 +.TP 15 +@roman +Roman (plain) letters (turns off all special modes). +.TP +@b or @bold +Bold letters. If not available, reverse video, else underline. +.TP +@i or @italic +Italic letters (underlining, if available). +.TP +@beep +"bl" termcap entry, else "^G" (beep the terminal); limited to once per +message. +.TP +@l or @left +left aligned +.TP +@c or @center +center aligned +.TP +@r or @right +right aligned +.RE +.IP "" 5 +Other @-commands are silently ignored. +.TP 5 +X +Displays one window per string output to the port. The output is +formatted according to @ commands embedded in the string. Supported +@ commands are: +.RS 10 +.TP 15 +@roman +turns off @italic and @bold +.TP +@b or @bold +turns on boldface +.TP +@i or @italic +turns on italics +.TP +@l or @left +left aligned +.TP +@c or @center +center aligned +.TP +@r or @right +right aligned +.TP +@large +large type size +.TP +@medium +medium type size +.TP +@small +small type size +.TP +@beep +Ring the X bell (limited to once per message) +.TP +@font +sets the current font to the font specified in the contents of the +environment (e.g. @font(fixed)). This will remain in effect for the +rest of the environment (a temporary change can be achieved by enclosing the +font-change in an @(...) environment). If the named font is not +available, the font ``fixed'' is used instead. +.TP +@color +sets the color to the color specified in the contents of the +environment. The color name should appear in the X color name database. +This color will remain in effect for the rest of the environment. If +the named color is not available, the default foreground color is used. +.RE +.IP "" 5 +Any other environment name not corresponding to the above environment +names will set the current ``substyle.'' +.IP +The attributes of a given block of text are determined by any active +environments, evaluated in the context of the current style and +substyle. +.IP +The style is specific to each window. Its name has three dot +(``.'') separated fields, which are by default the values of the class, +instance, and recipient variables, with all dots changed to underscores +(``_'') and all letters converted to lowercase. The style can be +altered by setting the +.I style +variable. Note that it \fBmust always\fR have exactly two ``.'' +characters in it. +.IP +The substyle is determined by @ commands in the message text. +.IP +Zwgc variables which the X output device reads are: +.RS 10 +.TP 15 +default_X_geometry +default geometry for notices, set from resources +.TP +X_geometry +overrides geometry in resource file, if set +.TP +default_X_background +default background color for notices, set from resources +.TP +X_background +overrides bgcolor in resource file, if set +.TP +style +style, as described above +.RE +.IP "" 5 +The expected geometry values are described below. +.IP +The fonts and color for a piece of text are determined by the styles +defined in the X resources file. The following resources relating to +text style are used by zwgc: +.RS 10 +.TP 10 +zwgc.style.\fIstylenames\fR.geometry +geometry for messages of the specified style +.TP +zwgc.style.\fIstylenames\fR.background +background color for messages of the specified style +.TP +zwgc.style.\fIstylenames\fR.substyle.\fIsubstylename\fR.fontfamily +fontfamily name for the specified style and substyle +.TP +zwgc.style.\fIstylenames\fR.substyle.\fIsubstylename\fR.foreground +foreground color for the specified style and substyle +.TP +zwgc.fontfamily.\fIfontfamilyname\fR.\fIsize\fR.\fIface\fR +specifies the fonts for a given fontfamily. \fIsize\fR is one +of small, medium, or large, and \fIface\fR is one of roman, +bold, italic, or bolditalic. +.RE +.IP "" 5 +The best way to get started in customizing X resources for +.I zwgc +is to examine the default application resources and other users' +resources to understand how they specify the default appearance. + +.SH "X RESOURCES" +Other X resources used by +.I zwgc +are listed below. +Entries like +.sp +.nf +.in +5 +zwgc*option: value +Zwgc*option: value +zwgc.option: value +*option: value +\&.option: value +.in -5 +.fi +.sp +will work. +.PP +An entry labeled with zwgc*option in any of the sources takes precedence +over Zwgc*option, which takes precedence over *option entries. +The following sources are searched in order: +.nf +.in +5 +command-line arguments (\-xrm) +contents of file named by XENVIRONMENT environment variable +X server resource database (see \fIxrdb\fR(1)) +application resources file +.in -5 +.fi +.PP +Logical values can be ( Yes On True T ) or ( No Off False nil ). +.TP 15 +\fBOPTION:\fR +\fBMEANING [default]:\fR +.TP +cursorCode +number of a code from the cursorfont (should be an even integer, see +\fI<X11/cursorfont.h>\fR) to use for the windows. +.TP +foreground +Primary foreground color +.TP +Foreground +Secondary foreground color (if foreground not set) [BlackPixel is the default if neither is set] +.TP +background +Primary background color +.TP +Background +Secondary background color (if background not set) [WhitePixel is the +default if neither is set] +.TP +borderColor +Primary border color +.TP +BorderColor +Secondary border color (if borderColor not set) [BlackPixel is the +default if neither is set] +.TP +pointerColor +Primary mouse pointer color [foreground color is the default if not set] +.TP +reverseVideo +(logical) Toggles foreground and background (and border, if it matches +foreground or background). +.TP +ReverseVideo +Secondary toggle, if reverseVideo is not set. [off is the default if +neither is set] +.TP +borderWidth +Primary border width selector +.TP +BorderWidth +Secondary border width selector (if borderWidth is not set) [1 is the +default value if neither is set] +.TP +internalBorder +Primary border between edge and text +.TP +InternalBorder +Secondary selector (if internalBorder not set) [2 is the default value +if neither is set] +.TP +geometry +Primary POSITION (not size) geometry specifier. +The geometry should be of the form "{+|\-}x{+|\-}y", specifying an (x,y) +coordinate for a corner of the window displaying the notice. The +interpretation of positive and negative location specifications follows +the X conventions. A special location of `c' for either x or y +indicates that the window should be centered along that axis. Example: +a geometry of "+0+c" specifies the window should be at the top of the +screen, centered horizontally. +.TP +Geometry +Secondary position specifer. [+0+0 is the default if neither is set.] +.TP +resetSaver +(logical) Primary value to force screen to unsave when a message first +appears. +.TP +ResetSaver +(logical) Secondary value to force screen to unsave. [default True] +.TP +reverseStack +(logical) Primary value to specify that zwgc should attempt to stack +WindowGram windows such that the oldest messages +normally show on top. Some X window managers may silently ignore +.IR zwgc 's +attempts to restack its windows. This option can cause some unusual +interactions with other windows if the user manually restacks either the +other windows or the WindowGram windows. +.TP +ReverseStack +Secondary value to enable reverse stacking. [default False] +.TP +title +(string) Primary window title +.TP +Title +Secondary window title [defaults to the last pathname component +of the program name, usually "zwgc"] +.TP +transient +(logical) Primary value which determines if zephyrgram windows will be +created with the \fBWM_TRANSIENT_FOR\fR property set. If this +resource is true, the property will be set, telling certain +windowmanagers to treat zephyrgram windows specially. For instance, +\fItwm\fR will not put decorations on transient windows, \fImwm\fR +will not let you iconify them, and \fIuwm\fR ignores the resource +entirely. +.TP +Transient +Secondary transient determining value [default False] +.TP +allDesktops +(logical) Primary value which determines if zephyrgram windows should +appear on all desktops, for those window managers which support multiple +desktops (sometimes referred to as workspaces). When this resource is +true (the default), +.I zwgc +sets the \fB_NET_WM_DESKTOP\fR property to 0xFFFFFFFF for each zephyrgram +window, indicating that it should appear on all desktops. +.TP +AllDesktops +Secondary value determining whether zephyrgram windows should appear +on all desktops. +.TP +scrollDelete +(logical) If true, scrolling over a zgram will cause it +to be deleted +.TP +ScrollDelete +Secondary value to enable deletion of a zgram by scrolling over it +[default False] +.TP +enableDelete +(logical) If true, zwgc creates a WM_PROTOCOLS property on all zgrams, with +WM_DELETE_WINDOW as contents. +.TP +EnableDelete +Secondary value to enable WM_DELETE_WINDOW protocol on zgrams [default False] +.TP +minTimeToLive +Primary value which specifies the minimum amount of time (``minimum time to +live'') a WindowGram must be on-screen (in milliseconds) until it can +be destroyed. This feature is useful to avoid accidentally clicking +on new WindowGrams when trying to delete old ones. +.TP +MinTimeToLive +Secondary value of ``minimum time to live.'' +.TP +iconName +(string) Primary icon name +.TP +IconName +Secondary icon name [defaults to the last pathname component +of the program name, usually "zwgc"] +.TP +name +(string) Primary window class name +.TP +name +Secondary window class name [defaults to the last pathname component +of the program name, usually "zwgc"] +.TP +synchronous +(logical) Primary X synchronous mode specifier. On means to put the X +library into synchronous mode. +.TP +Synchronous +Secondary X synchronous mode specifier. [default is `off'] +.PP +The window class is always "Zwgc". +.SH X BUTTONS +.PP +Clicking and releasing any button without the shift key depressed while +the pointer remains inside a WindowGram window will cause it to +disappear. If the pointer leaves the window +while the button is depressed, the window does not disappear; this +provides a way to avoid accidentally losing messages. +.PP +If the control button is held down while clicking on a WindowGram, +then that WindowGram and all windowgrams under the point where the +button is released will be erased. +.PP +.B WARNING: +If you do this with too many WindowGrams under the mouse, it is +possible for your subscriptions to be lost. If \fIzctl retrieve\fR +returns nothing, then issue a \fIzctl load\fR command to re-subscribe +to your default set of subscriptions. If you use znol, then \fIznol +\-q &\fR will restore the subscriptions you need for \fIznol\fR. +.PP +Portions of the text of a message may be selected for "pasting" into other X +applications by using the shift key in cooperation with the pointer +buttons. +Holding the Shift key while depressing Button1 (usually the left button) +will set a marker at the +text under the pointer. Dragging the pointer with Shift-Button1 still +depressed extends the selection from the start point, until the button +is released. The end of the selection may also be +indicated by releasing Button1, holding down the Shift key, and pressing +Button3 (usually the right button) at the desired endpoint of the selection. +The selection will appear with the text and background colors reversed. + +.SH ADDITIONAL X FEATURES +If +.I zwgc +receives a WM_DELETE_WINDOW, it destroys the zephyrgram as if it were +clicked on. +.PP +If a zephyrgram is unmapped, it is removed from the stacking order +used by reverseStack. + +.SH COMMAND LINE +.I zwgc +is normally invoked from +.IR $HOME/.xsession +in the foreground. When it has successfully set your location and +obtained subscriptions, it will put itself into the background (unless +the \-nofork option has been specified). At this point it is safe to +invoke additional zephyr commands, such as +.IR znol (1). +(You can also put these commands in the +.I initprogs +Zephyr variable; the value of this variable is passed as the argument to +the +.IR system (3) +library call during initialization.) +.I zwgc +will exit with an exit +status of 0 if it was able to open the X display successfully or 1 if it +couldn't open the display and the Zephyr variable +.I fallback +was set to ``false''. If +.I fallback +is set to ``true'', +.I zwgc +will fall back to ``ttymode'' (making the tty driver the default output +device) if it can't open the X display. If +.I fallback +is not set and the display cannot be opened, +.I zwgc +prints an explanatory message and exits with a status of 1. +.PP +If the +.I \-ttymode +option is specified, +.I zwgc +will ignore any X display and use the terminal as its primary output +device. This flag overrides any setting of the fallback variable. +.PP +If the +.I \-loc +option is specified, +.I zwgc +will use the specified string as the tty field for the location it +sets. This allows users to potentially specify more useful auxiliary +information than their ttys or display names. +.PP +The +.I \-reenter +option is provided for compatibility with the previous version of +.IR zwgc . +.PP +.I zwgc +will exit cleanly (unset location and cancel subscriptions) on: +.nf + SIGTERM + SIGHUP + XIOError (with a message to stderr) +.fi +SIGHUP is what it expects to get upon logout. Also, the signals +SIGINT, SIGQUIT, and SIGTSTP are ignored because they can be sent +inadvertently, and bizarre side-effects can result. If you want them +to be acted on, then run +.I zwgc -nofork & +.PP +If +.I zwgc +receives a SIGUSR1, it will rewrite the file used to store the +WindowGram port number ($WGFILE or /tmp/wg.\fIuid\fR), in the event +that the file has been lost. +.SH CONTROL MESSAGES +In order to allow some special user controls over the behavior of +.IR zwgc , +certain Zephyr control notices can be sent directly to +.I zwgc +using the +.IR zctl (1) +program. Currently implemented controls are +.TP 15 +wg_read +tell +.I zwgc +to re-read the current description file. +.TP +wg_shutdown +tell +.I zwgc +to cancel all subscriptions and stop acting on incoming notices. +.I zwgc +saves the subscriptions that were in effect at the time of the shutdown +so that it can restore them later if needed. +.TP +wg_startup +tell +.I zwgc +to restart from being shutdown and reinstall the saved subscriptions. +.PP +Other control messages may be implemented in the future. + +.SH EXAMPLES +For an example of a description file, see +.IR @datadir@/zephyr/zwgc.desc . +For an example of X resources, see +.IR @datadir@/zephyr/zwgc_resources . + +.SH BUGS +The X selection code can highlight the wrong portions of messages +containing formatted text placed with the @center() or @right() +directives. +.PP +If you are using Kerberos support and get new tickets (using +``kinit''), you must send a subscription notice to the server (using a +command such as ``zctl load /dev/null'') or all received Zephyr +notices will appear to be unauthentic. (If all received Zephyr +notices appear to be forged, your tickets have probably expired, in +which case you must get new tickets and then run ``zctl load +/dev/null''.) +.SH FILES +.TP 15 +$HOME/.zwgc.desc +Default location of user's description file +.TP +@datadir@/zephyr/zwgc.desc +System-wide description file +.TP +@datadir@/zephyr/zwgc_resources +Default X application resources. +.TP +$ZEPHYR_VARS or $HOME/.zephyr.vars +File containing variable definitions +.TP +$HOME/.zephyr.subs +Supplementary subscription file +.TP +$HOME/.Xresources +Standard X resources file +.TP +$WGFILE or /tmp/wg.\fIuid\fR +File used to store WindowGram port number for other clients +.SH SEE ALSO +csh(1), kinit(1), xrdb(1), zctl(1), zephyr(1), znol(1), X(1), getenv(3), +system(3), termcap(5), zephyrd(8), zhm(8) +.br +Project Athena Technical Plan Section E.4.1, `Zephyr Notification Service' +.SH AUTHORS +.nf +John Carr (MIT/Project Athena) <jfc@athena.mit.edu> +Marc Horowitz (MIT/Project Athena) <marc@athena.mit.edu> +Mark Lillibridge (MIT/Project Athena) <mdl@CS.CMU.EDU> +.fi +.SH RESTRICTIONS +Copyright (c) 1989 by the Massachusetts Institute of Technology. +All Rights Reserved. +.br +.I zephyr(1) +specifies the terms and conditions for redistribution. |