{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 NIL} (don'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, as follows: If the value is {lisp NIL}, idle mode is exited without requesting login. If the value is {lisp LOGIN} (the default), login is required, but anyone is allowed to exit idle mode. This will overwrite the previous user's user name and password each time idle mode is exited. If the value is one of {lisp AUTHENTICATE}, {lisp NS.AUTHENTICATE}, or {lisp GV.AUTHENTICATE}, login is required and the password is checked with the net. Only allow users with accounts to exit idle mode. {lisp NS.AUTHENTICATE} or {lisp GV.AUTHENTICATE} specify that NS or grapevine authentication must be used, respectively. {lisp AUTHENTICATE} indicates that either type of authentication can be tried. If the value is a list, it should be a list of group and/or user names. The value {lisp T} in the list means the user who was using the machine before idle mode was entered. If the value is a list, idle mode will only be exited if: (a) the new user's user name is in this list, (b) the new user is a member of a group whose name is on this list, or (c) if {lisp T} is a member of the list, and the same user logs in with the same password. } {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. } {Label {lisp 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. } {Label {lisp 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. } {End Labeledlist IDLE.PROFILE properties} }} {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 §QÞ«ÇQ¢,΀±/JȘ¼“]%ª+:7 ]Äzº