Ghee: To me, this seems a partial, or short-term, solution. However, you do not say that it is, so I have some questions.
Currently, SRSS software works on many different distributions (such as Red Hat, Ubuntu, Novell, etc.) and unless we get these sorts of changes upstream, then people using SRSS on non-OpenSolaris distros will still have problems with these undesired autostart programs still being available by default. So I wonder, what technique should be used to ensure that SRSS works properly on all distros? If the solution is that the SRSS install process should disable these autostart files (perhaps by setting Hidden=true in them, by removing them, or moving them aside), then it would seem to make the most sense to use this technique on OpenSolaris as well, rather than treating OpenSolaris as a special case. So, is this a temporary solution until SRSS adds something to their install process to manage this? Or, if we are hoping to get this sort of change upstream, then I wonder why this is coded in a Sun Ray specific manner. It would seem more likely to get upstream if we had some general mechanism that could be used for a wider array of purposes. For example, perhaps the desktop file should have a key that enables or disables the desktop file based on whether an environment variable or X-property is set. Have we discussed this extension with the upstream Free Desktop community to see if some sort of general mechanism could be added to the desktop specification to manage this sort of thing in a way that could go upstream and make Sun Ray work better across all distros? I would think that the xdg at lists.freedesktop.org mailing list would be the right place to discuss this. I would think we should have some upstream discussion before adding such patches to our build, unless this is intended to be a short-term fix until the SRSS software adds any needed code to their install scripts. Brian > This is a fix to provide some level of support for not automatically > starting some applications which are deemed unnecessary when user is > login on a Sun Ray DTU as described in > http://defect.opensolaris.org/bz/show_bug.cgi?id=11467 > > The fix here in gnome-session is to check for the presence and value of > the key > > X-SUNRAY-Disable=true > > and gnome-session checks for the presence of the X-property, > _SUN_SUNRAY_HOME > to indicate that is a DTU and hence not to start up the application > associated with the desktop file. > > ----- > Index: base-specs/gnome-session.spec > =================================================================== > --- base-specs/gnome-session.spec (revision 19421) > +++ base-specs/gnome-session.spec (working copy) > @@ -71,6 +71,8 @@ > Patch18: gnome-session-18-fastreboot.diff > #owner:gheet date:2009-09-10 type:bug doo:11230 > Patch19: gnome-session-19-remove-dup.diff > +#owner:gheet date:2009-09-10 type:branding doo:11467 > +Patch20: gnome-session-20-sunray-profile.diff > > > URL: http://www.gnome.org > @@ -126,6 +128,7 @@ > %patch17 -p1 > #%patch18 -p1 > %patch19 -p1 > +%patch20 -p1 > > %build > %ifos linux > > > $ cat patches/gnome-session-20-sunray-profile.diff > diff -urN -x'*nfs*' > gnome-session-2.27.92/gnome-session/gsm-autostart-app.c > ../SUNWgnome-session-2.27.92.hacked/gnome-session-2.27.92/gnome-session/gsm-autostart-app.c > > > --- gnome-session-2.27.92/gnome-session/gsm-autostart-app.c > 2009-07-01 13:45:30.000000000 +0100 > +++ > ../SUNWgnome-session-2.27.92.hacked/gnome-session-2.27.92/gnome-session/gsm-autostart-app.c > > 2009-09-21 14:41:00.117490099 +0100 > @@ -28,6 +28,7 @@ > > #include <glib.h> > #include <gio/gio.h> > +#include <gdk/gdkx.h> > > #include <gconf/gconf-client.h> > > @@ -99,6 +100,38 @@ > } > > static gboolean > +is_sunray_client (void) > +{ > + Atom sunray_client_id; > + > + sunray_client_id = XInternAtom (GDK_DISPLAY (), > + "_SUN_SUNRAY_HOME", True); > + > + if (sunray_client_id == None) { > + return FALSE; > + } > + else return TRUE; > +} > + > + > +static gboolean > +is_disabled_for_sunray_client (GsmApp *app) > +{ > + GsmAutostartAppPrivate *priv; > + > + priv = GSM_AUTOSTART_APP (app)->priv; > + > + if (egg_desktop_file_has_key (priv->desktop_file, > + "X-SUNRAY-Disable", NULL) && > + egg_desktop_file_get_boolean (priv->desktop_file, > + "X-SUNRAY-Disable", NULL) && > + is_sunray_client ()) > + return TRUE; > + else > + return FALSE; > +} > + > +static gboolean > is_disabled (GsmApp *app) > { > GsmAutostartAppPrivate *priv; > @@ -130,6 +163,10 @@ > return TRUE; > } > > + /* Add additional check for Sun Ray DTU */ > + if (is_disabled_for_sunray_client (app)) > + return TRUE; > + > /* Do not check AutostartCondition - this method is only to > determine > if the app is unconditionally disabled */ > > > >
