{Begin SubSec Idle Mode} {Title Idle Mode} {Text {index *PRIMARY* Idling} {index *PRIMARY* Idle mode} The Interlisp-D environment runs on small single-user computers, usually located in users' offices. Often, users leave their computers up and running for days, which can cause several problems. First, the phosphor in {index Video Display Screens}{index Display Screens}{index Screens}the video display screen can be perminantly marked if the same pattern is displayed for a long time (weeks). Second, if the user goes away, leaving an Interlisp-D system running, another person could possibly walk up and use the environment, taking advantage of any passwords that had been entered. To solve these problems, the Interlisp-D environment implements the concept of "idle mode." If no keyboard or mouse action has occurred for a specified time, the Interlisp-D environment automatically enters idle mode. While idle mode is on, the display screen is blacked out, to protect the phosphor. Idle mode also runs a program to display some moving pattern on the black screen, so the screen doesn't appear broken. Usually, idle mode can be exited by pressing any key on the keyboard or mouse. However, the user can optionally specify that idle mode should erase the current password cache when it is entered, and require the next user to supply a password to exit idle mode. Note: If either shift key is pressed while Interlisp-D is in idle mode, the current user name and the amount of time spent idling are displayed in the prompt window (which appears as long as the shift key is held down). Idle mode can also be entered by calling the function {index *PRIMARY* IDLE Fn}{fn IDLE}, or by selecting the {lisp Idle} menu command from the background menu ({PageRef (Background Menu Command) Idle}). The {lisp Idle} menu command has subitems that allow the user to interactively set the idle options (display program, erasing password, etc.) specified by the variable {var IDLE.PROFILE}: {note currently, the submenu items are not documented. Should be done someday} {VarDef {Name IDLE.PROFILE} {Text The value of this variable is a property list ({PageRef Term Property lists}) which controls most aspects of idle mode. The following properties are recognized: {Begin Labeledlist IDLE.PROFILE properties} {Label {lisp TIMEOUT}} {Text Value is a number that determines how long (in minutes) Interlisp-D will wait before automatically entering idle mode. If {lisp NIL}, idle mode will never be entered automatically. Default is 10 minutes. } {Label {lisp FORGET}} {Text If non-{lisp NIL}, the user's password will be erased when idle mode is entered. Default is {lisp T} (erase password). Note: If the password is erased, any programs left running when idle mode is entered will fail if they try doing anything requiring passwords (such as accessing file servers). } {Label {lisp ALLOWED.LOGINS}} {Text Determines who can exit idle mode. If the value is {lisp NIL}, this means that exiting idle doesn't check or require any login. Otherwise, the value of {lisp ALLOWED.LOGINS} is a list, specifying which users are allowed to exit idle mode. This list can include the following: {lisp *} (asterisk): Require login, but let anyone exit idle mode. This will overwrite the previous user's user name and password each time idle mode is exited. {lisp T}: Let the previous user (as determined by {fn USERNAME}) exit idle mode. If {fn USERNAME} is not set, this is equivalent to {lisp *}. A user name: Let this specified user name exit idle mode. A group name: Allow any members of this group to exit idle mode. The default value for {lisp ALLOWED.LOGINS} is {lisp (*)}, i.e., anyone is allowed to exit idle mode. } {Label {lisp AUTHENTICATE}} {Text The value of this property determines what mechanism is used to check passwords. If {lisp NS} (the default), this means use the NS strong authentication protocol. If {lisp GV}, this means use Grapevine authentication (useful only for users of the Xerox "research" internet). If {lisp T}, this means try both {lisp NS} and {lisp GV}. If {lisp NIL}, this means do not try the net at all. The setting {lisp AUTHENTICATE} = {lisp NIL} is only particularly useful if {lisp FORGET} = {lisp NIL} and {lisp ALLOWED.LOGINS} = {lisp (T)}. } {Label {lisp DISPLAYFN}} {Text The value of this property, which should be a function name or lambda expression, is called to display a moving pattern on the screen while in idle mode. This function is called with one argument, a window covering the whole screen. The default is {fn IDLE.BOUNCING.BOX} (below). Note: Any function used as a {lisp DISPLAYFN} should call {fn BLOCK} ({PageRef Fn BLOCK}) frequently, so other programs can run during idle mode. } {Label {lisp SAVEVM}} {Text Value is a number that determines how long (in minutes) after idle mode is entered that {fn SAVEVM} ({PageRef Fn SAVEVM}) will be called to save the virtual memory. If {lisp NIL}, {fn SAVEVM} is never called automatically from idle mode. Default is 10 minutes. } {End Labeledlist IDLE.PROFILE properties} }} {VarDef {Name IDLE.RESETVARS} {Text Value is a list of two-element lists: {lisp ( ({arg VAR{sub 1}} {arg EXP{sub 1}}) ({arg VAR{sub 2}} {arg EXP{sub 2}}) {ellipsis})}. On entering idle mode, each variable {arg VAR{sub N}} is bound to the value of the corresponding expression {arg EXP{sub N}}. When idle mode is exited, each variable {arg VAR{sub N}} is reset to its original value. }} {VarDef {Name IDLE.SUSPEND.PROCESS.NAMES} {Text Value is a list of names. For each name on this list, if a process by that name is found, it will be suspended upon entering idle mode and woken upon exiting idle mode. }} {VarDef {Name IDLE.FUNCTIONS} {Text The value of this variable determines the menu raised by selecting the {lisp Display} subitem of the {lisp Idle} background menu command. It should be in the format used for the {lisp ITEMS} field of a menu ({PageRef (Menu Field) ITEMS}), with the selection of an item returning the appropriate display function. }} {FnDef {Name IDLE.BOUNCING.BOX} {Args WINDOW BOX WAIT} {Text This is the default display function used for idle mode. {arg BOX} is bounced about {arg WINDOW}, with bounces taking place every {arg WAIT} milliseconds. {arg BOX} can be a string, a bitmap, a window (whose image will be bounced about), or a list containing any number of these (which will be cycled through). {arg BOX} defaults to the value of the variable {index *PRIMARY* IDLE.BOUNCING.BOX Var}{var IDLE.BOUNCING.BOX}, which is is initially the string {lisp "Interlisp-D"}. {arg WAIT} defaults to 1000 (one second). }} }{End SubSec Idle Mode} (LIST ((PAGE NIL (FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))&&?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) GACHA QQ,x;Bf+]*:7 5z