Re: Screensaver Solution Discussion
- From: Jeff Cai <Jeff Cai Sun COM>
 
- To: Brian Cameron <Brian Cameron Sun COM>
 
- Cc: GNOME Accessibility <gnome-accessibility-list gnome org>,	Alan Coopersmith <Alan Coopersmith Sun COM>, gdm-list gnome org,	screensaver-list gnome org
 
- Subject: Re: Screensaver Solution Discussion
 
- Date: Mon, 08 Feb 2010 16:40:55 +0800
 
Hi, I updated the screensaver working process to reflect what I got
recently. Here I didn't detail the pam to make things simplified.
1. After the user A logs in, a gdm's gnome-screensaver (gdm user
session)
process will start. This gnome-screensaver will share the same DISPLAY with 
A's gnome-session.
Note: For every user's session, there will be a gnome-screensaver process running for it.
2. When A's gnome-session tells the session is idle, gnome-screensaver
will start a full-screen window, lock the whole DISPLAY.
Note: gnome-screensaver of the 'gdm' user needs to know the DBUS address of 
user A's gnome-session. Since user A's gnome-session is created by gdm (currently it is
gdm-session-worker), we can find a way to get the DBUS address. And user A's DBus 
session should be allowed to communicate with the gdm process.
3. If a user hits the keys or move the mouse, an unlock dialog will pop up on the 
same display. 
Note: Here we can use the same GUI as that of gdm-simple-greeter, and the same PAM 
backend as that of gdm-session-worker. But we need to set the user name before calling
pam_authenticate for gdm-session-worker.
gnome-session-worker:
Currently gdm-session-worker supports several working states:
SETUP_COMPLETE->AUTHENTICATED->AUTHORIZED->ACCREDITED->SESSION_OPENED->SESSION_STARTED
For gnome-screensaver, we need to add some new states in the state diagram:
SCREENSAVER_SETUP_COMPLETE->SCREENSAVER_AUTHENTICATED->SCREENSAVER_AUTHORIZED.
gdm-simple-greeter:
3a) If VT with GUI support is enabled, gnome-screensaver will ask gdm-simple-greeter to show 
the unlock dialog and login panel on another DISPLAY, and ask VT manager to switch to that 
DISPLAY.
gnome-session of GDM keeps running with a different DISPLAY as the user A's gnome-session. This
DISPLAY is reserved for the system, and the user can not switch to it manually.
Then the user inputs the correct password, GDM tells gnome-screensaver to destroy the window
and release the keyboard and the mouse. Do the VT switching to the user's DISPLAY.
3b) If VT is not enabled, gnome-screensaver will ask gdm-simple-greeter to show the unlock
dialog and login panel on the same DISPLAY. 
For the support of a11y, 
  1) GDM will just launch the gdm-simple-greeter, and not run a new gnome-session. Some relative
     processes should also be started: gnome-setting-daemon, at-spi-registrd, dbus-daemon.
  2) If the gnome-session of gdm can be coexisted with the A's gnome-session, things become simple.
     I'll investigate more about whether two gnome-sessions can share the same DISPLAY or not.
Then the user inputs the correct password, GDM tells gnome-screensaver to destroy the window
and release the keyboard and the mouse.
Jeff
On Mon, 2010-01-25 at 11:02 -0600, Brian Cameron wrote:
> Jeff:
> 
> >> In the case of 3b, GDM will just launch the gdm-simple-greeter, and not
> >> run a new gnome-session.
> > Could we still run a gnome-session for the user 'gdm'? If the gdm's
> > gnome-session is still running, things look simpler.
> 
> It may be possible.  I worry that having two gnome-session processes
> trying to manage the same display might have issues.  But some 
> investigation would be needed to determine exactly what issues exist.
> It is probably possible to make things work this way, but I imagine
> that there would be some work involved to allow multiple gnome-sessions
> to coexist nicely.
> 
> If we find that this approach does not work well, it might make more
> sense to make GDM just launch the login GUI program without gnome-
> session, as I suggested before.
> 
> >>   If it is possible for GDM to run the login
> >> panel, then this should be run to give access to the a11y features (note
> >> that this may require that gnome-settings-daemon be run for the "gdm"
> >> user).
> >
> > I'm not sure what should be done to make GDM GUI show on the same
> > DISPLAY.
> 
> GDM has access to the Xauth keys for each display.  This is all that is
> needed to display a GUI on a display, even if it is running as a
> different user.
> 
> > Since gnome-screensaver has grabbed the keyboard and mouse, it
> > should allows GDM GUI to grab them again. Also GDM GUI needs to cover
> > the gnome-screensaver window. I do not know whether it is easy to
> > implement something like this.
> 
> Is it necessary for gnome-screensaver to grab the keyboard and mouse,
> or can gnome-screensaver make a request for GDM to actually do the
> grabs?  It might be necessary for some handshaking between gnome-
> screensaver and GDM to make this work, including how grabs are managed.
> 
> This is probably not a trivial thing to implement, but I would say it is
> probably easier than doing the work to make gnome-screensaver support
> a11y as well as GDM currently does.
> 
> Brian
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]