I assume that the Ubuntu thing is based on Alan Swanson's theme hack:
http://www.swanson.ukfsn.org/xss/

I think that's not a bad idea, and would not be opposed to putting
something like that in the xscreensaver distribution, but I have a few
problems with the specifics, which is why I haven't yet.

Alan's code requires you to make a theme by composing 9+ different
pixemaps that are tiled hither and yon, so that things will size
properly around the text.  This makes it very complicated to create new
themes, and also makes the code hairier.

I think that, instead, an approach like the one taken with gdm, grub,
and the MacOS X login box is good enough: use just a single image, and
overlay text on top of it.  Since the person who drew the image is the
same person who picks the fonts, we can rely on them to pick hardcoded
font sizes that work.  That would make it a *lot* easier to create these
themes (no more difficult than making an HTML imagemap), and at that
point, the only extra info that would be needed would be the
colors/positions/fonts of the username, password, and thermometer.

Here's how I'd suggest configuring this:

  - a preference in ~/.xscreensaver like
        lockTheme: foo

  - at startup (after dropping privs) xscreensaver loads the file
    /usr/share/xscreensaver/config/foo.theme

  - foo.theme contains:

        # xscreensaver theme file 1.0

        image:           foo.xpm

        thermo.color:    #FF0000
        thermo.geometry: 12x200+200+10

        user.font:       fixed
        user.color:      #000000
        user.geometry:   100x20+330,115

        pass.font:       fixed
        pass.color:      #000000
        pass.geometry:   100x20+330,150

        clock.font:      fixed
        clock.color:     #000000
        clock.geometry:  100x20+330,180

  - xscreensaver then parses /usr/share/xscreensaver/config/foo.xpm
    and holds onto the bits.

When it's time to lock, we do this:

  - draw the image on the screen, centered.

  - animate the thermometer by drawing the "mercury" color in the
    given rectangle, relative to the origin of the image.

  - render the user, password, and date/time text, clipping to the
    given rectangles.  To erase text (when the user hits backspace)
    just clear to the background xpm.

Comments?

I'm not particularly interested in coding this, but if someone else
does, I'd be happy to include it.

This doesn't solve any of the "accessibility" issues discussed in
http://www.jwz.org/xscreensaver/toolkits.html of course, but it
would make it possible for the lock dialog to match the look of
the desktop.

-- 
Jamie Zawinski      [EMAIL PROTECTED]                  http://www.jwz.org/
                    [EMAIL PROTECTED]      http://www.dnalounge.com/
                                         http://jwz.livejournal.com/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to