=== modified file 'bin/ubiquity-dm' --- bin/ubiquity-dm 2008-03-21 19:09:39 +0000 +++ bin/ubiquity-dm 2008-04-15 12:54:24 +0000 @@ -114,8 +114,32 @@ time.sleep(1) timeout -= 1 + extras = [] if self.frontend == 'gtk_ui' or self.frontend == 'mythbuntu_ui': - if os.access(background, os.R_OK): + # Accessibility infrastructure + gconf_dir = ('xml:readwrite:%s' % + '~root/.gconf') + accessibility = 'false' + if osextras.find_on_path('gconftool-2'): + subp = subprocess.Popen( + ['gconftool-2', '--config-source', gconf_dir, + '--get', '/desktop/gnome/interface/accessibility'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + accessibility = subp.communicate()[0].rstrip('\n') + if accessibility == 'true': + if os.path.exists('/usr/lib/at-spi/at-spi-registryd'): + extras.append(subprocess.Popen(['/usr/lib/at-spi/at-spi-registryd'], + stdin=null, stdout=logfile, stderr=logfile)) + os.environ['GTK_MODULES'] = 'gail:atk-bridge' + + maybe_drop_privileges = [] + if accessibility != 'true': + maybe_drop_privileges['preexec_fn'] = self.drop_privileges + + # Don't show the background image in v1 accessibility profile. It + # is not shown in the GNOME desktop after all. + fp = open('/proc/cmdline', 'r') + if os.access(background, os.R_OK) and not 'access=v1' in fp.readline(): import gtk pixbuf = gtk.gdk.pixbuf_new_from_file(background) root = gtk.gdk.get_default_root_window() @@ -125,53 +149,36 @@ root.set_back_pixmap(pixmap, False) root.clear() gtk.gdk.flush() + fp.close() - extras = [] if self.frontend in ('gtk_ui', 'mythbuntu_ui'): if osextras.find_on_path('metacity'): wm = subprocess.Popen(['metacity', '--sm-disable'], stdin=null, stdout=logfile, stderr=logfile, - preexec_fn=self.drop_privileges) + **maybe_drop_privileges) elif osextras.find_on_path('xfwm4'): wm = subprocess.Popen('xfwm4', stdin=null, stdout=logfile, stderr=logfile, - preexec_fn=self.drop_privileges) + **maybe_drop_privileges) else: raise MissingProgramError, \ "No window manager found (tried metacity, xfwm4)" if os.path.exists('/usr/lib/gnome-settings-daemon/gnome-settings-daemon'): extras.append(subprocess.Popen(['/usr/lib/gnome-settings-daemon/gnome-settings-daemon'], - stdin=null, stdout=logfile, stderr=logfile, preexec_fn=self.drop_privileges)) + stdin=null, stdout=logfile, stderr=logfile, **maybe_drop_privileges)) - # Accessibility - gconf_dir = ('xml:readwrite:%s' % - os.path.expanduser('~%s/.gconf' % - self.username)) - accessibility = 'false' - if osextras.find_on_path('gconftool-2'): - subp = subprocess.Popen( - ['gconftool-2', '--config-source', gconf_dir, - '--get', '/desktop/gnome/interface/accessibility'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - accessibility = subp.communicate()[0].rstrip('\n') + # Accessibility tools if accessibility == 'true': - if os.path.exists('/usr/lib/at-spi/at-spi-registryd'): - extras.append(subprocess.Popen(['/usr/lib/at-spi/at-spi-registryd'], - stdin=null, stdout=logfile, stderr=logfile, - preexec_fn=self.drop_privileges)) - os.environ['GTK_MODULES'] = 'gail:atk-bridge' fp = open('/proc/cmdline', 'r') if 'access=m2' in fp.readline(): if osextras.find_on_path('onboard'): extras.append(subprocess.Popen(['onboard'], - stdin=null, stdout=logfile, stderr=logfile, - preexec_fn=self.drop_privileges)) + stdin=null, stdout=logfile, stderr=logfile)) else: if osextras.find_on_path('orca'): extras.append(subprocess.Popen(['orca', '-n'], - stdin=null, stdout=logfile, stderr=logfile, - preexec_fn=self.drop_privileges)) + stdin=null, stdout=logfile, stderr=logfile)) fp.close() elif self.frontend == 'kde_ui': wm = subprocess.Popen('kwin', stdin=null, stdout=logfile, === modified file 'debian/changelog' --- debian/changelog 2008-04-15 00:49:38 +0000 +++ debian/changelog 2008-04-15 12:55:38 +0000 @@ -1,3 +1,17 @@ +ubiquity (1.8.6) UNRELEASED; urgency=low + + * bin/ubiquity-dm: + - Move code relating to at-spi-registryd to ensure that a11y is loaded + before the background and window manager. (LP: #197887) + - Ensure that orca/onboard are only run if the a11y gconf key is set. + - Don't show any background image if the v1 profile is selected, similar to + what happens in the GNOME desktop with this profile enabled. + - Do not drop privileges when running the window manager, + gnome-settings-daemon, or any of the a11y tools. Privileges are still + dropped when accessibility is not enabled. + + -- Luke Yelavich Tue, 15 Apr 2008 22:01:16 +1000 + ubiquity (1.8.5) hardy; urgency=low [ Evan Dandrea ]