From: anderson@macc.wisc.edu (Jess Anderson)
Newsgroups: comp.sys.next.misc
Subject: Loginwindow Dwrites
Date: 1 Jan 93 16:17:13 GMT
Organization: Madison Academic Computing Center, UW-Madison


Here, I hope, is the quasi-definitive story on dwrites that
affect the loginwindow.  I'm indebted to several people,
notably Art Isbell, Kristian Koehntopp, Dan Danz, Louie
Mamakos, John Kheit, Felix Lugo, and Paul Sears, for some of
the information presented here.

Remember that dwrites are not supported by NeXT; they may
change with any subsequent system release.  These I've
checked out using 3.0; some or all may work with earlier
releases, but I can't vouch for most of them.

All these dwrites must be done as root.  You can also run as
root and use DefaultMgr to set them (which is a whole lot
more convenient if you're intending to fiddle with some of
them).

After setting the things you want, restart the WindowServer
by logging out of the current session and typing exit<cr> on
the login panel.

OK, here's what we know (or think we do :-):

dwrite loginwindow DefaultUser <login-name>

   Most new machines have <login_name> set to me.  This
   dwrite logs in user <login_name> automatically.  User
   <login_name> must not have a password set, hence *don't*
   use this in a networked environment!

dwrite loginwindow HostName "<host_name>"
dwrite loginwindow HostName localhost

   These cause your host name to appear on the login panel.
   You need quote marks only if there's a space in the name.
   The first form hard-codes the name into root's defaults
   database.  The second form uses whatever name has been set
   as localhost in NetInfo, which is convenient for
   networked machines.

   The font, size, color, and position of the printed string
   are not accessible (drat!).

dwrite loginwindow ImageFile <path/to/a/suitable.tiff>

   This uses the tiff image pointed to instead of the
   standard one (in
   /usr/lib/NextStep/loginwindow.app/English.lproj/nextlogin.tiff,
   <language>.lproj as appropriate for your main language)
   as the login panel.  Be sure you get the pointer right,
   though, or you'll have to boot single-user to fix it.  In
   practical terms, the image is constrained in various ways
   I won't detail here.

dwrite loginwindow TimeToDim <integer_number>

   No relation to the dim time set by Preferences.  The
   units are odd, I think.  Felix reported them as 1/34
   second.  However, when I changed it to 1020, I got 15
   seconds to dimming, and 680 gives 10 seconds, that I'm
   sure of.  So I think the units are 1/68 second.  Maybe
   Felix just thought it was too damn long!  We all know it
   *seems* longer when you're not having fun waiting.  :-)
   Whatever, the login screen dims to about half after this
   length of time.

dwrite loginwindow MoveWhenIdle YES

   This causes the panel to move around approximately in
   Backspace bouncing-off-the-walls-tiff fashion.  The point
   is to avoid burning the screen phosphors, as a static
   image would tend to do.  The animation is controlled by
   the next couple dwrites.

dwrite loginwindow MovementTimeout <real_number>

   The units are seconds.  The panel starts moving (assuming
   the preceding is set to YES) after this time.  If you set
   it to be less than the TimeToDim time, the movement
   starts before the dimming occurs.  I did not try zero.  I
   can't stand waiting around for things to happen, so I use
   10 seconds for both times.  The default appears to be 5
   minutes.

dwrite loginwindow MovementScale <integer_number>

   No movement occurs if this is set to 1.  But it looks
   like the units might be approximately pixels for each
   change of position (the frequency of which is controlled
   by the next dwrite).  If you put a big number here, say
   200, the image moves in big jumps, but I don't know if
   the 200 is divided up somehow between change in x- and
   y-coordinates.  I wouldn't worry about it much, just set
   it to something you like.  Since my image contains
   readable text, I want it to scroll smoothly around, so I
   use the apparently minimum value, 2.  The default appears
   to be 10.

dwrite loginwindow MovementRate <real_number>

   The units are seconds.  The image jumps by the amount
   above every this many seconds.  The default is 0.0666
   seconds.  Bigger numbers mean slower motion.  Since I
   don't like things being too jumpy or zooming around, I
   set this to 0.1 seconds.  This makes my image ooze at a
   pace befitting an elderly person like me.

The remainder of these I do not use, but am reporting them
for the sake of completeness.

dwrite loginwindow PowerOffDisabled YES

   This makes it a little harder to turn the machine off;
   you have to use the monitor or the minimonitor
   (<right-command>-~) if it's set, rather than the <power>
   key.

dwrite loginwindow LoginHook <path/to/loginhook/executable>
dwrite loginwindow LogoutHook <path/to/logouthook/executable>

   Pointers to the login and logout hooks, if used.  It
   should be pointed out that some of these things
   (login/logout hooks, for example) are maybe more
   logically set where the loginwindow is invoked by the
   WindowServer, namely /etc/ttys.

There are yet others.  Here's the full list (thanks, Art):

   NXGetDefaultValue("loginwindow", "DebugHook") => 0x0
   NXGetDefaultValue("loginwindow", "DryRun") => 0x0
   NXGetDefaultValue("loginwindow", "WindowServerTimeout") => 0x0
   NXRegisterDefaults("loginwindow", 0x16024)
     KeyMapPath: 0x12d97 "~/Library/Keyboards:/LocalLibrary/Keyboards:/NextLibrary/Keyboards"
     Keymap: 0x12de1 "/NextLibrary/Keyboards/USA"
     SwappedKeymap: 0x12e0a "No"
     LoginHook: 0x0
     LogoutHook: 0x0
     HostName: 0x0
     ImageFile: 0x0
     DefaultUser: 0x12e41 "me"
     PowerOffDisabled: 0x0
     TimeToDim: 0x12e69 "2040"
     MoveWhenIdle: 0x12e0a "No"
     MovementTimeout: 0x12e8b "300.0"
     MovementRate: 0x12e9e "0.06666"
     MovementScale: 0x12eb4 "10"

Goodness, this was more work than I planned on.  Enjoy the
new year and long may the pennant of the Black Box wave.

-- 
[Jess Anderson <> Madison Academic Computing Center <> University of Wisconsin]
[Internet: anderson@macc.wisc.edu <-best, UUCP:{}!uwvax!macc.wisc.edu!anderson]
[Room 3130 <> 1210 West Dayton Street / Madison WI 53706 <> Phone 608/262-5888]
[---------> Discrimination, Bigotry, and Hate are not Family Values <---------]
Newsgroups: comp.sys.next.misc