Merge lp:~jamesodhunt/ubuntu/natty/gdm/single-user-mode-fix into lp:ubuntu/natty/gdm

Proposed by James Hunt
Status: Merged
Merge reported by: Sebastien Bacher
Merged at revision: not available
Proposed branch: lp:~jamesodhunt/ubuntu/natty/gdm/single-user-mode-fix
Merge into: lp:ubuntu/natty/gdm
Diff against target: 14657 lines (+14358/-0) (has conflicts)
59 files modified
.bzr-builddeb/default.conf (+2/-0)
debian/%gconf-tree.xml (+21/-0)
debian/60xdg_path-on-session (+22/-0)
debian/changelog (+1492/-0)
debian/compat (+1/-0)
debian/control (+67/-0)
debian/copyright (+54/-0)
debian/gdm-autologin.pam (+11/-0)
debian/gdm.8.pod (+47/-0)
debian/gdm.config (+41/-0)
debian/gdm.init (+119/-0)
debian/gdm.install (+1/-0)
debian/gdm.pam (+14/-0)
debian/gdm.postinst (+62/-0)
debian/gdm.postrm (+27/-0)
debian/gdm.preinst (+49/-0)
debian/gdm.prerm (+64/-0)
debian/gdm.templates (+123/-0)
debian/gdm.upstart (+49/-0)
debian/onboard.desktop (+11/-0)
debian/patches/02_x_server_location.patch (+21/-0)
debian/patches/04_fix_external_program_directories.patch (+54/-0)
debian/patches/05_initial_server_on_vt7.patch (+38/-0)
debian/patches/06_run_xsession.d.patch (+28/-0)
debian/patches/08_use_polkit_for_settings.patch (+337/-0)
debian/patches/09_gdmserver_gconf_settings.patch (+469/-0)
debian/patches/09_gdmsetup.patch (+4549/-0)
debian/patches/10_xsplash.patch (+51/-0)
debian/patches/11_crash_for_apport.patch (+67/-0)
debian/patches/14_guest_session.patch (+346/-0)
debian/patches/15_default_session.patch (+387/-0)
debian/patches/16_gdmserver_user_manager.patch (+2934/-0)
debian/patches/17_use_timed_login_after_autologin.patch (+17/-0)
debian/patches/19_no_greeter_for_autologin.patch (+26/-0)
debian/patches/20_upstart.patch (+23/-0)
debian/patches/24_respect_system_minuid.patch (+343/-0)
debian/patches/25_update_gconf_directories.patch (+13/-0)
debian/patches/26_no_debug.patch (+22/-0)
debian/patches/27_save_root_window.patch (+131/-0)
debian/patches/28_plymouth_transition.patch (+270/-0)
debian/patches/29_switch_user.patch (+638/-0)
debian/patches/30_don_t_save_failsafe_session.patch (+341/-0)
debian/patches/32-hide-mouse-cursor.patch (+31/-0)
debian/patches/33-multi-keyboard-layouts.patch (+89/-0)
debian/patches/34_disable_a11y_default.patch (+21/-0)
debian/patches/35_langlist_and_lsmess_dmrc_fields.patch (+234/-0)
debian/patches/36_language_environment_settings.patch (+149/-0)
debian/patches/37_disable_resize_grip.patch (+13/-0)
debian/patches/38_user_chooser_focus.patch (+47/-0)
debian/patches/39_grep_path.patch (+13/-0)
debian/patches/40_one_lang_option_per_translation.patch (+181/-0)
debian/patches/41_passwordless_login_crash.patch (+72/-0)
debian/patches/90_git_name_escaping.patch (+35/-0)
debian/patches/series (+32/-0)
debian/rules (+43/-0)
debian/source/format (+1/-0)
debian/watch (+2/-0)
debian/xsession.desktop (+4/-0)
debian/xterm.desktop (+9/-0)
Conflict adding file debian.  Moved existing file to debian.moved.
To merge this branch: bzr merge lp:~jamesodhunt/ubuntu/natty/gdm/single-user-mode-fix
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+52860@code.launchpad.net

Description of the change

The "if this doesn't work, just shoot me now" push:

* debian/gdm.upstart: gdm will now restart as expected if a user
  runs "telinit 2" from single-user mode (LP: #436936).

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added directory '.bzr-builddeb'
2=== added file '.bzr-builddeb/default.conf'
3--- .bzr-builddeb/default.conf 1970-01-01 00:00:00 +0000
4+++ .bzr-builddeb/default.conf 2011-03-10 14:39:08 +0000
5@@ -0,0 +1,2 @@
6+[BUILDDEB]
7+merge = True
8
9=== added directory 'debian'
10=== renamed directory 'debian' => 'debian.moved'
11=== added file 'debian/%gconf-tree.xml'
12--- debian/%gconf-tree.xml 1970-01-01 00:00:00 +0000
13+++ debian/%gconf-tree.xml 2011-03-10 14:39:08 +0000
14@@ -0,0 +1,21 @@
15+<?xml version="1.0"?>
16+<gconf>
17+ <dir name="desktop">
18+ <dir name="gnome">
19+ <dir name="interface">
20+ <entry name="icon_theme" mtime="1255598514" type="string">
21+ <stringvalue>LoginIcons</stringvalue>
22+ </entry>
23+ </dir>
24+ </dir>
25+ </dir>
26+ <dir name="apps">
27+ <dir name="gnome-power-manager">
28+ <dir name="ui">
29+ <entry name="icon_policy" mtime="1255598662" type="string">
30+ <stringvalue>never</stringvalue>
31+ </entry>
32+ </dir>
33+ </dir>
34+ </dir>
35+</gconf>
36
37=== added file 'debian/60xdg_path-on-session'
38--- debian/60xdg_path-on-session 1970-01-01 00:00:00 +0000
39+++ debian/60xdg_path-on-session 2011-03-10 14:39:08 +0000
40@@ -0,0 +1,22 @@
41+# This file is sourced by Xsession(5), not executed.
42+# Add additionnal xdg paths depending on selected desktop session
43+
44+DEFAULT_XDG_CONFIG_DIRS='/etc/xdg'
45+DEFAULT_XDG_DATA_DIRS='/usr/local/share/:/usr/share/'
46+if [ -n "$GDMSESSION" ]; then
47+ # readd default if was empty
48+ if [ -z "$XDG_CONFIG_DIRS" ]; then
49+ XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"
50+ fi
51+ XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$GDMSESSION":"$XDG_CONFIG_DIRS"
52+ export XDG_CONFIG_DIRS
53+ # gnome is already added if gnome-session installed
54+ if [ "$GDMSESSION" != "gnome" ]; then
55+ if [ -z "$XDG_DATA_DIRS" ]; then
56+ XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS"
57+ fi
58+ XDG_DATA_DIRS=/usr/share/"$GDMSESSION":"$XDG_DATA_DIRS"
59+ export XDG_DATA_DIRS
60+ fi
61+fi
62+
63
64=== added file 'debian/changelog'
65--- debian/changelog 1970-01-01 00:00:00 +0000
66+++ debian/changelog 2011-03-10 14:39:08 +0000
67@@ -0,0 +1,1492 @@
68+gdm (2.32.0-0ubuntu10) UNRELEASED; urgency=low
69+
70+ [ Martin Pitt ]
71+ * Add 41_passwordless_login_crash.patch: Fix crash when hitting the login
72+ button while doing passwordless login. (LP: #724205)
73+
74+ [ James Hunt ]
75+ * debian/gdm.upstart: gdm will now restart as expected if a user
76+ runs "telinit 2" from single-user mode (LP: #436936).
77+
78+ -- James Hunt <james.hunt@ubuntu.com> Tue, 08 Mar 2011 17:58:30 +0000
79+
80+gdm (2.32.0-0ubuntu9) natty; urgency=low
81+
82+ * debian/patches/36_language_environment_settings.patch:
83+ - Set LC_MESSAGES explicitly only if the value does not equal
84+ $LANG, to prevent that side effects when connecting to other
85+ computers via ssh appear unnecessarily.
86+
87+ -- Gunnar Hjalmarsson <ubuntu@gunnar.cc> Wed, 23 Feb 2011 20:53:50 +0100
88+
89+gdm (2.32.0-0ubuntu8) natty; urgency=low
90+
91+ [ Gunnar Hjalmarsson ]
92+ * debian/patches/36_language_environment_settings.patch:
93+ - Use locale names with '.UTF-8' instead of '.utf8' when setting
94+ the LC_MESSAGES environment variable (LP: #666565).
95+ * debian/patches/40_one_lang_option_per_translation.patch:
96+ - Modification of /usr/share/gdm/language-options so an absent
97+ translation directory won't cause it to exit.
98+
99+ -- Evan Dandrea <ev@ubuntu.com> Mon, 14 Feb 2011 15:53:38 +0000
100+
101+gdm (2.32.0-0ubuntu7) natty; urgency=low
102+
103+ [ Gunnar Hjalmarsson ]
104+ * debian/patches/40_one_lang_option_per_translation.patch:
105+ - The option list in the language chooser changed so the items
106+ represent available translations instead of locales
107+ (LP: #693337).
108+ - setlocale() validation removed (not applicable).
109+ - Show locale variants in the list of language options
110+ (LP: #408474).
111+ * debian/patches/36_language_environment_settings.patch:
112+ - Skip the encoding part in the dmrc "Language" value. It's not
113+ a locale name, so let's not give the impression it is.
114+ - Take main country code into account when generating
115+ a locale name for LC_MESSAGES.
116+
117+ [ Kees Cook ]
118+ * Restore 24_respect_system_minuid.patch: upstream does not handle
119+ reading login.defs yet (LP: #708911).
120+
121+ -- Gunnar Hjalmarsson <ubuntu@gunnar.cc> Thu, 10 Feb 2011 10:07:31 +0100
122+
123+gdm (2.32.0-0ubuntu6) natty; urgency=low
124+
125+ * Backported some changes from Debian
126+ * debian/patches/39_grep_path.patch:
127+ - Don’t hardcode grep to a wrong location.
128+ * debian/gdm.postrm:
129+ - correctly deal with uninstalls while gdm is still running (lp: #613150)
130+
131+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 25 Jan 2011 16:53:46 +0100
132+
133+gdm (2.32.0-0ubuntu5) natty; urgency=low
134+
135+ [ Martin Pitt ]
136+ * Add 38_user_chooser_focus.patch: Correctly give focus to the user chooser
137+ on startup. Patch by Vincent Untz, merci! (LP: #687440)
138+
139+ [ James Hunt ]
140+ * debian/gdm.upstart: Remove starting-dm event (which was missed from a
141+ previous commit) and add login-session-start and desktop-session-start
142+ events (LP: #706842).
143+
144+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 24 Jan 2011 17:14:25 +0100
145+
146+gdm (2.32.0-0ubuntu4) natty; urgency=low
147+
148+ * debian/control.in:
149+ - updated the gtk requirement to the version having the new api required
150+
151+ [ Gunnar Hjalmarsson ]
152+ * debian/patches/36_language_environment_settings.patch:
153+ - grep() calls replaced for efficiency purposes
154+ - ability to deal with @variants in locale names
155+ - attempt to set the language fields in /var/cache/gdm/$USER/dmrc at
156+ first login after upgrade from GDM version pre 2.32.0-0ubuntu2
157+
158+ [ Cody Russell ]
159+ * debian/patches/37_disable_resize_grip.patch:
160+ - disable the grips on the gdm screen (lp: #704018)
161+
162+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 19 Jan 2011 11:33:33 +0100
163+
164+gdm (2.32.0-0ubuntu2) natty; urgency=low
165+
166+ [ Martin Pitt ]
167+ * 06_run_xsession.d.patch: Don't trip over directories and other non-files
168+ in Xsession.d/. (LP: #654578)
169+
170+ [ Gunnar Hjalmarsson ]
171+ * debian/patches/35_langlist_and_lsmess_dmrc_fields.patch:
172+ - Addition of the fields "Langlist" and "LCMess", which make ~/.dmrc
173+ and /var/cache/gdm/$USER/dmrc able to store the user language
174+ environment (LP: #553162).
175+ * debian/patches/36_language_environment_settings.patch:
176+ - Changes to Xsession's way to use GDM_LANG. It now sets LANGUAGE
177+ and LC_MESSAGES, which makes it possible to keep the user language
178+ for message translation apart from other locale settings
179+ (LP: #553162).
180+
181+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 14 Dec 2010 22:24:40 +0100
182+
183+gdm (2.32.0-0ubuntu1) natty; urgency=low
184+
185+ * New upstream release.
186+ * Drop 01_upower.patch, upstream now.
187+ * Drop 03_hide_system_users.patch, fixed upstream in a different way.
188+ * Drop 07_correct_distribution_version.patch, upstream now.
189+ * Drop 12_fusa_name_change.patch, obsolete now as we don't install the gdm
190+ one any more.
191+ * Drop 18_locale_env_vars.patch, upstream now.
192+ * Drop 24_system_uid.patch; upstream handles this more dynamically now, and
193+ we really want to show users with an ID of < 1000 (but >= 500).
194+ * Drop 90_git_name_escaping.patch, upstream now.
195+ * Update all other patches to cleanly apply to new upstream version.
196+ * 08_use_polkit_for_settings.patch: Add missing library linking to
197+ libgdmcommon, to fix building with --as-needed.
198+
199+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Dec 2010 15:55:34 +0100
200+
201+gdm (2.30.5-0ubuntu5) natty; urgency=low
202+
203+ * debian/control:
204+ - don't b-d on libglade2-dev, it uses gtkbuilder
205+ * debian/rules:
206+ - don't install the user switching applet, upstream is going to stop
207+ shipping it in gdm for GNOME3 and Ubuntu already use indicator-session.
208+
209+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 09 Nov 2010 13:34:57 +0100
210+
211+gdm (2.30.5-0ubuntu4) maverick; urgency=low
212+
213+ * debian/gdm.upstart: Do not already fire on a framebuffer device. When a
214+ real DRM driver gets loaded later on, X will be started too early to catch
215+ it. This should go a long way towards fixing LP: #615549
216+
217+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 13 Sep 2010 15:23:24 +0200
218+
219+gdm (2.30.5-0ubuntu3) maverick; urgency=low
220+
221+ * debian/patches/90_git_name_escaping.patch:
222+ - git change to correctly escape usernames (lp: #633050)
223+
224+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 08 Sep 2010 17:37:51 +0200
225+
226+gdm (2.30.5-0ubuntu2) maverick; urgency=low
227+
228+ * debian/patches/09_gdmsetup.patch:
229+ - don't list the policykit file in the configure, it's not required but
230+ breaks the escaping and the strings listed in the authentification dialog
231+ (lp: #617044)
232+
233+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 17 Aug 2010 21:47:44 +0200
234+
235+gdm (2.30.5-0ubuntu1) maverick; urgency=low
236+
237+ * New upstream version:
238+ - Retry getpw* calls if they return EINTR
239+ - #619588, don't show markup tags in UI (lp: #603097)
240+ - #626564, fix intermittent failure to load user list (lp: #614810)
241+
242+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 11 Aug 2010 21:50:35 +0200
243+
244+gdm (2.30.4-0ubuntu1) maverick; urgency=low
245+
246+ [ Sebastien Bacher ]
247+ * New upstream versions:
248+ - Translation fixes
249+ - Many performance improvements for the greeter
250+ - Various robustness fixes
251+ - Fix XDMCP
252+ - Fix switch user menu item detection
253+ - Remove obsolete restart and stop scripts
254+ - Fixed #618834, GdmProductSlave does not handle OpenSession
255+ - Fixed #342397, gdm doesn't respond to XDMCP querys if local X server fails
256+ to start
257+ - Fixed #544730, XDMCP broadcast discovery not working on BSD w/ ipv6
258+ enabled (lp: #393835)
259+ - Fixed #589536, gdm-simple-slave crashed with signal 5 in
260+ g_return_if_fail_warning (lp: #403441)
261+ - Fixed #592183, GDM entry field loses focus after dialogs are presented
262+ - Fixed #594857, Warning when type 'gdm --version' in terminal in new GDM
263+ - Fixed #599683, xdmcp Queries from Older software
264+ - Fixed #610179, GDM patch for accounts dialogue
265+ - Fixed #616722, Xdmcp linking problem
266+ - Fixed #616730, user-switch-applet build failure: missing -I for dbus-glib
267+ - Fixed #617665, Panel doesn't shrink after disabling "high contrast"
268+ - Fixed #619588, User's Real names should be escaped against XML markup
269+ (lp: #499690, #585128)
270+ - Fixed #620430, memory leaks in gdm
271+ - Fixed #620893, bottom panel is overlapping at smaller sizes
272+ - Fixed #620908, gdm user switch applet goes nuts while
273+ changing password file
274+ - Fixed #621045, Improve startup performance of the greeter
275+ - Fixed #621131, User switch applet performance issues
276+ - Fixed #621661, Make slaves more robust against crashes
277+ - Fixed #622069, greeter doesn't work when there's no local user
278+ - Fixed #622337, shows shutdown buttons when connecting over xdmcp
279+ - Fixed #622430, keyboard layout handling wonky
280+ - Fixed #622431, cancel button not shown during timed login
281+ - Fixed #601458, Add presence items to status menu and port to JS
282+ * Refresh distribution changes
283+ * debian/patches/07_correct_distribution_version.patch:
284+ - use upstream version
285+ * debian/patches/13_cache_ck_history.patch:
286+ - dropped since the new upstream version solves this issue differently
287+ * debian/patches/23_login_window_hint.patch:
288+ - dropped, the change is in the new version
289+
290+ [ Kees Cook ]
291+ * debian/patches/24_system_uid.patch: - updated for upstream code changes
292+
293+ [ Robert Ancell ]
294+ * debian/xsession.desktop:
295+ * debian/xterm.desktop:
296+ - Use clearer session names (LP: #599336)
297+ * debian/patches/09_gdmsetup.patch:
298+ - Remove session comment from combo box to make it fit better
299+
300+ [ Martin Pitt ]
301+ * 09_gdmsetup.patch: Only show "Play Login Sound" checkbox if we have
302+ /usr/share/gdm/autostart/LoginWindow/libcanberra-ready-sound.desktop.
303+ * Add 01_upower.patch: Port to UPower.
304+ * debian/control: libdevkit-power-gobject-dev → libupower-glib-dev.
305+
306+ -- Kees Cook <kees@ubuntu.com> Fri, 06 Aug 2010 13:02:51 +0200
307+
308+gdm (2.30.2.is.2.30.2-0ubuntu3) maverick; urgency=low
309+
310+ * debian/patches/95_git_name_escaping.patch:
311+ - updated to the current git version to fix escaping issues in the
312+ language selector list due the previous change
313+ (lp: #603097)
314+
315+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 21 Jul 2010 11:43:52 +0200
316+
317+gdm (2.30.2.is.2.30.2-0ubuntu2) maverick; urgency=low
318+
319+ * debian/60xdg_path-on-session:
320+ - add XDG_CONFIG_DIRS depending on session so that we can show/hide desktop
321+ file depending on session
322+
323+ -- Didier Roche <didrocks@ubuntu.com> Tue, 20 Jul 2010 17:37:11 +0200
324+
325+gdm (2.30.2.is.2.30.2-0ubuntu1) maverick; urgency=low
326+
327+ * Tweak the version number to be newer than the lucid-updates one
328+ * debian/patches/94_git_null_free_crash.patch:
329+ - git change to fix a crasher (lp: #403441)
330+ * debian/patches/95_git_name_escaping.patch:
331+ - git change to fix escaping issues leading to crashes (lp: #499690),
332+ or to having incorrect usernames displayed (lp: #585128)
333+
334+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 06 Jul 2010 13:36:48 +0200
335+
336+gdm (2.30.2-0ubuntu5) maverick; urgency=low
337+
338+ * debian/patches/09_gdmserver_gconf_settings.patch:
339+ * debian/patches/09_gdmsetup.patch:
340+ - Fix face browser toggle
341+
342+ -- Robert Ancell <robert.ancell@canonical.com> Mon, 28 Jun 2010 10:03:02 +1000
343+
344+gdm (2.30.2-0ubuntu4) maverick; urgency=low
345+
346+ * debian/control:
347+ - Build-depend on gnome-common for autotools
348+ * debian/rules:
349+ - Run autotools on build
350+ * debian/source:
351+ - Use source format 3.0
352+ * debian/patches/*:
353+ - Use quilt and fix patch headers
354+ * debian/patches/09_gdmsetup.patch:
355+ - Add checkbutton for enabling face browser (LP: #445123)
356+ * debian/patches/99_autoreconf.patch:
357+ - Removed, autotools now run from debian/rules
358+
359+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 22 Jun 2010 13:26:45 +1000
360+
361+gdm (2.30.2-0ubuntu3) maverick; urgency=low
362+
363+ * debian/patches/30_don_t_save_failsafe_session.patch: (LP: #542345)
364+ - return FALSE instead of exiting on .desktop file without a comment
365+
366+ -- Didier Roche <didrocks@ubuntu.com> Thu, 10 Jun 2010 10:32:58 +0200
367+
368+gdm (2.30.2-0ubuntu2) lucid-proposed; urgency=low
369+
370+ * debian/patches/16_gdmserver_user_manager.patch:
371+ * debian/patches/24_system_uid.patch:
372+ - Update to match IncludeAll behaviour in greeter (LP: #471542)
373+
374+ -- Robert Ancell <robert.ancell@canonical.com> Wed, 09 Jun 2010 11:09:11 +1000
375+
376+gdm (2.30.2-0ubuntu1) lucid-proposed; urgency=low
377+
378+ * New upstream bug fix release:
379+ - Accessibility is now enabled by default for the GDM login screen.
380+ - When the face browser is disabled, the PAM conversation is started
381+ immediately, so users do not need to click a button to start entering
382+ the username and password. (GNOME #591082)
383+ - Add label-for and labelled-by a11y relations to the entry field in the
384+ login GUI. This makes the login GUI more accessible when using AT programs.
385+ (GNOME #613434).
386+ - Fixed bugs that were causing XDMCP to not show the greeter again after
387+ logout. (GNOME #606724).
388+ - The default XDMCP PingIntervalSeconds was increased from 15 to
389+ 60 seconds.
390+ - The WINDOWPATH environment variable is now set for the user session.
391+ (GNOME #609272)
392+ - Ensure Init script is called when using Automatic Login. (GNOME #614488)
393+ - Fix race condition with Timed Login. (GNOME #614062)
394+ - Drop xhost localuser:gdm and localuser:root when the user session starts.
395+ (GNOME #605350)
396+ - Removed the icon monitor from the GDM login GUI since it was not functional
397+ and was causing problems with automounting user's $HOME directories.
398+ (GNOME #609321, LP: #518810)
399+ - Do not mark "%x" for translation. (GNOME #613306)
400+ - Remove duplicated strings for translation. (GNOME #609179)
401+ - Minor doc corrections.
402+ - Translation updates.
403+ * 04_fix_external_program_directories.patch, 99_autoreconf.patch: Refresh
404+ for new upstream version.
405+ * Add 34_disable_a11y_default.patch: Revert upstream change between 2.30.0
406+ and 2.30.1 to enable a11y by default. This wasn't tested and isn't
407+ appropriate for an SRU.
408+ * 06_run_xsession.d.patch: Export $USERXSESSION, $USERXSESSIONRC, and
409+ $ALTUSERXSESSION, so that running the "custom"/"default" sessions actually
410+ works. Without those, /etc/X11/Xsession.d/50x11-common_determine-startup
411+ decides to run the system default session even if we have the
412+ "allow-user-xsession" option. This is a prerequisite for fixing LP#398300.
413+ Also update the patch tag header to comply to DEP-3.
414+ * Add debian/xsession.desktop: Add a new session type "~/.xsession" which
415+ will run ~/.xsession (Exec=default will be interpreted by the
416+ 20x11-common_process-args and 50x11-common_determine-startup Xsession.d
417+ scripts). If the admin sets "allow-user-xsession" to False, this will
418+ launch the system default session instead. (LP: #398300)
419+
420+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 28 Apr 2010 14:41:12 +0200
421+
422+gdm (2.30.0-0ubuntu5) lucid; urgency=low
423+
424+ * debian/patches/14_guest_session.patch:
425+ - enable switching to guest session corresponsding to current one (ie UNE if
426+ you are in UNE session and gnome if you are in GNOME session)
427+ (LP: #562908)
428+
429+ -- Didier Roche <didrocks@ubuntu.com> Wed, 14 Apr 2010 16:36:26 +0200
430+
431+gdm (2.30.0-0ubuntu4) lucid; urgency=low
432+
433+ * debian/patches/29_switch_user.patch:
434+ - Deselect user when cancelling user switch (LP: #532531)
435+
436+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 13 Apr 2010 15:43:37 +0800
437+
438+gdm (2.30.0-0ubuntu3) lucid; urgency=low
439+
440+ [ Didier Roche ]
441+ * debian/patches/09_gdmsetup.patch:
442+ - do not list users who have an encrypted home directory for autologin
443+ candidate (still some corner case, see code comment). (LP: #353446)
444+
445+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 13 Apr 2010 15:43:27 +0800
446+
447+gdm (2.30.0-0ubuntu2) lucid; urgency=low
448+
449+ * 33-multi-keyboard-layouts.patch: Work around strange libxklavier behaviour
450+ (which returns NULL for empty variants, but does not accept NULL when
451+ setting a configuration). This fixes broken variant setting in some cases.
452+ (LP: #550887)
453+
454+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 30 Mar 2010 22:29:15 +0200
455+
456+gdm (2.30.0-0ubuntu1) lucid; urgency=low
457+
458+ * New upstream release:
459+ - Translation improvements
460+ * debian/patches/09_gdmsetup.patch:
461+ - Disable broken face browser checkbutton
462+
463+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 30 Mar 2010 12:56:00 +1100
464+
465+gdm (2.29.92-0ubuntu9) lucid; urgency=low
466+
467+ * 33-multi-keyboard-layouts.patch: Fix duplication of layouts by treating ""
468+ and NULL variants equally. (LP: #548778)
469+
470+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 29 Mar 2010 10:07:58 +0200
471+
472+gdm (2.29.92-0ubuntu8) lucid; urgency=low
473+
474+ * debian/patches/09_gdmsetup.patch:
475+ - reintegrate the needed bits lost in the merge in 2.29.92-0ubuntu5:
476+ select default session is back! (LP: #548417)
477+
478+ -- Didier Roche <didrocks@ubuntu.com> Fri, 26 Mar 2010 10:19:17 +0100
479+
480+gdm (2.29.92-0ubuntu7) lucid; urgency=low
481+
482+ * debian/patches/09_gdmserver_gconf_settings.patch:
483+ * debian/patches/09_gdmsetup.patch:
484+ - Add face browser checkbutton to gdmsetup (LP: #445123)
485+
486+ -- Robert Ancell <robert.ancell@canonical.com> Fri, 26 Mar 2010 15:45:20 +1100
487+
488+gdm (2.29.92-0ubuntu6) lucid; urgency=low
489+
490+ * debian/patches/31-unify-power-strings.patch:
491+ - drop the change for lucid it requires documentation update
492+ which has not been taken into account there, similar changes are done on
493+ the other desktop components too now
494+
495+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 25 Mar 2010 11:26:02 +0100
496+
497+gdm (2.29.92-0ubuntu5) lucid; urgency=low
498+
499+ [ Robert Ancell ]
500+ * debian/patches/09_gdmsetup.patch:
501+ * debian/patches/15_gdmsetup_default_session.patch:
502+ * debian/patches/09_gdmserver_sound_settings.patch:
503+ - Add startup sound configuration
504+ - Merged 15_gdmsetup_default_session.patch into 09_gdmsetup.patch
505+
506+ [ Didier Roche ]
507+ * debian/patches/09_gdmserver_sound_settings.patch: (LP: #437429)
508+ * debian/patches/15_gdmsetup_default_session.patch:
509+ - add gconftool calls to get/set sound parameter
510+ - fix some wrong signal call and missing callback function
511+ * debian/patches/25_update_gconf_directories.patch:
512+ - readd $HOME/.gconf between default and mandatory to take changes
513+ into account
514+
515+ -- Didier Roche <didrocks@ubuntu.com> Wed, 24 Mar 2010 11:11:33 +0100
516+
517+gdm (2.29.92-0ubuntu4) lucid; urgency=low
518+
519+ * 31-unify-power-strings.patch: Drop "Shut Down" → "Switch Off" hunk, still
520+ under debate.
521+ * Add 33-multi-keyboard-layouts.patch: Keep multiple system keyboard layouts
522+ for session. (LP: #460328)
523+
524+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 23 Mar 2010 17:08:55 +0100
525+
526+gdm (2.29.92-0ubuntu3) lucid; urgency=low
527+
528+ * debian/gdm.upstart:
529+ - Now we've inhibited rc2 from stopping plymouth once gdm has been
530+ started, this script is responsible for stopping plymouth itself,
531+ even if it doesn't start gdm. Add a "plymouth quit || true" in
532+ the "text" path.
533+
534+ -- Scott James Remnant <scott@ubuntu.com> Wed, 17 Mar 2010 00:53:30 +0000
535+
536+gdm (2.29.92-0ubuntu2) lucid; urgency=low
537+
538+ * debian/patches/28_plymouth_transition.patch:
539+ - After deactivating plymouth, call plymouth --has-active-vt and if not,
540+ just tell it to quit and don't continue with the transition -- start
541+ gdm on a new vt
542+
543+ This solves the issue of just re-using the active VT when Plymouth
544+ hasn't even shown a splash screen yet; resulting in X running on VT1
545+ alongside the X server.
546+
547+ -- Scott James Remnant <scott@ubuntu.com> Thu, 11 Mar 2010 20:06:42 +0000
548+
549+gdm (2.29.92-0ubuntu1) lucid; urgency=low
550+
551+ * New upsteam release:
552+ - The greeter is not torn down until pam_open_session finishes since
553+ some PAM modules can ask questions up until this point.
554+ - The daemon now kills the session process rather than the entire process
555+ group, fixing bug #607738. The corresponding gnome-session bug #607658
556+ is released with 2.29.92 so this works properly.
557+ * debian/patches/04_fix_external_program_directories.patch: adapt to
558+ last upstream version
559+ * debian/patches/99_autoreconf.patch: refreshed
560+ * debian/control.in:
561+ - bump Standards-Version to latest
562+
563+ -- Didier Roche <didrocks@ubuntu.com> Tue, 09 Mar 2010 12:45:39 +0100
564+
565+gdm (2.29.6-0ubuntu7) lucid; urgency=low
566+
567+ * Add debian/patches/32-hide-mouse-cursor.patch: Hide the mouse cursor on
568+ startup and when starting an user session.
569+
570+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 05 Mar 2010 11:03:55 +0100
571+
572+gdm (2.29.6-0ubuntu6) lucid; urgency=low
573+
574+ * debian/%gconf-tree.xml:
575+ - updated artwork to the lucid one
576+
577+ [ Chris Coulson ]
578+ * debian/patches/31-unify-power-strings.patch:
579+ - Patch from Ted Gould to change "Shut down" and "Suspend" to
580+ "Switch off" and "Sleep" (LP: #531493)
581+
582+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 04 Mar 2010 23:36:10 +0100
583+
584+gdm (2.29.6-0ubuntu5) lucid; urgency=low
585+
586+ * Add 18_locale_env_vars.patch: gdm does not have a facility to specify a
587+ list of languages for $LANGUAGE, so do not break $LANGUAGE by forcing it
588+ to $LANG (they have a completely different syntax, and different
589+ meanings). Also, if the system sets $LC_ALL (which distros should never
590+ ever do), we should not clobber this. $LINGUAS is not a runtime
591+ environment variable for locales, so just drop this. (LP: #407300)
592+
593+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 04 Mar 2010 12:55:59 +0100
594+
595+gdm (2.29.6-0ubuntu4) lucid; urgency=low
596+
597+ * 05_initial_server_on_vt7.patch: Move the actual stamp file creation into
598+ gdm_server_spawn(), so that the stamp file is also created when not using
599+ gdm_server_start(). This happens when booting with Plymouth, since
600+ 28_plymouth_transition.patch introduces an alternative startup function.
601+ (LP: #511134)
602+
603+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 03 Mar 2010 12:35:29 +0100
604+
605+gdm (2.29.6-0ubuntu3) lucid; urgency=low
606+
607+ * debian/patches/15_gdmsetup_default_session.patch: fix bug asking
608+ polkit write access on load and erasing autologin
609+
610+ -- Didier Roche <didrocks@ubuntu.com> Thu, 11 Feb 2010 12:24:10 +0100
611+
612+gdm (2.29.6-0ubuntu2) lucid; urgency=low
613+
614+ * debian/rules: Enable --with-incomplete-locales, so that the language
615+ picker also displays languages which do not have any .mo file in
616+ /usr/share/locale/ (since our langpacks ship the .mo files in a different
617+ path). Thanks to Robert Collins for debugging this!
618+
619+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 05 Feb 2010 15:04:53 -0800
620+
621+gdm (2.29.6-0ubuntu1) lucid; urgency=low
622+
623+ * New upstream version:
624+ - Various build fixes
625+ - Crash fix in layout detection
626+ - Crash fix in session list detection
627+ - Remove timeout for interacting with PAM
628+ - Fix compile with --no-as-needed
629+ - Add debug message if system lacks fonts
630+ - Disable switch user item if user switching won't work
631+ * debian/patches/01_disable_hal.patch,
632+ debian/patches/00git-add-missing-locale-alias.patch,
633+ debian/patches/00git-keyboard-layout-crash.patch,
634+ debian/patches/18_do_not_double_free_exec_variable.patch:
635+ - those changes are in the new version
636+ * debian/patches/15_default_session.patch,
637+ debian/patches/99_autoreconf.patch:
638+ - new version update
639+
640+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 28 Jan 2010 17:10:32 +0100
641+
642+gdm (2.29.5-0ubuntu6) lucid; urgency=low
643+
644+ * add debian/patches/30_don_t_save_failsafe_session.patch:
645+ Don't set failsafe session as default when user select it (LP: #509182)
646+
647+ -- Didier Roche <didrocks@ubuntu.com> Thu, 21 Jan 2010 20:45:19 +0100
648+
649+gdm (2.29.5-0ubuntu5) lucid; urgency=low
650+
651+ * debian/patches/15_gdmsetup_default_session.patch:
652+ Provide default session choice in gdmsetup
653+ * debian/patches/99_autoreconf.patch: refresh to take into account
654+ new files in previous file
655+
656+ -- Didier Roche <didrocks@ubuntu.com> Wed, 20 Jan 2010 15:04:11 +0100
657+
658+gdm (2.29.5-0ubuntu4) lucid; urgency=low
659+
660+ * debian/patches/18_do_not_double_free_exec_variable.patch:
661+ - don't free the exec variable twice, thank Colin Gibbs for the detailled
662+ bug description (lp: #505051)
663+ * debian/patches/20_upstart.patch:
664+ - specify the initctl path to avoid command not found errors which break
665+ user switching and guest session
666+
667+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 19 Jan 2010 23:42:30 +0100
668+
669+gdm (2.29.5-0ubuntu3) lucid; urgency=low
670+
671+ * debian/patches/15_default_session.patch: use gpointer* instead of
672+ GObject* (as a parameter can be a GType)
673+
674+ -- Didier Roche <didrocks@ubuntu.com> Tue, 19 Jan 2010 10:57:14 +0100
675+
676+gdm (2.29.5-0ubuntu2) lucid; urgency=low
677+
678+ * Add 00git-keyboard-layout-crash.patch: Fixes the crash that happens at the
679+ second call of get_system_default_layout(). (LP: #505972)
680+
681+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 18 Jan 2010 16:28:48 +0100
682+
683+gdm (2.29.5-0ubuntu1) lucid; urgency=low
684+
685+ [ Robert Ancell ]
686+ * debian/patches/29_switch_user.patch:
687+ - Add bug link
688+
689+ [ Milan Bouchet-Valat ]
690+ * debian/gdm.pam: allow members or the 'nopasswdlogin' group to log in
691+ without password. This integrates with the gnome-system-tools, which
692+ include such an option in 2.27.
693+ * debian/gdm.postinst: create this group on install, which enables that
694+ feature in the g-s-t.
695+
696+ [ Martin Pitt ]
697+ * New upstream release:
698+ - XDMCP fixes on Solaris
699+ - run PostLogin script as user instead of gdm
700+ - Fix ellipses usage on User Switch Applet
701+ - Add ability to customize system language list
702+ - Solaris NULL printf fixes
703+ - Convert from glade to gtkbuilder
704+ - Detect default keyboard layout better
705+ - Ignore executable subfolders of xinitrc.d
706+ - Don't reveal valid usernames when authenticating
707+ * Drop 01_default_keyboard_layout.patch, accepted upstream.
708+ * Refresh patches for new upstream version.
709+ * Add 01_disable_hal.patch: Don't attempt to connect to Hal. The hal-using
710+ code is already commented out, and this just needlessly triggers Hal
711+ startup during boot.
712+ * Add 00git-add-missing-locale-alias.patch: Add missing locale.alias file
713+ (taken from upstream git head).
714+
715+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 14 Jan 2010 17:07:34 +0100
716+
717+gdm (2.29.4-0ubuntu3) lucid; urgency=low
718+
719+ * debian/patches/29_switch_user.patch:
720+ - Add SwitchToUser() method call
721+
722+ -- Robert Ancell <robert.ancell@canonical.com> Thu, 14 Jan 2010 13:11:06 +1100
723+
724+gdm (2.29.4-0ubuntu2) lucid; urgency=low
725+
726+ * debian/gdm.upstart: Wait for D-Bus to be ready, to avoid failure if gdm
727+ starts too early. Thanks to Robert Hooker! (LP: #502838)
728+
729+ -- Martin Pitt <martin.pitt@ubuntu.com> Sat, 09 Jan 2010 17:34:43 +0100
730+
731+gdm (2.29.4-0ubuntu1) lucid; urgency=low
732+
733+ * New upstream version:
734+ - Remove deprecated function g_mapped_file_free
735+ - Fix option widgets to work better with orca
736+ - make --with-custom-conf work
737+ - Don't hard code path to policykit agent
738+ - Don't backup xkb configuration before login
739+ * debian/control:
740+ - updated libglib requirement
741+ * debian/patches/08_use_polkit_for_settings.patch:
742+ - new version update
743+ * debian/patches/99_autoreconf.patch:
744+ - new version update
745+
746+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 07 Jan 2010 17:05:51 +0100
747+
748+gdm (2.29.1-0ubuntu9) lucid; urgency=low
749+
750+ * debian/patches/24_system_uid.patch: use configured system UID
751+ minimum instead of hard-coded value (LP: #459199).
752+
753+ -- Kees Cook <kees@ubuntu.com> Wed, 16 Dec 2009 10:35:09 -0800
754+
755+gdm (2.29.1-0ubuntu8) lucid; urgency=low
756+
757+ * debian/gdm.upstart:
758+ - Revert Mario's changes which prevent gdm from starting for most people,
759+ and introduce expensive dkms integration code in the non-dkms case!
760+
761+ -- Scott James Remnant <scott@ubuntu.com> Tue, 15 Dec 2009 09:37:02 +0000
762+
763+gdm (2.29.1-0ubuntu7) lucid; urgency=low
764+
765+ * debian/60xdg_path-on-session:
766+ - Add xdg path depending on GDM selected session. This enables starting
767+ desired applications depending on session
768+ * debian/gdm.install: install previous file in /etc/X11/Xsession.d
769+
770+ -- Didier Roche <didrocks@ubuntu.com> Mon, 14 Dec 2009 21:20:06 +0100
771+
772+gdm (2.29.1-0ubuntu6) lucid; urgency=low
773+
774+ * debian/gdm.upstart (LP: #453365)
775+ - Start on built-successful signal for fglrx or nvidia modules.
776+ - If dkms is available on the system, use it to check the status
777+ of fglrx or nvidia.
778+ - If they're in the DKMS tree but not built, exit the gdm task
779+ and wait for the build-successful signal. If they don't build,
780+ the failsafe-x task will receive a build-failed and can start
781+ BulletProof-X.
782+
783+ -- Mario Limonciello <mario_limonciello@dell.com> Mon, 14 Dec 2009 14:09:14 -0600
784+
785+gdm (2.29.1-0ubuntu5) lucid; urgency=low
786+
787+ * debian/patches/15_default_session.patch: (LP: #403291)
788+ - Choose default session in /etc/gdm/custom.conf using DBus. Removed
789+ default.desktop hack.
790+ - Add /usr/lib/gdm-set-default-session to properly define default session:
791+ use DBus when gdm daemon is on and filing the file when it's off. This
792+ script can be called in postinst file of ubuntu derivatives.
793+ * debian/60xdg_path-on-session:
794+ - Add xdg path depending on GDM selected session. This enables starting
795+ desired applications depending on session
796+ * debian/patches/99_autoreconf.patch: refreshed
797+
798+ -- Didier Roche <didrocks@ubuntu.com> Sat, 12 Dec 2009 22:55:06 +0100
799+
800+gdm (2.29.1-0ubuntu4) lucid; urgency=low
801+
802+ * debian/patches/05_initial_server_on_vt7.patch:
803+ - Fix a bug in the patch: the return value of open() can be zero on
804+ success, because zero is a valid file descriptor! This probably
805+ never broke in the real world, because we always have standard
806+ input set to something, but it's worth fixing bugs when you find
807+ them ;-)
808+ * debian/patches/27_save_root_window.patch:
809+ - Patch taken from the plymouth-integration branch of Upstream GIT
810+ to save the root window pixmap in a property for other things to
811+ pick up.
812+ * debian/patches/28_plymouth_transition.patch:
813+ - Patch taken from the plymouth-integration branch of Upstream GIT,
814+ makes gdm check whether plymouth is running on startup; if it is,
815+ actively arranges for a smooth transition. Also handles getting
816+ plymouth out of the way in case the X server doesn't start.
817+ * debian/gdm.upstart:
818+ - Remove "starting-dm" event; the above patch means we handle
819+ stopping the splash screen gracefully by ourselves so don't need
820+ it.
821+ - Only look at /etc/X11/default-display-manager and /proc/cmdline
822+ when started automatically; always allow "start gdm" to work.
823+ - Use the PRIMARY_DEVICE_FOR_DISPLAY tag on the framebuffer or
824+ drm card devices to start the X server, still falling back on
825+ end of udev probing (we may have neither). Drop the tty
826+ part, we need both more and less than this. LP: #491162.
827+
828+ -- Scott James Remnant <scott@ubuntu.com> Fri, 11 Dec 2009 06:00:05 +0000
829+
830+gdm (2.29.1-0ubuntu3) lucid; urgency=low
831+
832+ * debian/gdm.upstart: Do not fail with exit status !=0 on startup
833+ when disabled. LP: #491483
834+
835+ -- Philip Muskovac <yofel@gmx.net> Mon, 07 Dec 2009 19:33:05 +0100
836+
837+gdm (2.29.1-0ubuntu2) lucid; urgency=low
838+
839+ * debian/patches/26_no_debug.patch:
840+ - Turn off debugging for unstable versions by default. Logging to
841+ syslog will slow down loading
842+
843+ -- Chris Coulson <chrisccoulson@ubuntu.com> Fri, 04 Dec 2009 17:38:24 +0000
844+
845+gdm (2.29.1-0ubuntu1) lucid; urgency=low
846+
847+ * New upstream release:
848+ [ 2.29.1 ]
849+ - A new desktop extension is now supported in GDM session desktop files
850+ (normally found in /usr/share/xsessions). Setting the key to true as follows:
851+ X-GDM_BypassXsession=true
852+ will cause the Xsession script to not be used to launch the session. This
853+ can be useful if you want to create a "failsafe" xterm session. The Xsession
854+ script sources the user's $HOME/.profile, for example, so setting this key
855+ to true will ensure that any errors in the user's $HOME/.profile will not
856+ cause the session to fail to start.
857+ - Fix makedist problem.
858+ [ 2.29.0 ]
859+ - Now GDM supports Include, Exclude, and IncludeAll configuration options to
860+ allow the ability to configure which users are displayed in the FaceBrowser.
861+ - Now GDM supports better debugging. Users can set the debug/Enable
862+ configuration option to turn on GDM debugging.
863+ - The directory where GDM screenshots are placed has been moved to its own
864+ directory: /var/run/gdm/greeter/GDM-Screenshot.png. The screenshot directory
865+ can now be specified at build time via the --with-screenshot-dir configure
866+ argument.
867+ - Many simple-greeter Face Browser usability improvements.
868+ - The simple-greeter Face Browser tree view search entry is now obscured to
869+ help prevent accidental display of passwords.
870+ - Shutdown and reboot functions are moved to a menu in the simple-greeter panel
871+ instead of being presented as buttons. The shutdown menu is better
872+ positioned on multi-monitor displays.
873+ - The simple-greeter panel notification area has been improved and now honors
874+ the GConf setting for /apps/notification_area_applet/prefs/padding.
875+ - The entry field in the simple-greeter now has accessibility labels so it will
876+ work better with accessibility programs.
877+ - The clock in the simple-greeter panel no longer shows the date, making the
878+ screen look a little cleaner. The date is moved to the clock tooltip so it
879+ is still available.
880+ - The simple-greeter now uses gethostname instead of g_get_host_name since
881+ is more reliable when the hostname changes at runtime.
882+ - The user switch applet now honors disable_lock_screen. The option to lock
883+ screen is now not shown if disable_lock_screen is set.
884+ - The /var/run/gdm directory is better locked down.
885+ - GDM no longer crashes on bad UTF-8 in the /etc/passwd file.
886+ - When the worker dies, the auth-failed signal is no longer sent. This
887+ prevents a crash that happens when switching run-levels when the login screen
888+ is displayed.
889+ - Ensure that the length of sockaddr structure is set to the correct length for
890+ IPv4 or IPv6. This makes GDM work better on some operating systems that are
891+ picky about the length being exact.
892+ - String and documentation improvements.
893+ * debian/patches/17_add_failsafe.patch:
894+ * debian/patches/22_shutdown_menu.patch:
895+ - Applied upstream
896+
897+ -- Robert Ancell <robert.ancell@canonical.com> Fri, 04 Dec 2009 16:19:35 +1100
898+
899+gdm (2.28.1-0ubuntu5) lucid; urgency=low
900+
901+ * debian/patches/10_xsplash.patch:
902+ - don't use xsplash by default for now, it uses lot of cpu and costs one
903+ second to the current login, that will be reactivated later in lucid
904+
905+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 03 Dec 2009 11:29:59 +0100
906+
907+gdm (2.28.1-0ubuntu4) lucid; urgency=low
908+
909+ * debian/gdm.upstart: Do not wait for hal, since we don't need it any more
910+ (and doesn't even need to be installed any more with a dehalified X.org).
911+
912+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 27 Nov 2009 22:16:26 +0100
913+
914+gdm (2.28.1-0ubuntu3) lucid; urgency=low
915+
916+ * Replace 01_default_keyboard_layout_hal.patch with
917+ 01_default_keyboard_layout.patch which uses libxklavier instead of hal to
918+ read the default keyboard layout from X.org. Drop hal build and binary
919+ dependencies. (LP: #418981)
920+ * 16_gdmserver_user_manager.patch, 99_autoreconf.patch: Updated.
921+
922+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 27 Nov 2009 09:25:31 +0100
923+
924+gdm (2.28.1-0ubuntu2) karmic-proposed; urgency=low
925+
926+ * Don't respawn gdm on failure; this lets us capture X failures instead and
927+ trigger the bulletproof X handler here. LP: #441638.
928+ * re-export any XORGCONFIG value passed to the upstart job, needed to
929+ complete integration with bulletproof X. LP: #474806.
930+
931+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 04 Nov 2009 18:15:37 -0800
932+
933+gdm (2.28.1-0ubuntu1) karmic; urgency=low
934+
935+ * New upstream release (LP: #455944)
936+ - GDM will now avoid calling XAddHosts for remote connections.
937+ - Now GDM uses DeviceKit-power instead of gnome-power-manager for Suspend
938+ support.
939+ - Now the at-spi-registryd-wrapper.desktop GDM autostart file will run
940+ at-spi-registryd directly instead of calling at-spi-registryd-wrapper.
941+ - Fix to the visibility check for the "Other" button which corrects some
942+ situations where the button would not appear when it was supposed to.
943+ - Now the GDM daemon will make the /var/log/gdm directory if it does not
944+ exist.
945+ - Fixes to avoid autologin failure when a NULL username is passed in.
946+ - Restore CTYPE when canonicalizing codesets.
947+ - Several fixes to avoid warnings.
948+ * debian/patches/18_create_log_dir_when_required.patch:
949+ * debian/patches/21_dkpower.patch:
950+ - Applied upstream
951+ * debian/patches/22_shutdown_menu.patch:
952+ - Updated
953+
954+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 20 Oct 2009 11:52:57 +1100
955+
956+gdm (2.28.0-0ubuntu19) karmic; urgency=low
957+
958+ * debian/%gconf-tree.xml, debian/gdm.postinst, debian/rules:
959+ - don't use gconftool to register the default gconf keys but rather
960+ install a xml files with the values, that will avoid different issues
961+ due to the su call or the gconf server not being running
962+ (lp: #441028, #441167)
963+ - set the gnome-power-manager icon key to never since that's not useful
964+ on the login screen and the design team recommended to not have it there
965+ * debian/gdm.postinst:
966+ - workaround chown breaking due to the .gvfs fuse directory (lp: #438561)
967+ * debian/patches/25_update_gconf_directories.patch:
968+ - define a new directory which is used for the default gconf values
969+
970+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 15 Oct 2009 12:34:11 +0200
971+
972+gdm (2.28.0-0ubuntu18) karmic; urgency=low
973+
974+ * debian/patches/14_guest_session.patch:
975+ - Switch to existing guest session if already open (LP: #450965)
976+ * debian/patches/24_system_uid.patch:
977+ * debian/patches/16_gdmserver_user_manager.patch:
978+ - Fix more cases of users with UID < 1000
979+
980+ -- Robert Ancell <robert.ancell@canonical.com> Thu, 15 Oct 2009 01:07:18 +0200
981+
982+gdm (2.28.0-0ubuntu17) karmic; urgency=low
983+
984+ [ Robert Ancell ]
985+ * debian/patches/22_shutdown_menu.patch:
986+ - Mark power menu options as translatable (LP: #450707)
987+
988+ [ Scott James Remnant ]
989+ * debian/gdm.upstart:
990+ - Wait for tty7 to be ready, and either a framebuffer or the end
991+ of coldplugging.
992+
993+ -- Scott James Remnant <scott@ubuntu.com> Wed, 14 Oct 2009 05:08:47 +0100
994+
995+gdm (2.28.0-0ubuntu15) karmic; urgency=low
996+
997+ * debian/patches/23_login_window_hint.patch:
998+ - Don't put a type hint on the login window as this causes it not to get
999+ focus (LP: #447049)
1000+ * debian/patches/16_gdmserver_user_manager.patch:
1001+ - Don't show users with UID < 1000 (LP: #427462)
1002+
1003+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 13 Oct 2009 15:56:41 +1100
1004+
1005+gdm (2.28.0-0ubuntu14) karmic; urgency=low
1006+
1007+ * debian/gdm.postinst: Set icon theme to HumanLoginIcons. Also, call su just
1008+ once with all four gconftool commands instead of several times.
1009+
1010+ -- Martin Pitt <martin.pitt@ubuntu.com> Wed, 07 Oct 2009 15:39:17 +0200
1011+
1012+gdm (2.28.0-0ubuntu13) karmic; urgency=low
1013+
1014+ * debian/gdm{,-autologin}.pam: correctly handle SELinux transitions,
1015+ thanks to Caleb Case (LP: #430205).
1016+
1017+ -- Kees Cook <kees@ubuntu.com> Tue, 06 Oct 2009 16:49:25 -0700
1018+
1019+gdm (2.28.0-0ubuntu12) karmic; urgency=low
1020+
1021+ * debian/gdm.upstart: Also stop when entering single-user mode.
1022+ LP: #437281.
1023+
1024+ -- Scott James Remnant <scott@ubuntu.com> Sat, 03 Oct 2009 08:09:44 +0100
1025+
1026+gdm (2.28.0-0ubuntu11) karmic; urgency=low
1027+
1028+ * 99_autoreconf.patch: Drop removal of *.rej junk, it was fixed in
1029+ 04_fix_external_program_directories.patch.
1030+
1031+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 02 Oct 2009 12:22:28 +0200
1032+
1033+gdm (2.28.0-0ubuntu10) karmic; urgency=low
1034+
1035+ * 01_default_keyboard_layout_hal.patch: Read keyboard variant from hal, too.
1036+ (LP: #421212)
1037+ * debian/gdm.postinst: Set HumanLogin theme for metacity, too. Thanks to
1038+ Devid Antonio Filoni! (LP: #439546)
1039+ * 04_fix_external_program_directories.patch: Remove *.rej junk.
1040+ * 04_fix_external_program_directories.patch: Fix path to polkit-gnome
1041+ authentication agent. (Caught as a side issue in LP #401822)
1042+ * debian/rules: Drop polkit-gnome agent autostart file. It has never worked
1043+ anyway due to wrong path (see previous change), and we do not currently
1044+ need it.
1045+
1046+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 01 Oct 2009 23:53:54 +0200
1047+
1048+gdm (2.28.0-0ubuntu9) karmic; urgency=low
1049+
1050+ * debian/gdm.postinst:
1051+ - use the correct key to set the gtk theme
1052+
1053+ [ Robert Ancell ]
1054+ * debian/patches/22_shutdown_menu.patch:
1055+ - Fix spacing on shutdown menu (LP: #437691)
1056+ * debian/patches/*.patch:
1057+ - Update patch headers
1058+ * debian/patches/19_no_greeter_for_autologin.patch:
1059+ - Fix bug that caused the GDM greeter to be displayed briefly when
1060+ automatically logging in (LP: #435801)
1061+
1062+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 30 Sep 2009 15:21:09 +0200
1063+
1064+gdm (2.28.0-0ubuntu8) karmic; urgency=low
1065+
1066+ * debian/gdm.upstart:
1067+ - Emit a starting-dm event just before starting gdm itself, for the
1068+ benefit of usplash.
1069+
1070+ -- Colin Watson <cjwatson@ubuntu.com> Tue, 29 Sep 2009 00:18:49 +0100
1071+
1072+gdm (2.28.0-0ubuntu7) karmic; urgency=low
1073+
1074+ * debian/gdm.postinst:
1075+ - set a different theme for the gdm login screen (lp: #436817)
1076+
1077+ -- Sebastien Bacher <seb128@ubuntu.com> Mon, 28 Sep 2009 23:25:40 +0200
1078+
1079+gdm (2.28.0-0ubuntu6) karmic; urgency=low
1080+
1081+ * debian/patches/16_gdmserver_user_manager.patch:
1082+ - change by Cody Russell to Fix user-added and user-removed signal emissions
1083+ to emit the UID instead of the user pointer. (lp :#436195)
1084+
1085+ -- Sebastien Bacher <seb128@ubuntu.com> Fri, 25 Sep 2009 00:58:39 +0200
1086+
1087+gdm (2.28.0-0ubuntu5) karmic; urgency=low
1088+
1089+ * debian/patches/17_add_failsafe.patch:
1090+ - adds code to support failsafe sessions again (from gnome #594833)
1091+
1092+ -- Travis Watkins <amaranth@ubuntu.com> Thu, 24 Sep 2009 10:30:08 +0200
1093+
1094+gdm (2.28.0-0ubuntu4) karmic; urgency=low
1095+
1096+ * Move shutdown buttons from under user list to lower right corner of screen
1097+ (LP: #434338)
1098+
1099+ -- Robert Ancell <robert.ancell@canonical.com> Wed, 23 Sep 2009 15:44:15 +1000
1100+
1101+gdm (2.28.0-0ubuntu3) karmic; urgency=low
1102+
1103+ * debian/patches/21_dkpower.patch:
1104+ - Port the greeter to DK-Power so that the suspend/hibernate buttons
1105+ appear again, where supported (LP: #420063).
1106+ * debian/control:
1107+ - Add build-depend on libdevkit-power-gobject-dev (>= 008)
1108+ * Refreshed 99_autoreconf.patch
1109+
1110+ -- Chris Coulson <chrisccoulson@ubuntu.com> Tue, 22 Sep 2009 22:04:11 +0100
1111+
1112+gdm (2.28.0-0ubuntu2) karmic; urgency=low
1113+
1114+ * debian/patches/08_use_polkit_for_settings.patch:
1115+ - set translatable strings and list the file to translate (lp: #425798)
1116+ * debian/patches/09_gdmsetup.patch,
1117+ debian/patches/99_autoreconf.patch:
1118+ - initialize the translations so the gdmsetup interface is translated
1119+ (lp: #434102)
1120+ * debian/patches/17_use_timed_login_after_autologin.patch:
1121+ - revert upstream change to not use timed login after autologin session
1122+ (lp: #396489)
1123+ * debian/patches/18_create_log_dir_when_required.patch:
1124+ - create the log directory when required (lp: #405227)
1125+ * debian/gdm.config, debian/gdm.templates:
1126+ - restore debconf files which have been dropped by error in karmic,
1127+ thanks Pär Andersson (lp: #395591)
1128+
1129+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 22 Sep 2009 15:20:27 +0200
1130+
1131+gdm (2.28.0-0ubuntu1) karmic; urgency=low
1132+
1133+ * New upstream release (LP: #434354)
1134+ - Now GDM supports the ability to specify the automatic/timed login user via
1135+ a script via the same interface that the old GDM supported.
1136+ - Now the user's dmrc and face image files are stored in /var/cache/gdm, so
1137+ that the login process does not need to access the user's $HOME directory
1138+ before authentication.
1139+ - Fix the login GUI options widget so the language/session/layout choices
1140+ are not reset after a failed login.
1141+ - Fix language dialog so it does not crash if the user click's the "OK"
1142+ button when no language is selected.
1143+ - Fix to ensure that the login dialog regains focus after the language or
1144+ layout dialogs are used.
1145+ - The language dialog has improved logic to sort the language names more
1146+ correctly.
1147+ - Make sure to check error variable is not NULL before referencing it in the
1148+ gdm-user-manager code.
1149+ - Make sure to not print NULL strings since this causes crashes on some
1150+ platforms.
1151+ - Improve documentation.
1152+ * debian/patches/09_gdmsetup.patch: updated:
1153+ - Filter ConsoleKit system users (LP: #432271)
1154+ - Make window size fixed (LP: #429206)
1155+ * debian/patches/01_default_keyboard_layout_hal.patch,
1156+ debian/patches/99_autoreconf.patch: updated.
1157+
1158+ -- Robert Ancell <robert.ancell@canonical.com> Mon, 21 Sep 2009 13:05:51 +1000
1159+
1160+gdm (2.27.90-0ubuntu7) karmic; urgency=low
1161+
1162+ [ Ken VanDine ]
1163+ * debian/patches/10_xsplash.patch:
1164+ - Use --daemon instead of using the "&" (LP: #430834)
1165+ * debian/control:
1166+ - Conflict with xsplash (<< 0.8), we don't depend on xsplash but if
1167+ /usr/bin/xsplash exists we need it to support the --daemon option
1168+
1169+ [ Martin Pitt ]
1170+ * debian/gdm.upstart: Drop gdm-cdd.conf handling, gdm does not support it
1171+ any more.
1172+ * debian/gdm.upstart: Do not start in single-user modes or when "text" is
1173+ given as a kernel command line option. This restores previous behaviour.
1174+ (LP: #431176)
1175+ * Add debian/onboard.desktop: gdm "onboard" configuration for the
1176+ accessibility dialog, thanks to Francesco Fumanti!
1177+ * debian/rules: Install onboard.desktop, remove gok.desktop from upstream
1178+ install. We do not ship gok any more. (LP: #423831, #130368)
1179+
1180+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 17 Sep 2009 19:22:46 +0200
1181+
1182+gdm (2.27.90-0ubuntu6) karmic; urgency=low
1183+
1184+ * The upstart job won't start unless hal is also started, so add an
1185+ appropriate versioned dependency on the upstarted hal.
1186+
1187+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 16 Sep 2009 01:58:11 -0700
1188+
1189+gdm (2.27.90-0ubuntu5) karmic; urgency=low
1190+
1191+ FFE LP: #427356.
1192+
1193+ * Replace init script with Upstart job.
1194+ * debian/control:
1195+ - Bump build-dependency on debhelper for Upstart-aware dh_installinit
1196+ * debian/patches/20_upstart.patch:
1197+ - Emit Upstart events when starting the login session and desktop
1198+ session, just after starting xsplash. These can be used as
1199+ synchronisation points.
1200+
1201+ -- Scott James Remnant <scott@ubuntu.com> Tue, 15 Sep 2009 03:31:21 +0100
1202+
1203+gdm (2.27.90-0ubuntu4) karmic; urgency=low
1204+
1205+ * debian/patches/16_gdmserver_user_manager.patch:
1206+ - Add user manager d-bus interface to gdmserver (LP: #423450)
1207+
1208+ -- Robert Ancell <robert.ancell@canonical.com> Sat, 12 Sep 2009 12:49:48 +0200
1209+
1210+gdm (2.27.90-0ubuntu3) karmic; urgency=low
1211+
1212+ * Add 15_default_session.patch: Prefer "default.session", so that other
1213+ desktop environments like XFCE can use gdm, too, without being forced to
1214+ start GNOME. (LP: #403291)
1215+ * debian/gdm.postrm: Fix purge breakage if one of the to-be-cleaned-up
1216+ directories does not exist.
1217+
1218+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 10 Sep 2009 13:02:27 +0200
1219+
1220+gdm (2.27.90-0ubuntu2) karmic; urgency=low
1221+
1222+ [ Robert Ancell ]
1223+ * debian/patches/13_cache_ck_history.patch:
1224+ - Cache result of ck-history to make startup fast (LP: #400863)
1225+
1226+ [ Martin Pitt ]
1227+ * Add 14_guest_session.patch: Rewrite guest session support for new gdm
1228+ architecture. This now adds a D-BUS operation StartGuestSession(), since
1229+ gdmflexiserver is being deprecated. (LP: #404870)
1230+
1231+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 07 Sep 2009 18:18:15 +0200
1232+
1233+gdm (2.27.90-0ubuntu1) karmic; urgency=low
1234+
1235+ [ Robert Ancell ]
1236+ * New upstream release: (LP: #418426)
1237+ - Autostart polkit-gnome authentication agent.
1238+ - Add screen capture sound effect to screenshot tool.
1239+ - If HOST_NAME_MAX is not available, try _POSIX_HOST_NAME_MAX, then
1240+ default to 256.
1241+ - Add users "nobody4" and "noaccess" to the list of users to filter from
1242+ the Face Browser.
1243+ - Add Solaris logindevperm support.
1244+ - Fix mispelling of XDMCP.
1245+ - Improve documentation.
1246+ * debian/control:
1247+ - Depend on libcanberra-gtk
1248+ * debian/patches/01_default_keyboard_layout_hal.patch:
1249+ * debian/patches/02_x_server_location.patch:
1250+ * debian/patches/03_hide_system_users.patch:
1251+ * debian/patches/04_fix_external_program_directories.patch:
1252+ * debian/patches/08_use_polkit_for_settings.patch:
1253+ * debian/patches/99_autoreconf.patch:
1254+ - Refreshed
1255+ * debian/patches/09_gdmsetup.patch:
1256+ - Set gdmsetup window title and icon
1257+ - Fix crash when have no default users configured
1258+
1259+ [ Ted Gould ]
1260+ * Add 12_fusa_name_change.patch: Change the Bonobo activation server name
1261+ of the FUSA applet.
1262+ * debian/rules: Rename the Bonobo activate server description before
1263+ installing it. (LP: #410498)
1264+
1265+ -- Robert Ancell <robert.ancell@canonical.com> Tue, 25 Aug 2009 15:32:13 +0200
1266+
1267+gdm (2.27.4-0ubuntu11) karmic; urgency=low
1268+
1269+ * debian/patches/09_gdmsetup.patch:
1270+ - clean some unused variables there
1271+ - don't crash if there is no autologin key in the configuration yet
1272+ (lp: #410475)
1273+ - don't specify encoding in desktop entry (lp: #410591)
1274+ * debian/patches/11_crash_for_apport.patch:
1275+ - don't catch crashes so apport can do its job
1276+
1277+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 12 Aug 2009 16:17:23 +0200
1278+
1279+gdm (2.27.4-0ubuntu10) karmic; urgency=low
1280+
1281+ * debian/patches/10_xsplash.patch:
1282+ - updated version by Cody Russell
1283+
1284+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 11 Aug 2009 19:10:45 +0200
1285+
1286+gdm (2.27.4-0ubuntu9) karmic; urgency=low
1287+
1288+ * debian/control:
1289+ - build-depends on libpolkit-gobject-1-dev
1290+
1291+ -- Sebastien Bacher <seb128@ubuntu.com> Fri, 07 Aug 2009 17:00:43 +0100
1292+
1293+gdm (2.27.4-0ubuntu8) karmic; urgency=low
1294+
1295+ * debian/patches/10_xsplash.patch:
1296+ - Fixed a syntax error
1297+
1298+ -- Ken VanDine <ken.vandine@canonical.com> Fri, 07 Aug 2009 16:29:02 +0100
1299+
1300+gdm (2.27.4-0ubuntu7) karmic; urgency=low
1301+
1302+ * debian/patches/08_use_polkit_for_settings.patch:
1303+ - Use PolicyKit for GDM settings
1304+ * debian/patches/09_gdmsetup.patch:
1305+ - Provide a setup tool for basic configuration (LP: #395299)
1306+ * debian/patches/10_xsplash.patch:
1307+ - Load xsplash on login
1308+ * debian/patches/99_autoreconf.patch:
1309+ - Updated
1310+
1311+ -- Robert Ancell <robert.ancell@canonical.com> Fri, 07 Aug 2009 09:23:21 +0100
1312+
1313+gdm (2.27.4-0ubuntu6) karmic; urgency=low
1314+
1315+ * debian/patches/07_correct_distribution_version.patch:
1316+ - correctly display ubuntu as distribution (lp: #396805)
1317+
1318+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 23 Jul 2009 23:19:33 +0200
1319+
1320+gdm (2.27.4-0ubuntu5) karmic; urgency=low
1321+
1322+ * debian/rules:
1323+ - move custom.conf to /usr/share/doc/gdm/examples to avoid
1324+ a conffile prompt when upgrading from a existing gdm
1325+ * debian/gdm.preinst:
1326+ - fix typo
1327+
1328+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 22 Jul 2009 10:51:59 +0200
1329+
1330+gdm (2.27.4-0ubuntu4) karmic; urgency=low
1331+
1332+ * debian/control:
1333+ - Replace dependency on gnome-session with gnome-session-bin
1334+ - Add recommends on metacity | x-window-manager
1335+ - Add recommends on gnome-settings-daemon | xfconf
1336+ - Add suggestion on gnome-power-manager, gnome-orca, gok, and gnome-mag
1337+ - (LP: #400901)
1338+
1339+ -- Cody A.W. somerville <cody-somerville@ubuntu.com> Tue, 21 Jul 2009 21:28:30 +0200
1340+
1341+gdm (2.27.4-0ubuntu3) karmic; urgency=low
1342+
1343+ * 06_run_xsession.d.patch: Define $OPTIONFILE, so that the
1344+ 75dbus_dbus-launch Xsession.d script properly runs the session under
1345+ dbus-launch. (LP: #402161)
1346+
1347+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 21 Jul 2009 14:31:02 +0200
1348+
1349+gdm (2.27.4-0ubuntu2) karmic; urgency=low
1350+
1351+ * debian/control: Fix typo in Conflicts
1352+
1353+ -- Didier Roche <didrocks@ubuntu.com> Mon, 20 Jul 2009 16:12:11 +0200
1354+
1355+gdm (2.27.4-0ubuntu1) karmic; urgency=low
1356+
1357+ * New upstream release:
1358+ - Favor XFree86 Xinerama over Solaris Xinerama on Solaris
1359+ - Make greeter a well behaved session client
1360+ - XDMCP fixes
1361+ - Fix up btmp record handling
1362+ - Handle locales with modifiers better
1363+ - Use better logic with keyboard layout handling
1364+ - Change example PAM file/documentation to demonstrate password-less login
1365+ - Handle usernames from non-utf8 locales
1366+ - Allow dbus introspection for gdm services
1367+ - Show more details authentication error messages in UI
1368+ - Allow uppercase and lowercase booleans in config file
1369+ - Be more consistent with booleans in schemas
1370+ - Use g_timeout_add_seconds to reduce wakeups
1371+ - Make greeter window more clear when user list is disabled
1372+ - Put greeter login window in same ctrl-alt-tab menu as panel
1373+ - Port greeter to PolicyKit 1.0
1374+ - Shave off 1/2 second delay when bringing up greeter
1375+ - OS X portability fixes
1376+ - Look for locales in /usr/lib/locale instead of /usr/share/locale
1377+ - Better handling when two users have the same name
1378+ * Drop 01_xrdb_nocpp.patch, applied upstream.
1379+ * debian/control:
1380+ - use conflicts on the buggy libxklavier version to avoid race upgrade
1381+ leading to a gdm greeter crash
1382+
1383+ -- Sebastien Bacher <seb128@ubuntu.com> Mon, 20 Jul 2009 15:20:37 +0200
1384+
1385+gdm (2.26.1git20090717-0ubuntu2) karmic; urgency=low
1386+
1387+ * Add 06_run_xsession.d.patch: Run /etc/X11/Xsession.d/. (LP: #401201)
1388+ * Add debian/watch.
1389+ * Add 01_default_keyboard_layout_hal.patch: Get default keyboard layout from
1390+ hal. Patch taken from Fedora. (LP: #395103) Add libhal-dev build
1391+ dependency.
1392+ * Add 99_autoreconf.patch to pick up above change.
1393+
1394+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 20 Jul 2009 13:20:46 +0200
1395+
1396+gdm (2.26.1git20090717-0ubuntu1) karmic; urgency=low
1397+
1398+ * Update to latest upstream git head:
1399+ - Make greeter login window be a dock. Fixes metacity complaining about
1400+ session management. (LP: #395324)
1401+ * Drop patches which are fixed upstream:
1402+ - 00git-greeter-session-management.patch
1403+ - 00git-invalid-dmrc-layout.patch
1404+ - 00git-use-after-free.patch
1405+ - 00git-xklavier4.patch
1406+ - 02_dont_force_us_keyboard.patch
1407+ - 04_polkit1.patch
1408+ * 80_workaround_incorrect_directories.patch: Update to new upstream version.
1409+ * Drop 01_xconfigoptions.patch; these configure variables are not used any
1410+ more in the upstream code, and upstream supplies the X.org -br option by
1411+ default now. Also drop the corresponding configure changes from
1412+ 17_update_default_xserver.patch.
1413+ * Apply 15_usplash.patch to debian/gdm.init and drop the patch.
1414+ * 17_update_default_xserver.patch: Update to new upstream version, add
1415+ corresponding configure change, add patch tag header, forward upstream,
1416+ and rename to 02_x_server_location.patch.
1417+ * Drop 99_autoreconf.patch. The only remaining build system change is the
1418+ previous item.
1419+ * Drop 20_xdm-stuff.patch, it's just cruft.
1420+ * Drop debian/Xsession, and change debian/rules to install the upstream one.
1421+ * 01_xrdb_nocpp.patch: Add patch tag header, forward upstream.
1422+ * Rename 80_workaround_incorrect_directories.patch to
1423+ 04_fix_external_program_directories.patch and add patch tag header.
1424+ * Rename 81_initial_server_on_vt7.patch to 05_initial_server_on_vt7.patch.
1425+ * debian/rules: Remove /var/gdm (empty and nonstandard) and /var/run (will
1426+ be created at runtime), thanks lintian.
1427+ * debian/copyright: Point to versioned GPL, thanks lintian.
1428+ * debian/gdm.postrm: Use "set -e" to conform to policy.
1429+ * Add debian/xterm.desktop: Reintroduce "failsafe xterm" session.
1430+
1431+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 17 Jul 2009 11:41:35 +0200
1432+
1433+gdm (2.26.1-0ubuntu7) karmic; urgency=low
1434+
1435+ * Rename 04_xklavier4.patch to 00git-xklavier4.patch.
1436+ * Add 04_polkit1.patch: Port to PolicyKit (which essentially means to rip
1437+ out all PolicyKit code, since the backend now talks to the authentication
1438+ agent itself).
1439+ * debian/control: Drop polkit build dependency.
1440+ * Add debian/patches/99_autoreconf.patch: Regenerate autotools files to pick
1441+ up 04_polkit1.patch changes.
1442+
1443+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 13 Jul 2009 14:50:17 +0200
1444+
1445+gdm (2.26.1-0ubuntu6) karmic; urgency=low
1446+
1447+ * Add 00git-greeter-session-management.patch: Make the greeter a
1448+ well-behaved session client. Patch taken from upstream git head.
1449+ * Add 00git-use-after-free.patch: Fix crash in xdmcp chooser. Taken from
1450+ upstream git head.
1451+ * debian/control: Add libxklavier-dev build dependency, to get the
1452+ keyboard selector.
1453+ * Add 04_xklavier4.patch: Fix build with libxklavier 4.0. Taken from
1454+ upstream git head.
1455+ * Add 00git-invalid-dmrc-layout.patch: Correctly handle invalid xkb layout
1456+ from ~/.dmrc. Taken from upstream git head.
1457+
1458+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 13 Jul 2009 11:17:44 +0200
1459+
1460+gdm (2.26.1-0ubuntu5) karmic; urgency=low
1461+
1462+ * debian/gdm.preinst: Remove obsolete conffiles.
1463+ * debian/gdm.preinst: Migrate autologin settings from gdm.conf (which isn't
1464+ read any more) to custom.conf. (LP: #396459)
1465+ * Add 81_initial_server_on_vt7.patch: Force initial X server to go to tty7
1466+ instead of tty1. This is an Ugly Hack until we have a cleaner solution for
1467+ getty not to tramp over a running X server on vt1. This bandaids the
1468+ immediate problem of the first X server being killed after a few minutes
1469+ due to getty on tty1 timing out. (LP: #396226)
1470+
1471+ -- Martin Pitt <martin.pitt@ubuntu.com> Thu, 09 Jul 2009 18:08:07 +0200
1472+
1473+gdm (2.26.1-0ubuntu4) karmic; urgency=low
1474+
1475+ * debian/gdm.preinst: Do not check for an existing custom.conf, since we
1476+ already ship it. Always let the gdm.conf-custom win, to actually migrate
1477+ settings.
1478+ * debian/control: Drop alternative dependencies for gnome-session, since gdm
1479+ itself now needs gnome-session. (LP: #396321).
1480+
1481+ -- Martin Pitt <martin.pitt@ubuntu.com> Tue, 07 Jul 2009 08:53:38 +0200
1482+
1483+gdm (2.26.1-0ubuntu3) karmic; urgency=low
1484+
1485+ * Add 03_hide_system_users.patch: Do not show system users in the "frequent
1486+ users" list. (LP: #395281)
1487+ * debian/rules: Call dh_installinit with --no-scripts, to avoid restarting
1488+ gdm (and killing your X session) during upgrade. The prerm/postinst
1489+ scripts already have code to reload gdm if appropriate. Unfortunately this
1490+ doesn't help to fix the upgrade from 0ubuntu2, its prerm already kills it.
1491+ (LP: #395302) This also fixes the "locks session and spawns a second X
1492+ server" issue on upgrades from Jaunty. (LP: #395313)
1493+ * Drop 16_correct_customconf_naming.patch: Upstream uses
1494+ and installs /etc/gdm/custom.conf, so gdm also needs to read this. Add
1495+ debian/gdm.preinst to migrate the old name to the new name on upgrades.
1496+ (LP: #395861)
1497+ * 02_dont_force_us_keyboard.patch: Don't return NULL in
1498+ get_default_layout(), but return an empty string and explicitly check this
1499+ when setting $GDM_KEYBOARD_LAYOUT. With NULL, gdm trips over an assertion
1500+ check. (LP: #395595)
1501+
1502+ -- Martin Pitt <martin.pitt@ubuntu.com> Mon, 06 Jul 2009 16:04:25 +0200
1503+
1504+gdm (2.26.1-0ubuntu2) karmic; urgency=low
1505+
1506+ * debian/control: Add Vcs-Bzr, package imported into bzr.
1507+ * Add 02_dont_force_us_keyboard.patch: Don't force GDM_KEYBOARD_LAYOUT=us if
1508+ gdm does not have an explicit setting (which it currently doesn't, since
1509+ there is not even an interface for changing the keyboard layout). Instead,
1510+ let the GNOME session default to the very same system default as gdm
1511+ itself. (LP: #395103)
1512+
1513+ -- Martin Pitt <martin.pitt@ubuntu.com> Fri, 03 Jul 2009 19:19:56 +0200
1514+
1515+gdm (2.26.1-0ubuntu1) karmic; urgency=low
1516+
1517+ * Upload the new gdm codebase to karmic, there is several known issues but
1518+ the new version need testing:
1519+ - there is no graphical configure tool yet
1520+ - gdm will not work correctly after upgrade until restart (restarting on
1521+ upgrade is not possible since it would close running xsession)
1522+ - the fast user switch applet ubuntu changes and the guest session
1523+ have not been updated yet
1524+
1525+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 02 Jul 2009 16:24:43 +0200
1526+
1527+gdm (2.26.1-0ubuntu0.3) karmic; urgency=low
1528+
1529+ * debian/gdm.init: tweak previous change to not break default server
1530+
1531+ -- Sebastien Bacher <seb128@ubuntu.com> Wed, 01 Jul 2009 09:55:39 +0200
1532+
1533+gdm (2.26.1-0ubuntu0.2) karmic; urgency=low
1534+
1535+ * debian/patches/17_update_default_xserver.patch:
1536+ - update xserver location
1537+ * debian/gdm.init: use the correct binary naming so restart is working
1538+
1539+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 30 Jun 2009 23:23:17 +0200
1540+
1541+gdm (2.26.1-0ubuntu0.1) karmic; urgency=low
1542+
1543+ * New upstream version
1544+
1545+ -- Sebastien Bacher <seb128@ubuntu.com> Thu, 04 Jun 2009 16:01:19 +0200
1546+
1547+gdm-new (2.25.2-0ubuntu0.2) jaunty; urgency=low
1548+
1549+ * debian/patches/16_correct_customconf_naming.patch:
1550+ - use correct gdm.conf-custom location so user config settings are read
1551+
1552+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 03 Mar 2009 17:40:04 +0100
1553+
1554+gdm-new (2.25.2-0ubuntu0.1) intrepid; urgency=low
1555+
1556+ * New upstream version, the code is a rewrite so the packaging is new too
1557+
1558+ -- Sebastien Bacher <seb128@ubuntu.com> Tue, 15 Jul 2008 14:16:47 +0100
1559+
1560
1561=== added file 'debian/compat'
1562--- debian/compat 1970-01-01 00:00:00 +0000
1563+++ debian/compat 2011-03-10 14:39:08 +0000
1564@@ -0,0 +1,1 @@
1565+7
1566
1567=== added file 'debian/control'
1568--- debian/control 1970-01-01 00:00:00 +0000
1569+++ debian/control 2011-03-10 14:39:08 +0000
1570@@ -0,0 +1,67 @@
1571+Source: gdm
1572+Section: gnome
1573+Priority: optional
1574+Maintainer: Sebastien Bacher <seb128@ubuntu.com>
1575+Build-Depends: cdbs,
1576+ debhelper (>= 7.3.15ubuntu2),
1577+ gnome-common,
1578+ autotools-dev,
1579+ gnome-pkg-tools,
1580+ libglib2.0-dev (>= 2.22),
1581+ libdbus-glib-1-dev (>= 0.74),
1582+ libx11-dev,
1583+ libgtk2.0-dev (>= 2.23.90-0ubuntu4),
1584+ libgconf2-dev,
1585+ gnome-doc-utils,
1586+ libpanel-applet2-dev,
1587+ gconf2,
1588+ libattr1-dev,
1589+ libpam0g-dev,
1590+ libxdmcp-dev,
1591+ libwrap0-dev,
1592+ libxi-dev,
1593+ libxinerama-dev,
1594+ libxklavier-dev,
1595+ libpolkit-gobject-1-dev,
1596+ libcanberra-gtk-dev (>= 0.4),
1597+ libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64],
1598+ iso-codes,
1599+ libupower-glib-dev (>= 0.9.0)
1600+Standards-Version: 3.9.1
1601+Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gdm/ubuntu
1602+
1603+Package: gdm
1604+Conflicts: gdm-snapshot, fast-user-switch-applet, libxklavier15 (<< 4.0-0ubuntu2), xsplash (<< 0.8)
1605+Replaces: gdm-snapshot, fast-user-switch-applet
1606+Architecture: any
1607+Depends: ${shlibs:Depends},
1608+ ${misc:Depends},
1609+ adduser,
1610+ libpam-modules (>= 0.72-1),
1611+ libpam-runtime (>= 0.76-13.1),
1612+ gnome-session-bin,
1613+ kbd | console-tools,
1614+ udev (>= 149-2)
1615+Recommends: xserver-xorg,
1616+ metacity | x-window-manager,
1617+ gnome-settings-daemon | xfconf
1618+Suggests: locales,
1619+ uswsusp,
1620+ libpam-gnome-keyring,
1621+ gnome-power-manager,
1622+ gnome-orca,
1623+ gok,
1624+ gnome-mag
1625+Provides: x-display-manager
1626+Breaks: usplash
1627+Description: GNOME Display Manager
1628+ gdm provides the equivalent of a "login:" prompt for X displays- it
1629+ pops up a login window and starts an X session.
1630+ .
1631+ It provides all the functionality of xdm, including XDMCP support for
1632+ managing remote displays.
1633+ .
1634+ The greeting window is written using the GNOME libraries and hence
1635+ looks like a GNOME application- even to the extent of supporting
1636+ themes! By default, the greeter is run as an unprivileged user for
1637+ security.
1638
1639=== added file 'debian/copyright'
1640--- debian/copyright 1970-01-01 00:00:00 +0000
1641+++ debian/copyright 2011-03-10 14:39:08 +0000
1642@@ -0,0 +1,54 @@
1643+This package was debianized by Sebastien Bacher <seb128@canonical.com> on
1644+Tue, 15 Jul 2008 14:16:47 +0100.
1645+
1646+It was downloaded from http://ftp.acc.umu.se/pub/GNOME/sources/gdm/2.22
1647+
1648+Upstream Authors:
1649+
1650+ William Jon McCann <mccann@jhu.edu>
1651+ Ray Strode <rstrode@redhat.com>
1652+
1653+Copyright:
1654+
1655+Copyright (C) 2007 William Jon McCann <mccann@jhu.edu>
1656+Copyright (C) 2003 Red Hat Inc.
1657+Copyright (C) 1999, 2000 Aladdin Enterprises. All rights reserved.
1658+Copyright (C) 2006 Red Hat, Inc.
1659+Copyright (C) 2006 Ray Strode <rstrode@redhat.com>
1660+Copyright (C) 2004, 2008 Sun Microsystems, Inc.
1661+Copyright (C) 2005, 2008 Red Hat, Inc.
1662+Copyright (c) 2007 David Zeuthen <davidz@redhat.com>
1663+Copyright (C) 1998, 1999, 2000 Martin K. Petersen <mkp@mkp.net>
1664+Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
1665+Copyright (C) 2001 Havoc Pennington, 2002 Red Hat Inc.
1666+Copyright (C) 2003-2006 Vincent Untz
1667+Copyright (C) 2002 Red Hat, Inc.
1668+Copyright (C) 2006, 2007 Christian Persch
1669+Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
1670+Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
1671+Copyright (C) 2008 Red Hat, Inc.
1672+Copyright (C) 2002 Free Software Foundation, Inc.
1673+Copyright (C) 2003 Sun Microsystems, Inc.
1674+Copyright (C) 2000 Helix Code, Inc.
1675+Copyright (C) 2001-2006 Jonathan Blandford <jrb@alum.mit.edu>
1676+
1677+License:
1678+
1679+ This package is free software; you can redistribute it and/or modify
1680+ it under the terms of the GNU General Public License as published by
1681+ the Free Software Foundation version 3
1682+
1683+ This package is distributed in the hope that it will be useful,
1684+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1685+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1686+ GNU General Public License for more details.
1687+
1688+ You should have received a copy of the GNU General Public License
1689+ along with this package; if not, write to the Free Software
1690+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1691+
1692+On Debian systems, the complete text of the GNU General
1693+Public License can be found in `/usr/share/common-licenses/GPL-3'.
1694+
1695+The Debian packaging is (C) 2008, Sebastien Bacher <seb128@canonical.com> and
1696+is licensed under the GPL, see above.
1697
1698=== added file 'debian/gdm-autologin.pam'
1699--- debian/gdm-autologin.pam 1970-01-01 00:00:00 +0000
1700+++ debian/gdm-autologin.pam 2011-03-10 14:39:08 +0000
1701@@ -0,0 +1,11 @@
1702+#%PAM-1.0
1703+auth requisite pam_nologin.so
1704+auth required pam_env.so readenv=1
1705+auth required pam_env.so readenv=1 envfile=/etc/default/locale
1706+auth required pam_permit.so
1707+@include common-account
1708+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
1709+session required pam_limits.so
1710+@include common-session
1711+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
1712+@include common-password
1713
1714=== added file 'debian/gdm.8.pod'
1715--- debian/gdm.8.pod 1970-01-01 00:00:00 +0000
1716+++ debian/gdm.8.pod 2011-03-10 14:39:08 +0000
1717@@ -0,0 +1,47 @@
1718+=head1 NAME
1719+
1720+gdm - GNOME Display Manager
1721+
1722+=head1 SYNOPSIS
1723+
1724+gdm
1725+
1726+=head1 DESCRIPTION
1727+
1728+B<gdm> is the equivalent of xdm(1x) or wdm(1x), but uses the GNOME
1729+libraries to provide a GNOME look-and-feel. It provides the GNOME
1730+equivalent of a "login:" prompt.
1731+
1732+B<gdm> reads F</etc/gdm/gdm.conf> for its configuration. For each
1733+local display, gdm starts an X server and runs gdmlogin(8x) on that
1734+display. The main gdm process also listens for XDMCP requests from
1735+remote displays. These requests can either be direct, causing B<gdm>
1736+to start a gdmlogin(8x) on the remote display, or indirect, causing
1737+a gdmchooser(8x) to be opened.
1738+
1739+When managing a display, B<gdm> attempts to execute
1740+F</etc/gdm/Init/>I<display>, or F</etc/gdm/Init/Default> if that does
1741+not exist. When a user logs in, B<gdm> first attempts
1742+F</etc/gdm/PreSession/>I<display> (or F</etc/gdm/PreSession/Default>),
1743+and then one of the sessions in F</etc/gdm/Sessions>. When the session
1744+has completed, B<gdm> attempts to run
1745+F</etc/gdm/PostSession/>I<display>, or
1746+F</etc/gdm/PostSession/>I<Default>. Of all these files, only the
1747+F</etc/gdm/Sessions> one is required to exist.
1748+
1749+B<gdm> maintains information about the displays it is managing in
1750+F</var/lib/gdm>. This includes xauth information, so this directory
1751+is not readable to normal users.
1752+
1753+B<gdm> uses PAM to perform authentication using the config file
1754+F</etc/pam.d/gdm>.
1755+
1756+=head1 AUTHOR
1757+
1758+Martin Kasper Petersen <mkp@SunSITE.auc.dk>
1759+
1760+This manual page written by Steve Haslam <araqnid@debian.org> for
1761+Debian GNU/Linux. Updated by Raphaël Hertzog <hertzog@debian.org>.
1762+Updated by Ryan Murray <rmurray@debian.org>.
1763+
1764+=cut
1765
1766=== added file 'debian/gdm.config'
1767--- debian/gdm.config 1970-01-01 00:00:00 +0000
1768+++ debian/gdm.config 2011-03-10 14:39:08 +0000
1769@@ -0,0 +1,41 @@
1770+#!/bin/sh
1771+# Debian gdm package configuration script
1772+# Copyright 2000-2001 Branden Robinson.
1773+# Licensed under the GNU General Public License, version 2. See the file
1774+# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
1775+
1776+set -e
1777+
1778+# source debconf library
1779+. /usr/share/debconf/confmodule
1780+
1781+THIS_PACKAGE=gdm
1782+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
1783+
1784+# set default display manager
1785+
1786+db_get shared/default-x-display-manager
1787+OLD_DEFAULT="$RET"
1788+
1789+db_metaget shared/default-x-display-manager owners
1790+OWNERS="$RET"
1791+db_metaget shared/default-x-display-manager choices
1792+CHOICES="$RET"
1793+
1794+if [ "$OWNERS" != "$CHOICES" ]; then
1795+ db_subst shared/default-x-display-manager choices $OWNERS
1796+ db_fset shared/default-x-display-manager seen false
1797+fi
1798+
1799+db_input high shared/default-x-display-manager || true
1800+db_go
1801+
1802+# using this display manager?
1803+db_get shared/default-x-display-manager
1804+CURRENT_DEFAULT="$RET"
1805+# remove the default display manager file if we're going to change it
1806+if [ "$OLD_DEFAULT" != "$CURRENT_DEFAULT" ]; then
1807+ rm -f $DEFAULT_DISPLAY_MANAGER_FILE
1808+fi
1809+
1810+exit 0
1811
1812=== added file 'debian/gdm.init'
1813--- debian/gdm.init 1970-01-01 00:00:00 +0000
1814+++ debian/gdm.init 2011-03-10 14:39:08 +0000
1815@@ -0,0 +1,119 @@
1816+#! /bin/sh
1817+#
1818+### BEGIN INIT INFO
1819+# Provides: gdm
1820+# Should-Start: console-screen acpid dbus hal network-manager
1821+# Required-Start: $local_fs $remote_fs
1822+# Required-Stop: $local_fs $remote_fs
1823+# Default-Start: 2 3 4 5
1824+# Default-Stop: 0 1 6
1825+# Short-Description: GNOME Display Manager
1826+# Description: Debian init script for the GNOME Display Manager
1827+### END INIT INFO
1828+#
1829+# Author: Ryan Murray <rmurray@debian.org>
1830+#
1831+set -e
1832+
1833+# To start gdm even if it is not the default display manager, change
1834+# HEED_DEFAULT_DISPLAY_MANAGER to "false."
1835+HEED_DEFAULT_DISPLAY_MANAGER=true
1836+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
1837+PATH=/sbin:/bin:/usr/sbin:/usr/bin
1838+DAEMON=/usr/sbin/gdm-binary
1839+PIDFILE=/var/run/gdm.pid
1840+UPGRADEFILE=/var/run/gdm.upgrade
1841+
1842+if [ -e $UPGRADEFILE -a "$1" != "restart" -a "$1" != "force-reload" ]; then
1843+ SSD_ARG="--startas $DAEMON"
1844+ rm -f $UPGRADEFILE
1845+else
1846+ SSD_ARG="--exec $DAEMON"
1847+fi
1848+
1849+# Allow cdd to override the config
1850+if [ -f /etc/gdm/gdm-cdd.conf ]; then
1851+ CONFIG_FILE="--config=/etc/gdm/gdm-cdd.conf"
1852+fi
1853+
1854+test -x $DAEMON || exit 0
1855+
1856+if [ -r /etc/default/locale ]; then
1857+ . /etc/default/locale
1858+ export LANG LANGUAGE
1859+elif [ -r /etc/environment ]; then
1860+ . /etc/environment
1861+ export LANG LANGUAGE
1862+fi
1863+
1864+. /lib/lsb/init-functions
1865+
1866+case "$1" in
1867+ start)
1868+ if grep -wqs text /proc/cmdline; then
1869+ log_warning_msg "Not starting GNOME Display Manager (gdm); found 'text' in kernel commandline."
1870+ elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" -a "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" -a "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2>/dev/null)" != "/usr/sbin/gdm" ]; then
1871+ log_warning_msg "Not starting GNOME Display Manager (gdm); it is not the default display manager."
1872+ else
1873+ if [ -z "$SPLASH_ORIG_CONSOLE" ]; then
1874+ log_begin_msg "Starting GNOME Display Manager..."
1875+ fi
1876+ # if usplash is running, make sure to stop it now, yes "start" kills it.
1877+ if [ "$SPLASH_ORIG_CONSOLE" ]; then
1878+ # usplash was already shut down earlier, so don't
1879+ # log success as it will look weird on the console.
1880+ log_end_msg=:
1881+ elif pidof usplash > /dev/null; then
1882+ SPLASH_ORIG_CONSOLE="$(fgconsole)"
1883+ DO_NOT_SWITCH_VT=yes /etc/init.d/usplash start
1884+ # We've just shut down usplash, so don't log
1885+ # success as it will look weird on the console.
1886+ log_end_msg=:
1887+ else
1888+ log_end_msg=log_end_msg
1889+ fi
1890+ start-stop-daemon --start --quiet --background --oknodo --pidfile $PIDFILE --name gdm-binary $SSD_ARG -- $CONFIG_FILE >/dev/null 2>&1 || log_end_msg 1
1891+ $log_end_msg 0
1892+
1893+ if [ "$SPLASH_ORIG_CONSOLE" ] && \
1894+ [ "$SPLASH_ORIG_CONSOLE" != serial ]; then
1895+ # Wait a short while for the active console to
1896+ # change, to try to avoid visible console noise from
1897+ # later init scripts.
1898+ i=0
1899+ while [ "$(fgconsole)" = "$SPLASH_ORIG_CONSOLE" ]; do
1900+ i="$(($i + 1))"
1901+ if [ "$i" -gt 5 ]; then
1902+ break
1903+ fi
1904+ sleep 1
1905+ done
1906+ fi
1907+ fi
1908+ ;;
1909+ stop)
1910+ log_begin_msg "Stopping GNOME Display Manager..."
1911+ start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --name gdm-binary $SSD_ARG --retry 30 >/dev/null 2>&1
1912+ log_end_msg 0
1913+ ;;
1914+ reload)
1915+ log_begin_msg "Reloading GNOME Display Manager configuration..."
1916+ log_warning_msg "Changes will take effect when all current X sessions have ended."
1917+ start-stop-daemon --stop --signal USR1 --quiet --pidfile \
1918+ $PIDFILE --name gdm-binary $SSD_ARG >/dev/null 2>&1
1919+ log_end_msg 0
1920+ ;;
1921+ restart|force-reload)
1922+ $0 stop || true
1923+ $0 start
1924+ ;;
1925+ status)
1926+ status_of_proc -p "$PIDFILE" "$DAEMON" gdm-binary && exit 0 || exit $?
1927+ ;;
1928+ *)
1929+ log_success_msg "Usage: /etc/init.d/gdm {start|stop|restart|reload|force-reload|status}"
1930+ exit 1
1931+ ;;
1932+esac
1933+
1934+exit 0
1935
1936=== added file 'debian/gdm.install'
1937--- debian/gdm.install 1970-01-01 00:00:00 +0000
1938+++ debian/gdm.install 2011-03-10 14:39:08 +0000
1939@@ -0,0 +1,1 @@
1940+debian/60xdg_path-on-session etc/X11/Xsession.d/
1941
1942=== added file 'debian/gdm.pam'
1943--- debian/gdm.pam 1970-01-01 00:00:00 +0000
1944+++ debian/gdm.pam 2011-03-10 14:39:08 +0000
1945@@ -0,0 +1,14 @@
1946+#%PAM-1.0
1947+auth requisite pam_nologin.so
1948+auth required pam_env.so readenv=1
1949+auth required pam_env.so readenv=1 envfile=/etc/default/locale
1950+auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
1951+@include common-auth
1952+auth optional pam_gnome_keyring.so
1953+@include common-account
1954+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
1955+session required pam_limits.so
1956+@include common-session
1957+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
1958+session optional pam_gnome_keyring.so auto_start
1959+@include common-password
1960
1961=== added file 'debian/gdm.postinst'
1962--- debian/gdm.postinst 1970-01-01 00:00:00 +0000
1963+++ debian/gdm.postinst 2011-03-10 14:39:08 +0000
1964@@ -0,0 +1,62 @@
1965+#!/bin/sh
1966+
1967+set -e
1968+
1969+. /usr/share/debconf/confmodule
1970+
1971+THIS_PACKAGE=gdm
1972+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
1973+
1974+# creating gdm group if he isn't already there
1975+if ! getent group gdm >/dev/null; then
1976+ addgroup --system gdm
1977+fi
1978+
1979+# creating gdm user if he isn't already there
1980+if ! getent passwd gdm >/dev/null; then
1981+ adduser --system --ingroup gdm --home /var/lib/gdm gdm
1982+ usermod -c "Gnome Display Manager" gdm
1983+ usermod -d "/var/lib/gdm" gdm
1984+ usermod -g "gdm" gdm
1985+ usermod -s "/bin/false" gdm
1986+fi
1987+
1988+# Creating nopasswdlogin group if he isn't already there.
1989+# That enables the password-less login feature in the users-admin
1990+# tool of the gnome-system-tools for users that belong to it,
1991+# and which is working thanks to GDM's PAM policy.
1992+if ! getent group nopasswdlogin >/dev/null; then
1993+ addgroup --system nopasswdlogin
1994+fi
1995+
1996+if [ -d /var/lib/gdm ]; then
1997+ chown gdm:gdm /var/lib/gdm
1998+ chown -R gdm:gdm /var/lib/gdm/.gconf*
1999+ chmod 0750 /var/lib/gdm
2000+fi
2001+
2002+# debconf is not a registry, so we only fiddle with the default file if it
2003+# does not exist
2004+if [ ! -e $DEFAULT_DISPLAY_MANAGER_FILE ]; then
2005+ if db_get shared/default-x-display-manager; then
2006+ # workaround debconf passthru bug (#379198)
2007+ if [ -z "$RET" ]; then
2008+ $RET="$THIS_PACKAGE"
2009+ fi
2010+ if [ "$THIS_PACKAGE" != "$RET" ]; then
2011+ echo "Please be sure to run \"dpkg --configure $RET\"."
2012+ fi
2013+ if db_get "$RET"/daemon_name; then
2014+ echo "$RET" > $DEFAULT_DISPLAY_MANAGER_FILE
2015+ fi
2016+ fi
2017+fi
2018+# debconf hangs if gdm gets started below without this
2019+db_stop || true
2020+
2021+PID=$(status "gdm" 2>/dev/null | awk '/[0-9]$/ { print $NF }')
2022+[ -z "$PID" ] || kill -HUP $PID
2023+
2024+#DEBHELPER#
2025+
2026+exit 0
2027
2028=== added file 'debian/gdm.postrm'
2029--- debian/gdm.postrm 1970-01-01 00:00:00 +0000
2030+++ debian/gdm.postrm 2011-03-10 14:39:08 +0000
2031@@ -0,0 +1,27 @@
2032+#!/bin/sh
2033+set -e
2034+
2035+if [ "$1" = "purge" ] ; then
2036+ rm -f /etc/default/gdm
2037+ if [ -d /etc/gdm ]; then
2038+ rmdir /etc/gdm/Init /etc/gdm/PreSession /etc/gdm/PostSession /etc/gdm/PostLogin /etc/gdm/Sessions /etc/gdm 2>/dev/null || true
2039+ fi
2040+ if [ -d /var/lib/gdm ]; then
2041+ rm -r /var/lib/gdm
2042+ fi
2043+ if [ -d /var/log/gdm ]; then
2044+ rm -r /var/log/gdm
2045+ fi
2046+ if getent passwd gdm >/dev/null; then
2047+ if [ -x /usr/sbin/deluser ]; then
2048+ deluser --system gdm || echo "Could not remove gdm user."
2049+ fi
2050+ fi
2051+ if getent group gdm >/dev/null; then
2052+ if [ -x /usr/sbin/delgroup ]; then
2053+ delgroup --system gdm || echo "Could not remove gdm group."
2054+ fi
2055+ fi
2056+fi
2057+#DEBHELPER#
2058+exit 0
2059
2060=== added file 'debian/gdm.preinst'
2061--- debian/gdm.preinst 1970-01-01 00:00:00 +0000
2062+++ debian/gdm.preinst 2011-03-10 14:39:08 +0000
2063@@ -0,0 +1,49 @@
2064+#!/bin/sh -e
2065+
2066+rm_conffile() {
2067+ PKGNAME="gdm"
2068+ CONFFILE="$1"
2069+
2070+ if [ -e "$CONFFILE" ]; then
2071+ md5sum="`md5sum \"$CONFFILE\" | sed -e \"s/ .*//\"`"
2072+ old_md5sum="`dpkg-query -W -f='${Conffiles}' $PKGNAME | sed -n -e \"\\\\' $CONFFILE'{s/ obsolete$//;s/.* //p}\"`"
2073+ if [ "$md5sum" != "$old_md5sum" ]; then
2074+ echo "Obsolete conffile $CONFFILE has been modified by you."
2075+ echo "Saving as $CONFFILE.dpkg-bak ..."
2076+ mv -f "$CONFFILE" "$CONFFILE".dpkg-bak
2077+ else
2078+ echo "Removing obsolete conffile $CONFFILE ..."
2079+ rm -f "$CONFFILE"
2080+ fi
2081+ fi
2082+}
2083+
2084+if [ "$1" = "upgrade" ] || [ "$1" = "install" ] && \
2085+ # earlier releases used /etc/gdm/gdm.conf-custom, but upstream uses
2086+ # custom.conf
2087+ dpkg --compare-versions "$2" le-nl "2.26.1-0ubuntu5"; then
2088+ if [ -f /etc/gdm/gdm.conf-custom ]; then
2089+ echo "Renaming /etc/gdm/gdm.conf-custom to /etc/gdm/custom.conf" >&2
2090+ mv /etc/gdm/gdm.conf-custom /etc/gdm/custom.conf
2091+ fi
2092+
2093+ # migrate autologin settings
2094+ if ! egrep -q '^(Automatic|Timed)Login(Enable|Delay|)=' /etc/gdm/custom.conf; then
2095+ settings="`egrep '^((Automatic|Timed)LoginEnable=[^f])|^((Automatic|Timed)Login=.)|^TimedLoginDelay=[^3]' /etc/gdm/gdm.conf`" || true
2096+ if [ -n "$settings" ]; then
2097+ echo '[daemon]' >> /etc/gdm/custom.conf
2098+ echo "$settings" >> /etc/gdm/custom.conf
2099+ fi
2100+ fi
2101+
2102+ # obsolete conffiles
2103+ rm_conffile /etc/gdm/gdm.conf
2104+ rm_conffile /etc/gdm/locale.conf
2105+ rm_conffile /etc/gdm/gdmprefetchlist
2106+ rm_conffile /etc/gdm/XKeepsCrashing
2107+ rm_conffile /etc/gdm/modules/AccessKeyMouseEvents
2108+ rm_conffile /etc/gdm/modules/factory-AccessKeyMouseEvents
2109+ rm_conffile /etc/gdm/modules/AccessDwellMouseEvents
2110+ rm_conffile /etc/gdm/modules/factory-AccessDwellMouseEvents
2111+fi
2112+
2113
2114=== added file 'debian/gdm.prerm'
2115--- debian/gdm.prerm 1970-01-01 00:00:00 +0000
2116+++ debian/gdm.prerm 2011-03-10 14:39:08 +0000
2117@@ -0,0 +1,64 @@
2118+#!/bin/bash
2119+# Debian gdm package pre-removal script
2120+# Copyright 2001 Branden Robinson.
2121+# Licensed under the GNU General Public License, version 2. See the file
2122+# /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>.
2123+# Acknowlegements to Stephen Early, Mark Eichin, and Manoj Srivastava.
2124+
2125+set -e
2126+
2127+THIS_PACKAGE=gdm
2128+DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
2129+
2130+if [ "$1" = "remove" -o "$1" = "deconfigure" ]; then
2131+ if [ -e /usr/share/debconf/confmodule ]; then
2132+ . /usr/share/debconf/confmodule
2133+ # disown this question
2134+ db_unregister shared/default-x-display-manager || true
2135+ # does the question still exist?
2136+ if db_get shared/default-x-display-manager; then
2137+ db_metaget shared/default-x-display-manager owners
2138+ db_subst shared/default-x-display-manager choices "$RET"
2139+ db_get shared/default-x-display-manager
2140+ # are we removing the currently selected display manager?
2141+ if [ "$THIS_PACKAGE" = "$RET" ]; then
2142+ if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
2143+ db_get "$RET"/daemon_name
2144+ if [ "$(cat $DEFAULT_DISPLAY_MANAGER_FILE)" = "$RET" ]; then
2145+ rm "$DEFAULT_DISPLAY_MANAGER_FILE"
2146+ fi
2147+ fi
2148+ # ask the user to choose a new default
2149+ db_fset shared/default-x-display-manager seen false
2150+ db_input critical shared/default-x-display-manager || true
2151+ db_go
2152+ # if the display manager file doesn't exist, write it with the path
2153+ # to the new default display manager
2154+ if [ ! -e $DEFAULT_DISPLAY_MANAGER_FILE ]; then
2155+ db_get shared/default-x-display-manager
2156+ echo "Please be sure to run \"dpkg-reconfigure $RET\"."
2157+ db_get "$RET"/daemon_name
2158+ echo "$RET" > "$DEFAULT_DISPLAY_MANAGER_FILE"
2159+ fi
2160+ fi
2161+ fi
2162+ fi
2163+fi
2164+
2165+if [ "$1" = "remove" ]; then
2166+ if [ -x /etc/init.d/gdm ]; then
2167+ nostop=
2168+ for hostname in "" "localhost" "$(hostname)" "$(hostname -f)"; do
2169+ if echo $DISPLAY | grep -q "^$hostname:0.*"; then
2170+ nostop=yes
2171+ fi
2172+ done
2173+ if [ -z $nostop ]; then
2174+ stop gdm || :
2175+ fi
2176+ fi
2177+fi
2178+
2179+#DEBHELPER#
2180+
2181+exit 0
2182
2183=== added file 'debian/gdm.templates'
2184--- debian/gdm.templates 1970-01-01 00:00:00 +0000
2185+++ debian/gdm.templates 2011-03-10 14:39:08 +0000
2186@@ -0,0 +1,123 @@
2187+Template: gdm/daemon_name
2188+Type: string
2189+Default: /usr/sbin/gdm
2190+Description: for internal use only
2191+
2192+Template: shared/default-x-display-manager
2193+Type: select
2194+Choices: ${choices}
2195+Description: Default display manager:
2196+ A display manager is a program that provides graphical login capabilities for
2197+ the X Window System.
2198+ .
2199+ Only one display manager can manage a given X server, but multiple display
2200+ manager packages are installed. Please select which display manager should
2201+ run by default.
2202+ .
2203+ Multiple display managers can run simultaneously if they are configured to
2204+ manage different servers; to achieve this, configure the display managers
2205+ accordingly, edit each of their init scripts in /etc/init.d, and disable the
2206+ check for a default display manager.
2207+Description-ca.UTF-8: Escolliu el gestor de pantalla:
2208+ Un gestor de pantalla (display manager) és un programa que proporciona la capacitat d’un quadre gràfic d’entrada (login) a l’X Window System.
2209+ .
2210+ Només un gestor de pantalla pot gestionar un servidor X determinat, però teniu instaŀlats diversos paquets de gestor de pantalla. Per favor, escolliu quin gestor de pantalla s'executarà per defecte.
2211+ .
2212+ Poden haver diversos gestors de pantalla corrent simultàniament si es configuren per a gestionar diferents servidors; per a aconseguir açò, configureu adequadament els gestors de pantalla, editeu cadascun dels seus scripts d’inici en «/etc/init.d», i deshabiliteu la comprovació de gestor de pantalla per defecte.
2213+Description-cs.UTF-8: Výchozí správce obrazovky:
2214+ Správce obrazovky je program, který nabízí grafické přihlášení do systému X Window.
2215+ .
2216+ Je nainstalováno několik správců obrazovky, ale jen jeden může obsluhovat daný X server. Vyberte, který správce se má spouštět jako výchozí.
2217+ .
2218+ Více správců obrazovky může běžet zároveň pouze pokud spravují různé servery. Pro dosažení takového nastavení je musíte správně nakonfigurovat, upravit jejich spouštěcí skripty v /etc/init.d a zakázat kontrolu výchozího správce obrazovky.
2219+Description-de.UTF-8: Standardmäßiger Display-Manager:
2220+ Ein Display-Manager ist ein Programm, welches grafische Anmeldemöglichkeiten für das X Window System zur Verfügung stellt.
2221+ .
2222+ Nur ein einziger Display-Manager kann einen gegebenen X-Server verwalten, es sind allerdings mehrere Display-Manager installiert. Bitte wählen Sie den Display-Manager aus, der standardmäßig ausgeführt werden soll.
2223+ .
2224+ Es können mehrere Display-Manager gleichzeitig laufen, wenn diese so konfiguriert sind, dass sie verschiedene X-Server verwalten. Um dies zu erreichen, konfigurieren Sie die Display-Manager entsprechend, editieren Sie jedes ihrer Init-Skripte in /etc/init.d, und schalten Sie die Überprüfung auf einen Standard-Display-Manager ab.
2225+Description-eu.UTF-8: Lehenetsiriko pantaila kudeatzailea:
2226+ Pantaila kudeatzailea X Leiho Sistemarako saio hasiera grafiko aukera ematen duen programa bat da.
2227+ .
2228+ Jakindako X zerbitzari bat pantaila kudeatzaile batek bakarrik kudea dezake, baina pantaila kudeatzaile anitz daude instalaturik. Hautatu zein pantaila kudeatzaile erabili nahi duzun lehenetsi bezala.
2229+ .
2230+ Pantaila kudeatzaile anitz batera martxan egon daitezke, zerbitzari ezberdinak kudeatzeko konfiguraturik badaude; hau lortzeko, pantaila kudeatzaileak behar bezala konfiguratu eta /etc/init.d-eko init script-ean lehenetsiriko pantaila kudeatzailea arakatzeko aukera ezgaitu.
2231+Description-fr.UTF-8: Gestionnaire graphique de session par défaut :
2232+ Un gestionnaire graphique de session est un programme qui permet de se connecter depuis le système X Window.
2233+ .
2234+ Un seul gestionnaire graphique de session peut s'occuper d'un serveur X donné, bien que plusieurs gestionnaires puissent être installés simultanément. Veuillez choisir celui qui sera utilisé par défaut.
2235+ .
2236+ Plusieurs gestionnaires graphiques peuvent être lancés en même temps, s'ils gèrent des serveurs X différents ; pour cela, configurez correctement chacun des gestionnaires graphiques, modifiez leurs scripts de lancement dans /etc/init.d, et désactivez le test de gestionnaire graphique par défaut.
2237+Description-gl.UTF-8: Xestor de pantalla por defecto:
2238+ Un xestor de pantalla é un programa que fornece capacidades de inicio de sesión gráfico para o sistema X Window.
2239+ .
2240+ Só un xestor de pantalla pode xestionar un servidor X determinado, pero hai varios paquetes de xestores de pantalla instalados. Escolla o xestor de pantalla que se debería executar por defecto.
2241+ .
2242+ Pódense executar varios xestores de pantalla ao mesmo tempo se se configuran para xestionar servidores distintos; para facelo, configure os xestores de pantalla, edite cada un dos scripts de inicio de /etc/init.d e desactive a comprobación do xestor de pantalla por defecto.
2243+Description-it.UTF-8: Display manager predefinito.
2244+ Un display manager è un programma che fornisce capacità di login grafico per il sistema X Window.
2245+ .
2246+ Solo un display manager può gestire un dato server X, ma sono installati più pacchetti di display manager. Scegliere il display manager da usare come predefinito.
2247+ .
2248+ Possono essere eseguiti più display manager contemporaneamente, a patto che siano impostati per gestire server diversi; per fare questo, configurare i display manager in maniera appropriata, modificare ciascuno dei loro script di avvio in /etc/init.d e disabilitare il controllo per un display manager predefinito.
2249+Description-ja.UTF-8: デフォルトのディスプレイマネージャ:
2250+ ディスプレイマネージャとは、X Window System 上でのグラフィカルなログイン機能を提供するものです。
2251+ .
2252+ ひとつの X サーバを管理できるのはひとつのディスプレイマネージャだけですが、ディスプレイマネージャパッケージが複数インストールされています。どのディスプレイマネージャをデフォルトで起動させるか選択して下さい。
2253+ .
2254+ 異なるサーバを担当するように設定すれば、複数のディスプレイサーバは同時に動作できます。そのようにするには、/etc/init.d にある各ディスプレイマネージャの初期化スクリプトを編集し、デフォルトディスプレイマネージャのチェックを無効にして下さい。
2255+Description-ml.UTF-8: ഡിഫാള്‍ട്ടായി വേണ്ട പ്രദര്‍ശന മാനേജര്‍:
2256+ എക്സ് ജാലക സിസ്റ്റത്തിന് ഗ്രാഫിക്കലായി അകത്ത് കടക്കാനുള്ള കഴിവുകള്‍ നല്കുന്ന ഒരു പ്രോഗ്രാമാണ് ഒരു പ്രദര്‍ശന മാനേജര്‍.
2257+ .
2258+ ഏതെങ്കിലും ഒരു എക്സ് സേവകനെ ഒരേ ഒരു പ്രദര്‍ശന മാനേജര്‍‌ക്കേ മാനേജ് ചെയ്യാന്‍ പറ്റൂ, പക്ഷേ ഒന്നിലധികം പ്രദര്‍ശന മാനേജര്‍ പാക്കേജുകള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്തിട്ടുണ്ട്. ദയവായി ഡിഫാള്‍ട്ടായി പ്രവര്‍ത്തിപ്പിക്കേണ്ട പ്രദര്‍ശന മാനേജര്‍ ഏതാണെന്ന് തിരഞ്ഞെടുക്കുക.
2259+ .
2260+ വ്യത്യസ്ത സേവകന്‍മാരെ മാനേജ് ചെയ്യാനായി ക്രമീകരിച്ചിട്ടുണ്ടെങ്കില്‍ ഒന്നിലധികം പ്രദര്‍ശന മാനേജര്‍മാര്‍ക്ക് ഒരേ സമയം പ്രവര്‍ത്തിക്കാം; ഇത് കൈവരിക്കണമെങ്കില്‍, പ്രദര്‍ശന മാനേജര്‍മാരെ അനുസൃതമായി ക്രമീകരിക്കുകയും, അവയോരോന്നിന്റേയും /etc/init.d യിലുള്ള ഇനിറ്റ് സ്ക്രിപ്റ്റുകളെ മാറ്റുകയും, ഡിഫാള്‍ട്ട് പ്രദര്‍ശന മാനേജര്‍ക്കായുള്ള പരിശോദന ഡിസേബിള്‍ ചെയ്യുകയും ചെയ്യുക.
2261+Description-nl.UTF-8: Standaard beeldschermbeheerder:
2262+ Een beeldschermbeheerder is een programma waarmee u zich grafisch op het systeem kunt aanmelden, waarna u in de grafische omgeving (het X Window System) terecht komt.
2263+ .
2264+ Elke X-server kan door slechts één beeldschermbeheerder beheerd worden, hoewel er meerdere beeldschermbeheerders geïnstalleerd kunnen zijn. Welke beeldschermbeheerder dient standaard gebruikt te worden?
2265+ .
2266+ Het is mogelijk om meerdere beeldschermbeheerders tegelijk te draaien zolang deze verschillende servers beheren. Om dat te bereiken dient u de beeldschermbeheerders overeenkomstig in te stellen door in hun init-scripts (in /etc/init.d) de controle of ze de standaard beeldschermbeheerder zijn uit te schakelen.
2267+Description-pt.UTF-8: Seleccione o gestor de ecrã por omissão desejado.
2268+ Um gestor de ecrã é um programa que fornece capacidades de autenticação gráfica ao X Window System.
2269+ .
2270+ Apenas um único gestor de ecrã pode gerir um dado servidor X, mas estão instalados múltiplos pacotes de gestores de ecrã. Por favor seleccione qual o gestor de ecrã que deve ser executado por omissão.
2271+ .
2272+ Podem ser executados em simultâneo múltiplos gestores de écran se estes estiverem configurados para gerir diferentes servidores; para fazer isto, configure os gestores de ecrã de acordo, edite cada um dos seus scripts "init" em /etc/init.d, e desligue a verificação de um gestor de écran de omissão.
2273+Description-pt_BR.UTF-8: Gerenciador de sessão padrão:
2274+ Um gerenciador de sessão é um programa que provê capacidades de login gráfico para o 'X Window System'.
2275+ .
2276+ Somente um gerenciador de sessão pode gerenciar um dado servidor X, mas diversos pacotes de gerenciadores de sessão estão instalados. Por favor selecione qual gerenciador de sessão deverá ser executado por padrão.
2277+ .
2278+ Múltiplos gerenciadores de sessão podem ser executados simultaneamente se eles estão configurados para gerenciar servidores diferentes; para conseguir isso, configure os gerenciadores de sessão apropriadamente, edite cada um dos seus scripts de inicialização em /etc/init.d, e desabilite a checagem por um gerenciador de sessão padrão.
2279+Description-ru.UTF-8: Менеджер дисплеев по умолчанию:
2280+ Менеджер дисплеев -- это программа, которая обеспечивает возможность графического входа в систему для X Window System.
2281+ .
2282+ Данный X-сервер может обслуживать только один менеджер дисплеев, но установлено несколько пакетов менеджеров дисплеев. Пожалуйста, выберите менеджер дисплеев, который должен запускаться по умолчанию.
2283+ .
2284+ Несколько менеджеров дисплеев могут запускаться одновременно, если они настроены на обслуживание разных серверов; чтобы добиться этого, настройте менеджеры дисплеев соответственно, отредактируйте их сценарии инициализации в /etc/init.d и отключите проверку менеджера дисплеев по умолчанию.
2285+Description-sk.UTF-8: Zvoľte predvoleného správcu obrazovky:
2286+ Správca obrazovky je program, ktorý ponúka grafické prihlásenie do systému X Window.
2287+ .
2288+ Máte nainštalovaných viac správcov obrazovky, ale iba jeden môže obsluhovať daný X server. Zvoľte si správcu, ktorý bude predvolený.
2289+ .
2290+ Súbežne môže byť spustených viac správcov obrazovky, ale iba v prípade viacero rozdielnych serverov. Pre dosiahnutie takéhoto nastavenia ich musíte správne nastaviť, upraviť ich spúšťacie skripty v /etc/init.d a zakázať kontrolu predvoleného správcu obrazovky.
2291+Description-sv.UTF-8: Standarddisplayhanterare:
2292+ En displayhanterare är det program som tillhandahåller grafiska inloggningsmöjligheter i X Window System.
2293+ .
2294+ Endast en displayhanterare kan hantera en angiven X-server, men flera displayhanterarpaket kan vara installerade. Välj vilken displayhanterare som skall köras som standard.
2295+ .
2296+ Flera displayhanterare kan köras samtidigt om de är konfigurerade att hantera olika servrar. För att uppnå detta ska du konfigurera displayhanterarnas init-skript under /etc/init.d, och inaktivera kontrollen efter en standarddisplayhanterare.
2297+Description-ta.UTF-8: முன்னிருப்பு காட்சி மேலாளர்:
2298+ காட்சி மேலாளர் என்பது வரைகலை உள்நுழைவு இயலுமையை எக்ஸ் விண்டோஸ் அமைப்புக்கு தரும் நிரலாகும்.
2299+ .
2300+ ஒரு கொடுக்கப் பட்ட X சேவையகத்தில் ஒரு காட்சி மேலாளர்தான் மேலாள இயலும். ஆனால் பல காட்சி மேலாளர்கள் நிறுவப் பட்டுள்ளன. எது முன்னிருப்பாக இருக்க வேண்டும் என தேர்ந்தெடுங்கள்
2301+ .
2302+ வெவ்வேறு சேவையகங்களை மேலாள வடிவமைத்தால் பல காட்சி மேலாளர்கள் ஒரே நேரத்தில் இயங்கக் கூடும். இதை செய்ய காட்சி மேலாளர்களை தகுந்தாற் போல வடிவமையுங்கள். அவற்றின் இனிட் சிறு நிரல்களை /etc/init.d இல் திருத்துங்கள். முன்னிருப்பு காட்சி மேலாளர் தேர்வை செயலிழக்கச் செய்யவும்.
2303+Description-zh_CN.UTF-8: 默认显示管理器:
2304+ 显示管理器是为 X 窗口系统提供图形界面登录模式的程序。
2305+ .
2306+ 一个给定的 X 服务器只能由一个显示管理器来管理,但是系统中已经安装了多个显示管理器软件包。请选择一个作为默认的显示管理器。
2307+ .
2308+ 如果多个显示管理器被配置为分别管理不同的 X 服务器,那么它们可以同时运行。要做到这一点,您要按照需求分别对各显示管理器进行设置,编辑它们在 /etc/init.d 目录下的 init 脚本,并且关闭对默认显示管理器的检查。
2309+
2310
2311=== added file 'debian/gdm.upstart'
2312--- debian/gdm.upstart 1970-01-01 00:00:00 +0000
2313+++ debian/gdm.upstart 2011-03-10 14:39:08 +0000
2314@@ -0,0 +1,49 @@
2315+# gdm - GNOME Display Manager
2316+#
2317+# The display manager service manages the X servers running on the
2318+# system, providing login and auto-login services
2319+
2320+description "GNOME Display Manager"
2321+author "William Jon McCann <mccann@jhu.edu>"
2322+
2323+start on ((filesystem
2324+ and (started dbus
2325+ and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
2326+ or stopped udevtrigger)))
2327+ or runlevel PREVLEVEL=S)
2328+
2329+stop on runlevel [016]
2330+
2331+emits login-session-start
2332+emits desktop-session-start
2333+
2334+env XORGCONFIG=/etc/X11/xorg.conf
2335+
2336+script
2337+ if [ -n "$UPSTART_EVENTS" ]
2338+ then
2339+ [ ! -f /etc/X11/default-display-manager -o "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm" ] || { stop; exit 0; }
2340+
2341+ set -- `runlevel`
2342+ prev=$1
2343+ curr=$2
2344+
2345+ if [ "$curr" = S -o "$prev" = unknown ]
2346+ then
2347+ # Single-user mode
2348+ plymouth quit || :
2349+ exit 0
2350+ fi
2351+ fi
2352+
2353+ if [ -r /etc/default/locale ]; then
2354+ . /etc/default/locale
2355+ export LANG LANGUAGE
2356+ elif [ -r /etc/environment ]; then
2357+ . /etc/environment
2358+ export LANG LANGUAGE
2359+ fi
2360+ export XORGCONFIG
2361+
2362+ exec gdm-binary $CONFIG_FILE
2363+end script
2364
2365=== added file 'debian/onboard.desktop'
2366--- debian/onboard.desktop 1970-01-01 00:00:00 +0000
2367+++ debian/onboard.desktop 2011-03-10 14:39:08 +0000
2368@@ -0,0 +1,11 @@
2369+[Desktop Entry]
2370+Name=Onboard Onscreen Keyboard
2371+Comment=Type without using a hardware keyboard
2372+TryExec=onboard
2373+Exec=onboard --size 500x180 -x 20 -y 10
2374+Terminal=false
2375+Type=Application
2376+StartupNotify=true
2377+Categories=GNOME;GTK;Accessibility;
2378+AutostartCondition=GNOME /desktop/gnome/applications/at/screen_keyboard_enabled
2379+X-Ubuntu-Gettext-Domain=gdm
2380
2381=== added directory 'debian/patches'
2382=== added file 'debian/patches/02_x_server_location.patch'
2383--- debian/patches/02_x_server_location.patch 1970-01-01 00:00:00 +0000
2384+++ debian/patches/02_x_server_location.patch 2011-03-10 14:39:08 +0000
2385@@ -0,0 +1,21 @@
2386+Description: Change the default X server location to /usr/bin/X. This avoids having to build-depend on xserver-xorg.
2387+Bug: http://bugzilla.gnome.org/show_bug.cgi?id=588848
2388+
2389+Index: gdm-2.32.0/configure.ac
2390+===================================================================
2391+--- gdm-2.32.0.orig/configure.ac 2010-09-27 19:05:57.000000000 +0200
2392++++ gdm-2.32.0/configure.ac 2010-12-07 15:03:45.297502001 +0100
2393+@@ -1161,12 +1161,9 @@
2394+ X_SERVER="/usr/bin/X"
2395+ X_CONFIG_OPTIONS="-audit 0"
2396+ else
2397+- # what to do, what to do, this is wrong, but this just sets the
2398+- # defaults, perhaps this user is cross compiling or some such
2399+- X_PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin"
2400++ X_PATH="/usr/bin"
2401+ X_SERVER_PATH="/usr/bin"
2402+ X_SERVER="/usr/bin/X"
2403+- X_CONFIG_OPTIONS="-audit 0"
2404+ fi
2405+
2406+ dnl ---------------------------------------------------------------------------
2407
2408=== added file 'debian/patches/04_fix_external_program_directories.patch'
2409--- debian/patches/04_fix_external_program_directories.patch 1970-01-01 00:00:00 +0000
2410+++ debian/patches/04_fix_external_program_directories.patch 2011-03-10 14:39:08 +0000
2411@@ -0,0 +1,54 @@
2412+Description: Fix location of external programs.
2413+
2414+Index: gdm-2.30.4/daemon/gdm-server.c
2415+===================================================================
2416+--- gdm-2.30.4.orig/daemon/gdm-server.c 2010-06-30 12:29:43.000000000 +0200
2417++++ gdm-2.30.4/daemon/gdm-server.c 2010-06-30 12:30:03.000000000 +0200
2418+@@ -131,7 +131,7 @@
2419+ g_return_val_if_fail (GDM_IS_SERVER (server), NULL);
2420+
2421+ error = NULL;
2422+- command = g_strdup_printf (LIBEXECDIR "/ck-get-x11-display-device --display %s",
2423++ command = g_strdup_printf ("/usr/lib/ConsoleKit/ck-get-x11-display-device --display %s",
2424+ server->priv->display_name);
2425+
2426+ g_debug ("GdmServer: Running helper %s", command);
2427+Index: gdm-2.30.4/data/greeter-autostart/gnome-settings-daemon.desktop.in.in
2428+===================================================================
2429+--- gdm-2.30.4.orig/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2010-06-30 12:29:43.000000000 +0200
2430++++ gdm-2.30.4/data/greeter-autostart/gnome-settings-daemon.desktop.in.in 2010-06-30 12:30:03.000000000 +0200
2431+@@ -1,8 +1,8 @@
2432+ [Desktop Entry]
2433+ Type=Application
2434+ _Name=GNOME Settings Daemon
2435+-TryExec=@LIBEXECDIR@/gnome-settings-daemon
2436+-Exec=@LIBEXECDIR@/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-greeter/settings-manager-plugins
2437++TryExec=/usr/lib/gnome-settings-daemon/gnome-settings-daemon
2438++Exec=/usr/lib/gnome-settings-daemon/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-greeter/settings-manager-plugins
2439+ OnlyShowIn=GNOME;
2440+ X-GNOME-Autostart-Phase=Initialization
2441+ X-GNOME-Autostart-Notify=true
2442+Index: gdm-2.30.4/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in
2443+===================================================================
2444+--- gdm-2.30.4.orig/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2010-06-16 18:32:38.000000000 +0200
2445++++ gdm-2.30.4/data/greeter-autostart/polkit-gnome-authentication-agent-1.desktop.in.in 2010-06-30 12:30:03.000000000 +0200
2446+@@ -1,5 +1,5 @@
2447+ [Desktop Entry]
2448+ Type=Application
2449+ _Name=PolicyKit Authentication Agent
2450+-Exec=@LIBEXECDIR@/polkit-gnome-authentication-agent-1
2451++Exec=/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
2452+ OnlyShowIn=GNOME;
2453+Index: gdm-2.30.4/gui/simple-chooser/gdm-chooser-session.c
2454+===================================================================
2455+--- gdm-2.30.4.orig/gui/simple-chooser/gdm-chooser-session.c 2010-06-30 12:29:43.000000000 +0200
2456++++ gdm-2.30.4/gui/simple-chooser/gdm-chooser-session.c 2010-06-30 12:30:03.000000000 +0200
2457+@@ -131,7 +131,7 @@
2458+ ret = FALSE;
2459+
2460+ error = NULL;
2461+- g_spawn_command_line_async (LIBEXECDIR "/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-chooser/settings-manager-plugins", &error);
2462++ g_spawn_command_line_async ("/usr/lib/gnome-settings-daemon/gnome-settings-daemon --gconf-prefix=/apps/gdm/simple-chooser/settings-manager-plugins", &error);
2463+ if (error != NULL) {
2464+ g_warning ("Error starting settings daemon: %s", error->message);
2465+ g_error_free (error);
2466
2467=== added file 'debian/patches/05_initial_server_on_vt7.patch'
2468--- debian/patches/05_initial_server_on_vt7.patch 1970-01-01 00:00:00 +0000
2469+++ debian/patches/05_initial_server_on_vt7.patch 2011-03-10 14:39:08 +0000
2470@@ -0,0 +1,38 @@
2471+Description: Force initial X server to go to tty7 instead of tty1. This is an Ugly Hack until we have a cleaner solution for getty not to tramp over a running X server on vt1.
2472+Author: Martin Pitt <martin.pitt@ubuntu.com>
2473+Bug-Ubuntu: https://launchpad.net/bugs/396226
2474+
2475+Index: gdm-2.30.4/daemon/gdm-server.c
2476+===================================================================
2477+--- gdm-2.30.4.orig/daemon/gdm-server.c 2010-06-30 12:30:03.000000000 +0200
2478++++ gdm-2.30.4/daemon/gdm-server.c 2010-06-30 12:30:07.000000000 +0200
2479+@@ -640,6 +640,13 @@
2480+ g_debug ("GdmServer: Starting X server process: %s", freeme);
2481+ g_free (freeme);
2482+
2483++ /* write a stamp file, so that the first startup of the server can be
2484++ * special-cased (initial server needs to go on vt7, since 1 to 6
2485++ * usually get gettys after gdm startup, which interfere with X) */
2486++ int f = open ("/var/run/gdm/firstserver.stamp", O_CREAT|O_WRONLY|O_EXCL, 0666);
2487++ if (f >= 0)
2488++ close (f);
2489++
2490+ error = NULL;
2491+ ret = g_spawn_async_with_pipes (NULL,
2492+ argv,
2493+@@ -684,9 +691,14 @@
2494+ gdm_server_start (GdmServer *server)
2495+ {
2496+ gboolean res;
2497++ int firstserver;
2498++
2499++ /* HACK: force initial server to go on vt7, since 1 to 6 usually get
2500++ * gettys after gdm startup, which interfere with X */
2501++ firstserver = access ("/var/run/gdm/firstserver.stamp", F_OK) < 0;
2502+
2503+ /* fork X server process */
2504+- res = gdm_server_spawn (server, NULL);
2505++ res = gdm_server_spawn (server, firstserver ? "vt7" : NULL);
2506+
2507+ return res;
2508+ }
2509
2510=== added file 'debian/patches/06_run_xsession.d.patch'
2511--- debian/patches/06_run_xsession.d.patch 1970-01-01 00:00:00 +0000
2512+++ debian/patches/06_run_xsession.d.patch 2011-03-10 14:39:08 +0000
2513@@ -0,0 +1,28 @@
2514+Description: Run /etc/X11/Xsession.d/.
2515+Author: Martin Pitt <martin.pitt@ubuntu.com>
2516+Origin: Ubuntu; /etc/X11/Xsession.d is a Debianism/Ubuntuism
2517+
2518+Index: gdm-2.32.0/data/Xsession.in
2519+===================================================================
2520+--- gdm-2.32.0.orig/data/Xsession.in 2010-08-27 23:45:29.000000000 +0200
2521++++ gdm-2.32.0/data/Xsession.in 2010-12-07 15:10:12.177502001 +0100
2522+@@ -162,6 +162,19 @@
2523+ done
2524+ fi
2525+
2526++# run /etc/X11/Xsession.d/
2527++OPTIONFILE=/etc/X11/Xsession.options
2528++USERXSESSION=$HOME/.xsession
2529++USERXSESSIONRC=$HOME/.xsessionrc
2530++ALTUSERXSESSION=$HOME/.Xsession
2531++if [ -d /etc/X11/Xsession.d ]; then
2532++ for i in `ls /etc/X11/Xsession.d/` ; do
2533++ if [ -r "/etc/X11/Xsession.d/$i" -a -f "/etc/X11/Xsession.d/$i" ] && expr "$i" : '^[[:alnum:]_-]\+$' > /dev/null; then
2534++ . "/etc/X11/Xsession.d/$i"
2535++ fi
2536++ done
2537++fi
2538++
2539+ if [ "x$command" = "xcustom" ] ; then
2540+ if [ -x "$HOME/.xsession" ]; then
2541+ command="$HOME/.xsession"
2542
2543=== added file 'debian/patches/08_use_polkit_for_settings.patch'
2544--- debian/patches/08_use_polkit_for_settings.patch 1970-01-01 00:00:00 +0000
2545+++ debian/patches/08_use_polkit_for_settings.patch 2011-03-10 14:39:08 +0000
2546@@ -0,0 +1,337 @@
2547+Description: Add PolicyKit support to GDM settings D-Bus interface
2548+Bug: http://bugzilla.gnome.org/show_bug.cgi?id=587750
2549+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/395299
2550+
2551+Index: gdm-2.32.0/common/gdm-settings.c
2552+===================================================================
2553+--- gdm-2.32.0.orig/common/gdm-settings.c 2010-08-27 16:54:37.000000000 +0200
2554++++ gdm-2.32.0/common/gdm-settings.c 2010-12-07 15:34:08.167502002 +0100
2555+@@ -36,6 +36,7 @@
2556+ #define DBUS_API_SUBJECT_TO_CHANGE
2557+ #include <dbus/dbus-glib.h>
2558+ #include <dbus/dbus-glib-lowlevel.h>
2559++#include <polkit/polkit.h>
2560+
2561+ #include "gdm-settings.h"
2562+ #include "gdm-settings-glue.h"
2563+@@ -110,6 +111,90 @@
2564+ return res;
2565+ }
2566+
2567++static void
2568++unlock_auth_cb (PolkitAuthority *authority,
2569++ GAsyncResult *result,
2570++ DBusGMethodInvocation *context)
2571++{
2572++ PolkitAuthorizationResult *auth_result;
2573++ GError *error = NULL;
2574++
2575++ auth_result = polkit_authority_check_authorization_finish (authority, result, &error);
2576++
2577++ if (!auth_result)
2578++ dbus_g_method_return_error (context, error);
2579++ else {
2580++ dbus_g_method_return (context,
2581++ polkit_authorization_result_get_is_authorized (auth_result));
2582++ }
2583++
2584++ if (auth_result)
2585++ g_object_unref (auth_result);
2586++ if (error)
2587++ g_error_free (error);
2588++}
2589++
2590++gboolean
2591++gdm_settings_unlock (GdmSettings *settings,
2592++ DBusGMethodInvocation *context)
2593++{
2594++ polkit_authority_check_authorization (polkit_authority_get (),
2595++ polkit_system_bus_name_new (dbus_g_method_get_sender (context)),
2596++ "org.gnome.displaymanager.settings.write",
2597++ NULL,
2598++ POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
2599++ NULL,
2600++ (GAsyncReadyCallback) unlock_auth_cb,
2601++ context);
2602++}
2603++
2604++typedef struct
2605++{
2606++ GdmSettings *settings;
2607++ DBusGMethodInvocation *context;
2608++ gchar *key, *value;
2609++} SetValueData;
2610++
2611++static void
2612++set_value_auth_cb (PolkitAuthority *authority,
2613++ GAsyncResult *result,
2614++ SetValueData *data)
2615++{
2616++ PolkitAuthorizationResult *auth_result;
2617++ GError *error = NULL;
2618++
2619++ auth_result = polkit_authority_check_authorization_finish (authority, result, &error);
2620++
2621++ if (!auth_result)
2622++ dbus_g_method_return_error (data->context, error);
2623++ else {
2624++ if (polkit_authorization_result_get_is_authorized (auth_result)) {
2625++ gboolean result;
2626++
2627++ result = gdm_settings_backend_set_value (data->settings->priv->backend,
2628++ data->key,
2629++ data->value,
2630++ &error);
2631++ if (result)
2632++ dbus_g_method_return (data->context);
2633++ else
2634++ dbus_g_method_return_error (data->context, error);
2635++ }
2636++ else {
2637++ error = g_error_new (DBUS_GERROR_REMOTE_EXCEPTION, 0, "Not authorized");
2638++ dbus_g_method_return_error (data->context, error);
2639++ }
2640++ }
2641++
2642++ if (auth_result)
2643++ g_object_unref (auth_result);
2644++ if (error)
2645++ g_error_free (error);
2646++ g_free (data->key);
2647++ g_free (data->value);
2648++ g_free (data);
2649++}
2650++
2651+ /*
2652+ dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.SetValue string:"xdmcp/Enable" string:"false"
2653+ */
2654+@@ -118,26 +203,30 @@
2655+ gdm_settings_set_value (GdmSettings *settings,
2656+ const char *key,
2657+ const char *value,
2658+- GError **error)
2659++ DBusGMethodInvocation *context)
2660+ {
2661+- GError *local_error;
2662+- gboolean res;
2663+-
2664++ SetValueData *data;
2665++
2666+ g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
2667+ g_return_val_if_fail (key != NULL, FALSE);
2668+
2669+ g_debug ("Setting value %s", key);
2670+-
2671+- local_error = NULL;
2672+- res = gdm_settings_backend_set_value (settings->priv->backend,
2673+- key,
2674+- value,
2675+- &local_error);
2676+- if (! res) {
2677+- g_propagate_error (error, local_error);
2678+- }
2679+-
2680+- return res;
2681++
2682++ /* Authorize with PolicyKit */
2683++ data = g_malloc (sizeof(SetValueData));
2684++ data->settings = settings;
2685++ data->context = context;
2686++ data->key = g_strdup(key);
2687++ data->value = g_strdup(value);
2688++ polkit_authority_check_authorization (polkit_authority_get (),
2689++ polkit_system_bus_name_new (dbus_g_method_get_sender (context)),
2690++ "org.gnome.displaymanager.settings.write",
2691++ NULL,
2692++ POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
2693++ NULL,
2694++ (GAsyncReadyCallback) set_value_auth_cb,
2695++ data);
2696++ return TRUE;
2697+ }
2698+
2699+ static gboolean
2700+Index: gdm-2.32.0/common/gdm-settings.h
2701+===================================================================
2702+--- gdm-2.32.0.orig/common/gdm-settings.h 2010-08-27 16:54:37.000000000 +0200
2703++++ gdm-2.32.0/common/gdm-settings.h 2010-12-07 15:34:08.177502002 +0100
2704+@@ -23,6 +23,7 @@
2705+ #define __GDM_SETTINGS_H
2706+
2707+ #include <glib-object.h>
2708++#include <dbus/dbus-glib.h>
2709+
2710+ G_BEGIN_DECLS
2711+
2712+@@ -70,10 +71,12 @@
2713+ const char *key,
2714+ char **value,
2715+ GError **error);
2716++gboolean gdm_settings_unlock (GdmSettings *settings,
2717++ DBusGMethodInvocation *context);
2718+ gboolean gdm_settings_set_value (GdmSettings *settings,
2719+ const char *key,
2720+ const char *value,
2721+- GError **error);
2722++ DBusGMethodInvocation *context);
2723+
2724+ G_END_DECLS
2725+
2726+Index: gdm-2.32.0/common/gdm-settings.xml
2727+===================================================================
2728+--- gdm-2.32.0.orig/common/gdm-settings.xml 2010-08-27 16:54:37.000000000 +0200
2729++++ gdm-2.32.0/common/gdm-settings.xml 2010-12-07 15:34:08.177502002 +0100
2730+@@ -5,7 +5,12 @@
2731+ <arg name="key" direction="in" type="s"/>
2732+ <arg name="value" direction="out" type="s"/>
2733+ </method>
2734++ <method name="Unlock">
2735++ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
2736++ <arg name="is_unlocked" direction="out" type="b"/>
2737++ </method>
2738+ <method name="SetValue">
2739++ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
2740+ <arg name="key" direction="in" type="s"/>
2741+ <arg name="value" direction="in" type="s"/>
2742+ </method>
2743+Index: gdm-2.32.0/configure.ac
2744+===================================================================
2745+--- gdm-2.32.0.orig/configure.ac 2010-12-07 15:34:08.047502002 +0100
2746++++ gdm-2.32.0/configure.ac 2010-12-07 15:34:08.177502002 +0100
2747+@@ -40,6 +40,7 @@
2748+ dnl ---------------------------------------------------------------------------
2749+
2750+ DBUS_GLIB_REQUIRED_VERSION=0.74
2751++POLKIT_GOBJECT_REQUIRED_VERSION=0.92
2752+ GLIB_REQUIRED_VERSION=2.22.0
2753+ GTK_REQUIRED_VERSION=2.20.0
2754+ PANGO_REQUIRED_VERSION=1.3.0
2755+@@ -60,6 +61,7 @@
2756+
2757+ PKG_CHECK_MODULES(COMMON,
2758+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
2759++ polkit-gobject-1 >= $POLKIT_GOBJECT_REQUIRED_VERSION
2760+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
2761+ gio-2.0 >= $GLIB_REQUIRED_VERSION
2762+ )
2763+@@ -68,6 +70,7 @@
2764+
2765+ PKG_CHECK_MODULES(DAEMON,
2766+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
2767++ polkit-gobject-1 >= $POLKIT_GOBJECT_REQUIRED_VERSION
2768+ gobject-2.0 >= $GLIB_REQUIRED_VERSION
2769+ gio-2.0 >= $GLIB_REQUIRED_VERSION
2770+ )
2771+Index: gdm-2.32.0/data/gdm.conf.in
2772+===================================================================
2773+--- gdm-2.32.0.orig/data/gdm.conf.in 2010-09-15 20:58:11.000000000 +0200
2774++++ gdm-2.32.0/data/gdm.conf.in 2010-12-07 15:34:08.177502002 +0100
2775+@@ -34,8 +34,6 @@
2776+ <deny send_destination="org.gnome.DisplayManager"
2777+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"/>
2778+ <deny send_destination="org.gnome.DisplayManager"
2779+- send_interface="org.gnome.DisplayManager.Settings"/>
2780+- <deny send_destination="org.gnome.DisplayManager"
2781+ send_interface="org.gnome.DisplayManager.Slave"/>
2782+ <deny send_destination="org.gnome.DisplayManager"
2783+ send_interface="org.gnome.DisplayManager.Session"/>
2784+@@ -44,6 +42,10 @@
2785+ <allow send_destination="org.gnome.DisplayManager"
2786+ send_interface="org.freedesktop.DBus.Introspectable"/>
2787+
2788++ <!-- Controlled by PolicyKit -->
2789++ <allow send_destination="org.gnome.DisplayManager"
2790++ send_interface="org.gnome.DisplayManager.Settings"/>
2791++
2792+ <allow send_destination="org.gnome.DisplayManager"
2793+ send_interface="org.gnome.DisplayManager.Display"
2794+ send_member="GetId"/>
2795+Index: gdm-2.32.0/data/gdm.policy.in
2796+===================================================================
2797+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
2798++++ gdm-2.32.0/data/gdm.policy.in 2010-12-07 15:34:08.000000000 +0100
2799+@@ -0,0 +1,18 @@
2800++<?xml version="1.0" encoding="UTF-8"?>
2801++<!DOCTYPE policyconfig PUBLIC
2802++ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
2803++ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
2804++<policyconfig>
2805++ <vendor>The GNOME Project</vendor>
2806++ <vendor_url>http://www.gnome.org/</vendor_url>
2807++ <icon_name>gdm</icon_name>
2808++
2809++ <action id="org.gnome.displaymanager.settings.write">
2810++ <_description>Change login screen configuration</_description>
2811++ <_message>Privileges are required to change the login screen configuration.</_message>
2812++ <defaults>
2813++ <allow_inactive>no</allow_inactive>
2814++ <allow_active>auth_admin_keep</allow_active>
2815++ </defaults>
2816++ </action>
2817++</policyconfig>
2818+Index: gdm-2.32.0/data/Makefile.am
2819+===================================================================
2820+--- gdm-2.32.0.orig/data/Makefile.am 2010-09-16 01:44:56.000000000 +0200
2821++++ gdm-2.32.0/data/Makefile.am 2010-12-07 15:34:08.177502002 +0100
2822+@@ -46,6 +46,8 @@
2823+ schemas_in_files = gdm.schemas.in
2824+ schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
2825+
2826++@INTLTOOL_POLICY_RULE@
2827++
2828+ gdm.schemas.in: $(srcdir)/gdm.schemas.in.in
2829+ sed -e 's,[@]GDMPREFETCHCMD[@],$(GDMPREFETCHCMD),g' \
2830+ -e 's,[@]GDM_CUSTOM_CONF[@],$(GDM_CUSTOM_CONF),g' \
2831+@@ -78,11 +80,18 @@
2832+ localealiasdir = $(datadir)/gdm
2833+ localealias_DATA = locale.alias
2834+
2835++polkitdir = $(datadir)/polkit-1/actions
2836++polkit_in_files = gdm.policy.in
2837++polkit_DATA = $(polkit_in_files:.policy.in=.policy)
2838++check:
2839++ $(POLKIT_POLICY_FILE_VALIDATE) $(polkit_DATA)
2840++
2841+ EXTRA_DIST = \
2842+ $(schemas_in_files) \
2843+ $(schemas_DATA) \
2844+ $(dbusconf_in_files) \
2845+ $(localealias_DATA) \
2846++ $(polkit_in_files) \
2847+ gdm.schemas.in.in \
2848+ gdm.conf-custom.in \
2849+ Xsession.in \
2850+@@ -105,7 +114,8 @@
2851+ $(NULL)
2852+
2853+ DISTCLEANFILES = \
2854+- $(dbusconf_DATA) \
2855++ $(dbusconf_DATA) \
2856++ $(polkit_DATA) \
2857+ gdm.schemas \
2858+ $(NULL)
2859+
2860+Index: gdm-2.32.0/po/POTFILES.in
2861+===================================================================
2862+--- gdm-2.32.0.orig/po/POTFILES.in 2010-09-15 20:58:11.000000000 +0200
2863++++ gdm-2.32.0/po/POTFILES.in 2010-12-07 15:34:08.177502002 +0100
2864+@@ -49,6 +49,7 @@
2865+ daemon/simple-slave-main.c
2866+ daemon/test-session.c
2867+ daemon/xdmcp-chooser-slave-main.c
2868++data/gdm.policy.in
2869+ data/gdm.schemas.in.in
2870+ data/greeter-autostart/at-spi-registryd-wrapper.desktop.in.in
2871+ data/greeter-autostart/gdm-simple-greeter.desktop.in.in
2872+Index: gdm-2.32.0/common/Makefile.am
2873+===================================================================
2874+--- gdm-2.32.0.orig/common/Makefile.am 2010-12-07 15:34:17.347502002 +0100
2875++++ gdm-2.32.0/common/Makefile.am 2010-12-07 15:34:42.007502002 +0100
2876+@@ -112,6 +112,7 @@
2877+ $(NULL)
2878+
2879+ libgdmcommon_la_LIBADD = \
2880++ $(COMMON_LIBS) \
2881+ $(NULL)
2882+
2883+ libgdmcommon_la_LDFLAGS = \
2884
2885=== added file 'debian/patches/09_gdmserver_gconf_settings.patch'
2886--- debian/patches/09_gdmserver_gconf_settings.patch 1970-01-01 00:00:00 +0000
2887+++ debian/patches/09_gdmserver_gconf_settings.patch 2011-03-10 14:39:08 +0000
2888@@ -0,0 +1,469 @@
2889+Index: gdm-2.30.4/common/gdm-settings.c
2890+===================================================================
2891+--- gdm-2.30.4.orig/common/gdm-settings.c 2010-06-30 12:35:02.000000000 +0200
2892++++ gdm-2.30.4/common/gdm-settings.c 2010-06-30 12:35:06.000000000 +0200
2893+@@ -28,6 +28,7 @@
2894+ #include <signal.h>
2895+ #include <sys/stat.h>
2896+ #include <sys/types.h>
2897++#include <pwd.h>
2898+
2899+ #include <glib.h>
2900+ #include <glib/gi18n.h>
2901+@@ -49,6 +50,9 @@
2902+ #define GDM_SETTINGS_DBUS_PATH GDM_DBUS_PATH "/Settings"
2903+ #define GDM_SETTINGS_DBUS_NAME "org.gnome.DisplayManager.Settings"
2904+
2905++#define GCONF_SOUND_EVENT_KEY "/desktop/gnome/sound/event_sounds"
2906++#define GCONF_FACE_BROWSER_DISABLE_KEY "/apps/gdm/simple-greeter/disable_user_list"
2907++
2908+ #define GDM_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SETTINGS, GdmSettingsPrivate))
2909+
2910+ struct GdmSettingsPrivate
2911+@@ -83,6 +87,190 @@
2912+ return ret;
2913+ }
2914+
2915++static void
2916++set_gdm_uid_child_setup ()
2917++{
2918++ struct passwd *pwent;
2919++ uid_t gdm_uid;
2920++ uid_t gdm_gid;
2921++
2922++ pwent = getpwnam (GDM_USERNAME);
2923++ // --shutdown take into account the resuid/resgid and HOME whereas
2924++ // --get --set take the euid/egid
2925++ setenv("HOME", pwent->pw_dir, 1);
2926++ gdm_uid = pwent->pw_uid;
2927++ gdm_gid = pwent->pw_gid;
2928++ setresgid (gdm_gid, gdm_gid, gdm_gid);
2929++ setresuid (gdm_uid, gdm_uid, gdm_uid);
2930++
2931++}
2932++
2933++static gboolean
2934++gdm_settings_get_gconf_value (gchar *gconf_key, gchar **value) {
2935++
2936++ GError *error = NULL;
2937++ char *shutdown_command[] = { "gconftool-2", "--shutdown", NULL };
2938++ char *get_command[] = { "gconftool-2", "--direct", "-g", gconf_key, "--config-source", NULL, NULL };
2939++ gboolean res;
2940++ struct passwd *pwent;
2941++ gboolean success = FALSE;
2942++
2943++ pwent = getpwnam (GDM_USERNAME);
2944++ if G_UNLIKELY (pwent == NULL)
2945++ g_warning ("Can't access to 'gdm' user name in passwd");
2946++ else {
2947++ get_command[5] = g_strdup_printf("xml:readwrite:%s/.gconf", pwent->pw_dir);
2948++ res = g_spawn_sync (NULL,
2949++ shutdown_command,
2950++ NULL,
2951++ G_SPAWN_SEARCH_PATH,
2952++ (GSpawnChildSetupFunc)set_gdm_uid_child_setup,
2953++ NULL,
2954++ NULL,
2955++ NULL,
2956++ NULL,
2957++ &error);
2958++ if (!res) {
2959++ if (error != NULL) {
2960++ g_warning ("Unable to shutdown gconf: %s", error->message);
2961++ g_error_free (error);
2962++ }
2963++ else
2964++ g_warning ("Unable to shutdown gconf: unknown error");
2965++ }
2966++ else {
2967++ res = g_spawn_sync (NULL,
2968++ get_command,
2969++ NULL,
2970++ G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
2971++ (GSpawnChildSetupFunc)set_gdm_uid_child_setup,
2972++ NULL,
2973++ value,
2974++ NULL,
2975++ NULL,
2976++ &error);
2977++ if (!res) {
2978++ if (error != NULL) {
2979++ g_warning ("Unable to get event key to gconf: %s", error->message);
2980++ g_error_free (error);
2981++ }
2982++ else
2983++ g_warning ("Unable to get event key to gconf: unknown error");
2984++ }
2985++ else {
2986++ if (error != NULL) {
2987++ g_warning ("Unable to get event key to gconf: %s", error->message);
2988++ g_error_free (error);
2989++ }
2990++ else {
2991++ g_debug ("gconftool call returning: %s", *value);
2992++ success = TRUE;
2993++ }
2994++ }
2995++ }
2996++ }
2997++
2998++ return success;
2999++}
3000++
3001++
3002++
3003++static gboolean
3004++gdm_settings_get_bool_gconf_value (gchar *gconf_key, gboolean *enabled) {
3005++
3006++ gchar *value = NULL;
3007++ gboolean result = FALSE;
3008++
3009++ if (gdm_settings_get_gconf_value(gconf_key, &value)) {
3010++ result = TRUE;
3011++ if (strstr(value, "false") != NULL)
3012++ *enabled = FALSE;
3013++ else if (strstr(value, "true") != NULL)
3014++ *enabled = TRUE;
3015++ else
3016++ result = FALSE;
3017++ }
3018++
3019++ if (value)
3020++ g_free (value);
3021++ return result;
3022++
3023++}
3024++
3025++static gboolean
3026++gdm_settings_set_gconf_value (gchar *gconf_key, gchar *type, gchar *value) {
3027++
3028++ GError *error = NULL;
3029++ char *shutdown_command[] = { "gconftool-2", "--shutdown", NULL };
3030++ char *set_command[] = { "gconftool-2", "--direct", "-s", gconf_key, "--config-source", NULL, "-t", type, value, NULL };
3031++ gboolean res;
3032++ struct passwd *pwent;
3033++ gboolean success = FALSE;
3034++
3035++ pwent = getpwnam (GDM_USERNAME);
3036++ if G_UNLIKELY (pwent == NULL)
3037++ g_warning ("Can't access to 'gdm' user name in passwd");
3038++ else {
3039++ set_command[5] = g_strdup_printf("xml:readwrite:%s/.gconf", pwent->pw_dir);
3040++ res = g_spawn_sync (NULL,
3041++ shutdown_command,
3042++ NULL,
3043++ G_SPAWN_SEARCH_PATH,
3044++ (GSpawnChildSetupFunc)set_gdm_uid_child_setup,
3045++ NULL,
3046++ NULL,
3047++ NULL,
3048++ NULL,
3049++ &error);
3050++ if (!res) {
3051++ if (error != NULL) {
3052++ g_warning ("Unable to shutdown gconf: %s", error->message);
3053++ g_error_free (error);
3054++ }
3055++ else
3056++ g_warning ("Unable to shutdown gconf: unknown error");
3057++ }
3058++ else {
3059++ res = g_spawn_async (NULL,
3060++ set_command,
3061++ NULL,
3062++ G_SPAWN_SEARCH_PATH
3063++ | G_SPAWN_STDOUT_TO_DEV_NULL
3064++ | G_SPAWN_STDERR_TO_DEV_NULL,
3065++ (GSpawnChildSetupFunc)set_gdm_uid_child_setup,
3066++ NULL,
3067++ NULL,
3068++ &error);
3069++ if (!res) {
3070++ if (error != NULL) {
3071++ g_warning ("Unable to set event key to gconf: %s", error->message);
3072++ g_error_free (error);
3073++ }
3074++ else
3075++ g_warning ("Unable to set event key to gconf: unknown error");
3076++ }
3077++ else
3078++ success = TRUE;
3079++ }
3080++ }
3081++
3082++ return success;
3083++}
3084++
3085++static gboolean
3086++gdm_settings_set_bool_gconf_value (gchar *gconf_key, gboolean enabled) {
3087++
3088++ gchar *value = g_strdup_printf ("%i", enabled);
3089++ gboolean result;
3090++
3091++ result = gdm_settings_set_gconf_value (gconf_key, "bool", value);
3092++
3093++ if (value)
3094++ g_free (value);
3095++ return result;
3096++}
3097++
3098++
3099+ /*
3100+ dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.GetValue string:"xdmcp/Enable"
3101+ */
3102+@@ -111,6 +299,51 @@
3103+ return res;
3104+ }
3105+
3106++
3107++/*
3108++dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.GetSoundEnabled
3109++*/
3110++
3111++gboolean
3112++gdm_settings_get_sound_enabled (GdmSettings *settings,
3113++ gboolean *enabled,
3114++ GError **error)
3115++{
3116++ gboolean res;
3117++ g_debug ("Trying to get sound");
3118++
3119++ g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
3120++
3121++ *enabled = FALSE;
3122++ res = gdm_settings_get_bool_gconf_value (GCONF_SOUND_EVENT_KEY, enabled);
3123++ if (res)
3124++ g_debug ("get sound returned: %i", *enabled);
3125++
3126++ return TRUE;
3127++}
3128++
3129++
3130++/*
3131++dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.GetFaceBrowserEnabled
3132++*/
3133++
3134++gboolean
3135++gdm_settings_get_face_browser_enabled (GdmSettings *settings,
3136++ gboolean *enabled,
3137++ GError **error)
3138++{
3139++ gboolean res;
3140++
3141++ g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
3142++
3143++ *enabled = TRUE;
3144++ res = gdm_settings_get_bool_gconf_value (GCONF_FACE_BROWSER_DISABLE_KEY, enabled);
3145++ if (res)
3146++ *enabled = !*enabled;
3147++
3148++ return TRUE;
3149++}
3150++
3151+ static void
3152+ unlock_auth_cb (PolkitAuthority *authority,
3153+ GAsyncResult *result,
3154+@@ -155,6 +388,12 @@
3155+ gchar *key, *value;
3156+ } SetValueData;
3157+
3158++typedef struct
3159++{
3160++ DBusGMethodInvocation *context;
3161++ gboolean enabled;
3162++} SetGConfBooleanData;
3163++
3164+ static void
3165+ set_value_auth_cb (PolkitAuthority *authority,
3166+ GAsyncResult *result,
3167+@@ -229,6 +468,129 @@
3168+ return TRUE;
3169+ }
3170+
3171++static void
3172++set_sound_enabled_auth_cb (PolkitAuthority *authority,
3173++ GAsyncResult *result,
3174++ SetGConfBooleanData *data)
3175++{
3176++ PolkitAuthorizationResult *auth_result;
3177++ GError *error = NULL;
3178++
3179++ auth_result = polkit_authority_check_authorization_finish (authority, result, &error);
3180++
3181++ if (!auth_result)
3182++ dbus_g_method_return_error (data->context, error);
3183++ else {
3184++ if (polkit_authorization_result_get_is_authorized (auth_result)) {
3185++ if (!gdm_settings_set_bool_gconf_value (GCONF_SOUND_EVENT_KEY, data->enabled))
3186++ g_warning ("set new value for sound failed");
3187++ dbus_g_method_return (data->context);
3188++ }
3189++ else {
3190++ error = g_error_new (DBUS_GERROR_REMOTE_EXCEPTION, 0, "Not authorized");
3191++ dbus_g_method_return_error (data->context, error);
3192++ }
3193++ }
3194++
3195++ if (auth_result)
3196++ g_object_unref (auth_result);
3197++ if (error)
3198++ g_error_free (error);
3199++
3200++ g_free (data);
3201++}
3202++
3203++/*
3204++dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.SetSoundEnabled boolean:false
3205++*/
3206++
3207++gboolean
3208++gdm_settings_set_sound_enabled (GdmSettings *settings,
3209++ gboolean enabled,
3210++ DBusGMethodInvocation *context)
3211++{
3212++ SetGConfBooleanData *data;
3213++
3214++ g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
3215++
3216++
3217++ g_debug ("Setting sound enabled to %s", enabled ? "true" : "false");
3218++
3219++ /* Authorize with PolicyKit */
3220++ data = g_malloc (sizeof(SetGConfBooleanData));
3221++ data->context = context;
3222++ data->enabled = enabled;
3223++ polkit_authority_check_authorization (polkit_authority_get (),
3224++ polkit_system_bus_name_new (dbus_g_method_get_sender (context)),
3225++ "org.gnome.displaymanager.settings.write",
3226++ NULL,
3227++ POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
3228++ NULL,
3229++ (GAsyncReadyCallback) set_sound_enabled_auth_cb,
3230++ data);
3231++ return TRUE;
3232++}
3233++
3234++static void
3235++set_face_browser_enabled_auth_cb (PolkitAuthority *authority,
3236++ GAsyncResult *result,
3237++ SetGConfBooleanData *data)
3238++{
3239++ PolkitAuthorizationResult *auth_result;
3240++ GError *error = NULL;
3241++
3242++ auth_result = polkit_authority_check_authorization_finish (authority, result, &error);
3243++
3244++ if (!auth_result)
3245++ dbus_g_method_return_error (data->context, error);
3246++ else {
3247++ if (polkit_authorization_result_get_is_authorized (auth_result)) {
3248++ if (!gdm_settings_set_bool_gconf_value (GCONF_FACE_BROWSER_DISABLE_KEY, !data->enabled))
3249++ g_warning ("set new value for face browser failed");
3250++ dbus_g_method_return (data->context);
3251++ }
3252++ else {
3253++ error = g_error_new (DBUS_GERROR_REMOTE_EXCEPTION, 0, "Not authorized");
3254++ dbus_g_method_return_error (data->context, error);
3255++ }
3256++ }
3257++
3258++ if (auth_result)
3259++ g_object_unref (auth_result);
3260++ if (error)
3261++ g_error_free (error);
3262++
3263++ g_free (data);
3264++}
3265++
3266++/*
3267++dbus-send --system --print-reply --dest=org.gnome.DisplayManager /org/gnome/DisplayManager/Settings org.gnome.DisplayManager.Settings.SetFaceBrowserEnabled boolean:true
3268++*/
3269++
3270++gboolean
3271++gdm_settings_set_face_browser_enabled (GdmSettings *settings,
3272++ gboolean enabled,
3273++ DBusGMethodInvocation *context)
3274++{
3275++ SetGConfBooleanData *data;
3276++
3277++ g_return_val_if_fail (GDM_IS_SETTINGS (settings), FALSE);
3278++
3279++ /* Authorize with PolicyKit */
3280++ data = g_malloc (sizeof(SetGConfBooleanData));
3281++ data->context = context;
3282++ data->enabled = enabled;
3283++ polkit_authority_check_authorization (polkit_authority_get (),
3284++ polkit_system_bus_name_new (dbus_g_method_get_sender (context)),
3285++ "org.gnome.displaymanager.settings.write",
3286++ NULL,
3287++ POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION,
3288++ NULL,
3289++ (GAsyncReadyCallback) set_face_browser_enabled_auth_cb,
3290++ data);
3291++ return TRUE;
3292++}
3293++
3294+ static gboolean
3295+ register_settings (GdmSettings *settings)
3296+ {
3297+Index: gdm-2.30.4/common/gdm-settings.h
3298+===================================================================
3299+--- gdm-2.30.4.orig/common/gdm-settings.h 2010-06-30 12:35:02.000000000 +0200
3300++++ gdm-2.30.4/common/gdm-settings.h 2010-06-30 12:35:06.000000000 +0200
3301+@@ -71,12 +71,24 @@
3302+ const char *key,
3303+ char **value,
3304+ GError **error);
3305++gboolean gdm_settings_get_sound_enabled (GdmSettings *settings,
3306++ gboolean *value,
3307++ GError **error);
3308++gboolean gdm_settings_get_face_browser_enabled (GdmSettings *settings,
3309++ gboolean *value,
3310++ GError **error);
3311+ gboolean gdm_settings_unlock (GdmSettings *settings,
3312+ DBusGMethodInvocation *context);
3313+ gboolean gdm_settings_set_value (GdmSettings *settings,
3314+ const char *key,
3315+ const char *value,
3316+ DBusGMethodInvocation *context);
3317++gboolean gdm_settings_set_sound_enabled (GdmSettings *settings,
3318++ gboolean value,
3319++ DBusGMethodInvocation *context);
3320++gboolean gdm_settings_set_face_browser_enabled (GdmSettings *settings,
3321++ gboolean value,
3322++ DBusGMethodInvocation *context);
3323+
3324+ G_END_DECLS
3325+
3326+Index: gdm-2.30.4/common/gdm-settings.xml
3327+===================================================================
3328+--- gdm-2.30.4.orig/common/gdm-settings.xml 2010-06-30 12:35:02.000000000 +0200
3329++++ gdm-2.30.4/common/gdm-settings.xml 2010-06-30 12:35:06.000000000 +0200
3330+@@ -5,6 +5,12 @@
3331+ <arg name="key" direction="in" type="s"/>
3332+ <arg name="value" direction="out" type="s"/>
3333+ </method>
3334++ <method name="GetSoundEnabled">
3335++ <arg name="enabled" direction="out" type="b"/>
3336++ </method>
3337++ <method name="GetFaceBrowserEnabled">
3338++ <arg name="enabled" direction="out" type="b"/>
3339++ </method>
3340+ <method name="Unlock">
3341+ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
3342+ <arg name="is_unlocked" direction="out" type="b"/>
3343+@@ -14,6 +20,14 @@
3344+ <arg name="key" direction="in" type="s"/>
3345+ <arg name="value" direction="in" type="s"/>
3346+ </method>
3347++ <method name="SetSoundEnabled">
3348++ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
3349++ <arg name="enabled" direction="in" type="b"/>
3350++ </method>
3351++ <method name="SetFaceBrowserEnabled">
3352++ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
3353++ <arg name="enabled" direction="in" type="b"/>
3354++ </method>
3355+ <signal name="ValueChanged">
3356+ <arg name="key" type="s"/>
3357+ <arg name="old_value" type="s"/>
3358
3359=== added file 'debian/patches/09_gdmsetup.patch'
3360--- debian/patches/09_gdmsetup.patch 1970-01-01 00:00:00 +0000
3361+++ debian/patches/09_gdmsetup.patch 2011-03-10 14:39:08 +0000
3362@@ -0,0 +1,4549 @@
3363+Description: Add GDM Setup
3364+Bug: http://bugzilla.gnome.org/show_bug.cgi?id=587750
3365+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/395299
3366+
3367+Index: gdm-2.30.5/configure.ac
3368+===================================================================
3369+--- gdm-2.30.5.orig/configure.ac 2010-08-17 22:19:05.000000000 +0200
3370++++ gdm-2.30.5/configure.ac 2010-08-17 22:19:18.000000000 +0200
3371+@@ -118,6 +118,14 @@
3372+ AC_SUBST(UPOWER_CFLAGS)
3373+ AC_SUBST(UPOWER_LIBS)
3374+
3375++PKG_CHECK_MODULES(GDMSETUP,
3376++ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
3377++ gtk+-2.0 >= $GTK_REQUIRED_VERSION
3378++ gmodule-2.0
3379++)
3380++AC_SUBST(GDMSETUP_CFLAGS)
3381++AC_SUBST(GDMSETUP_LIBS)
3382++
3383+ PKG_CHECK_MODULES(SIMPLE_GREETER,
3384+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
3385+ gtk+-2.0 >= $GTK_REQUIRED_VERSION
3386+@@ -1399,6 +1407,7 @@
3387+ daemon/Makefile
3388+ docs/Makefile
3389+ gui/Makefile
3390++gui/gdmsetup/Makefile
3391+ gui/simple-greeter/Makefile
3392+ gui/simple-greeter/libnotificationarea/Makefile
3393+ gui/simple-chooser/Makefile
3394+Index: gdm-2.30.5/gui/gdmsetup/gdm-sessions.c
3395+===================================================================
3396+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3397++++ gdm-2.30.5/gui/gdmsetup/gdm-sessions.c 2010-08-17 22:19:05.000000000 +0200
3398+@@ -0,0 +1,265 @@
3399++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
3400++ *
3401++ * Copyright 2008 Red Hat, Inc,
3402++ * 2007 William Jon McCann <mccann@jhu.edu>
3403++ *
3404++ * This program is free software; you can redistribute it and/or modify
3405++ * it under the terms of the GNU General Public License as published by
3406++ * the Free Software Foundation; either version 2 of the License, or
3407++ * (at your option) any later version.
3408++ *
3409++ * This program is distributed in the hope that it will be useful,
3410++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3411++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3412++ * GNU General Public License for more details.
3413++ *
3414++ * You should have received a copy of the GNU General Public License
3415++ * along with this program; if not, write to the Free Software
3416++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
3417++ *
3418++ * Written by : William Jon McCann <mccann@jhu.edu>
3419++ * Ray Strode <rstrode@redhat.com>
3420++ */
3421++
3422++#include "config.h"
3423++
3424++#include <stdlib.h>
3425++#include <stdio.h>
3426++#include <unistd.h>
3427++#include <string.h>
3428++#include <errno.h>
3429++#include <dirent.h>
3430++#include <sys/stat.h>
3431++
3432++#include <glib.h>
3433++#include <glib/gi18n.h>
3434++#include <glib/gstdio.h>
3435++
3436++#include "gdm-sessions.h"
3437++
3438++typedef struct _GdmSessionFile {
3439++ char *id;
3440++ char *path;
3441++ char *translated_name;
3442++ char *translated_comment;
3443++} GdmSessionFile;
3444++
3445++static GHashTable *gdm_available_sessions_map;
3446++
3447++static gboolean gdm_sessions_map_is_initialized = FALSE;
3448++
3449++/* adapted from gnome-menus desktop-entries.c */
3450++static gboolean
3451++key_file_is_relevant (GKeyFile *key_file)
3452++{
3453++ GError *error;
3454++ gboolean no_display;
3455++ gboolean hidden;
3456++ gboolean tryexec_failed;
3457++ char *tryexec;
3458++
3459++ error = NULL;
3460++ no_display = g_key_file_get_boolean (key_file,
3461++ G_KEY_FILE_DESKTOP_GROUP,
3462++ "NoDisplay",
3463++ &error);
3464++ if (error) {
3465++ no_display = FALSE;
3466++ g_error_free (error);
3467++ }
3468++
3469++ error = NULL;
3470++ hidden = g_key_file_get_boolean (key_file,
3471++ G_KEY_FILE_DESKTOP_GROUP,
3472++ "Hidden",
3473++ &error);
3474++ if (error) {
3475++ hidden = FALSE;
3476++ g_error_free (error);
3477++ }
3478++
3479++ tryexec_failed = FALSE;
3480++ tryexec = g_key_file_get_string (key_file,
3481++ G_KEY_FILE_DESKTOP_GROUP,
3482++ "TryExec",
3483++ NULL);
3484++ if (tryexec) {
3485++ char *path;
3486++
3487++ path = g_find_program_in_path (g_strstrip (tryexec));
3488++
3489++ tryexec_failed = (path == NULL);
3490++
3491++ g_free (path);
3492++ g_free (tryexec);
3493++ }
3494++
3495++ if (no_display || hidden || tryexec_failed) {
3496++ return FALSE;
3497++ }
3498++
3499++ return TRUE;
3500++}
3501++
3502++static void
3503++load_session_file (const char *id,
3504++ const char *path)
3505++{
3506++ GKeyFile *key_file;
3507++ GError *error;
3508++ gboolean res;
3509++ GdmSessionFile *session;
3510++
3511++ key_file = g_key_file_new ();
3512++
3513++ error = NULL;
3514++ res = g_key_file_load_from_file (key_file, path, 0, &error);
3515++
3516++ if (!res) {
3517++ g_debug ("Failed to load \"%s\": %s\n", path, error->message);
3518++ g_error_free (error);
3519++ goto out;
3520++ }
3521++
3522++ if (! g_key_file_has_group (key_file, G_KEY_FILE_DESKTOP_GROUP)) {
3523++ goto out;
3524++ }
3525++
3526++ res = g_key_file_has_key (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL);
3527++ if (! res) {
3528++ g_debug ("\"%s\" contains no \"Name\" key\n", path);
3529++ goto out;
3530++ }
3531++
3532++ if (!key_file_is_relevant (key_file)) {
3533++ g_debug ("\"%s\" is hidden or contains non-executable TryExec program\n", path);
3534++ goto out;
3535++ }
3536++
3537++ session = g_new0 (GdmSessionFile, 1);
3538++
3539++ session->id = g_strdup (id);
3540++ session->path = g_strdup (path);
3541++
3542++ session->translated_name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL, NULL);
3543++ session->translated_comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Comment", NULL, NULL);
3544++
3545++ g_hash_table_insert (gdm_available_sessions_map,
3546++ g_strdup (id),
3547++ session);
3548++ out:
3549++ g_key_file_free (key_file);
3550++}
3551++
3552++static void
3553++collect_sessions_from_directory (const char *dirname)
3554++{
3555++ GDir *dir;
3556++ const char *filename;
3557++
3558++ /* FIXME: add file monitor to directory */
3559++
3560++ dir = g_dir_open (dirname, 0, NULL);
3561++ if (dir == NULL) {
3562++ return;
3563++ }
3564++
3565++ while ((filename = g_dir_read_name (dir))) {
3566++ char *id;
3567++ char *full_path;
3568++
3569++ if (! g_str_has_suffix (filename, ".desktop")) {
3570++ continue;
3571++ }
3572++ id = g_strndup (filename, strlen (filename) - strlen (".desktop"));
3573++
3574++ full_path = g_build_filename (dirname, filename, NULL);
3575++
3576++ load_session_file (id, full_path);
3577++
3578++ g_free (id);
3579++ g_free (full_path);
3580++ }
3581++
3582++ g_dir_close (dir);
3583++}
3584++
3585++static void
3586++collect_sessions (void)
3587++{
3588++ int i;
3589++ const char *search_dirs[] = {
3590++ "/etc/X11/sessions/",
3591++ DMCONFDIR "/Sessions/",
3592++ DATADIR "/gdm/BuiltInSessions/",
3593++ DATADIR "/xsessions/",
3594++ NULL
3595++ };
3596++
3597++ if (gdm_available_sessions_map == NULL) {
3598++ gdm_available_sessions_map = g_hash_table_new_full (g_str_hash, g_str_equal,
3599++ g_free, g_free);
3600++ }
3601++
3602++ for (i = 0; search_dirs [i] != NULL; i++) {
3603++ collect_sessions_from_directory (search_dirs [i]);
3604++ }
3605++}
3606++
3607++char **
3608++gdm_get_all_sessions (void)
3609++{
3610++ GHashTableIter iter;
3611++ gpointer key, value;
3612++ GPtrArray *array;
3613++
3614++ if (!gdm_sessions_map_is_initialized) {
3615++ collect_sessions ();
3616++
3617++ gdm_sessions_map_is_initialized = TRUE;
3618++ }
3619++
3620++ array = g_ptr_array_new ();
3621++ g_hash_table_iter_init (&iter, gdm_available_sessions_map);
3622++ while (g_hash_table_iter_next (&iter, &key, &value)) {
3623++ GdmSessionFile *session;
3624++
3625++ session = (GdmSessionFile *) value;
3626++
3627++ g_ptr_array_add (array, g_strdup (session->id));
3628++ }
3629++ g_ptr_array_add (array, NULL);
3630++
3631++ return (char **) g_ptr_array_free (array, FALSE);
3632++}
3633++
3634++gboolean
3635++gdm_get_details_for_session (const char *id,
3636++ char **name,
3637++ char **comment)
3638++{
3639++ GdmSessionFile *session;
3640++
3641++ if (!gdm_sessions_map_is_initialized) {
3642++ collect_sessions ();
3643++
3644++ gdm_sessions_map_is_initialized = TRUE;
3645++ }
3646++
3647++ session = (GdmSessionFile *) g_hash_table_lookup (gdm_available_sessions_map,
3648++ id);
3649++
3650++ if (session == NULL) {
3651++ return FALSE;
3652++ }
3653++
3654++ if (name != NULL) {
3655++ *name = g_strdup (session->translated_name);
3656++ }
3657++
3658++ if (comment != NULL) {
3659++ *comment = g_strdup (session->translated_comment);
3660++ }
3661++
3662++ return TRUE;
3663++}
3664+Index: gdm-2.30.5/gui/gdmsetup/gdm-sessions.h
3665+===================================================================
3666+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3667++++ gdm-2.30.5/gui/gdmsetup/gdm-sessions.h 2010-08-17 22:19:05.000000000 +0200
3668+@@ -0,0 +1,38 @@
3669++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
3670++ *
3671++ * Copyright 2008 Red Hat, Inc.
3672++ * Copyright 2007 William Jon McCann <mccann@jhu.edu>
3673++ *
3674++ * This program is free software; you can redistribute it and/or modify
3675++ * it under the terms of the GNU General Public License as published by
3676++ * the Free Software Foundation; either version 2 of the License, or
3677++ * (at your option) any later version.
3678++ *
3679++ * This program is distributed in the hope that it will be useful,
3680++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
3681++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3682++ * GNU General Public License for more details.
3683++ *
3684++ * You should have received a copy of the GNU General Public License
3685++ * along with this program; if not, write to the Free Software
3686++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
3687++ *
3688++ * Written by: Ray Strode
3689++ * William Jon McCann
3690++ */
3691++
3692++#ifndef __GDM_SESSIONS_H
3693++#define __GDM_SESSIONS_H
3694++
3695++#include <glib.h>
3696++
3697++G_BEGIN_DECLS
3698++
3699++char ** gdm_get_all_sessions (void);
3700++gboolean gdm_get_details_for_session (const char *id,
3701++ char **name,
3702++ char **comment);
3703++
3704++G_END_DECLS
3705++
3706++#endif /* __GDM_SESSION_H */
3707+Index: gdm-2.30.5/gui/gdmsetup/gdmsetup.c
3708+===================================================================
3709+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
3710++++ gdm-2.30.5/gui/gdmsetup/gdmsetup.c 2010-08-17 22:19:05.000000000 +0200
3711+@@ -0,0 +1,717 @@
3712++#ifdef HAVE_CONFIG_H
3713++#include "config.h"
3714++#endif
3715++
3716++#include <string.h>
3717++#include <stdlib.h>
3718++#include <gtk/gtk.h>
3719++#include <gdk/gdkkeysyms.h>
3720++#include <dbus/dbus-glib.h>
3721++#include <glib/gi18n.h>
3722++
3723++#include "gdm-user-manager.h"
3724++#include "gdm-sessions.h"
3725++
3726++#define MAX_USERS_IN_COMBO_BOX 20
3727++
3728++/* User interface */
3729++static GtkBuilder *ui;
3730++static GtkWidget *dialog, *unlock_button, *option_vbox;
3731++static GtkWidget *user_combo, *user_entry, *delay_spin;
3732++static GtkWidget *session_combo;
3733++static GtkWidget *auto_login_radio, *login_delay_box, *login_delay_check, *sound_enable_check, *face_browser_enable_check;
3734++
3735++/* Timer to delay application of configuration */
3736++static guint apply_timeout = 0;
3737++
3738++/* Flag to show when information is user_login_loaded */
3739++static gboolean user_login_loaded = FALSE;
3740++static gboolean session_loaded = FALSE;
3741++
3742++/* Flag to show when information is loaded */
3743++static gboolean locked = TRUE;
3744++
3745++/* True if the user selection method is a combo box, False if an entry */
3746++static gboolean user_list_is_combo = TRUE;
3747++
3748++/* User information */
3749++static GdmUserManager *user_manager;
3750++
3751++/* Proxy to GDM settings */
3752++static DBusGProxy *proxy = NULL;
3753++
3754++
3755++static gboolean
3756++get_sound_enabled ()
3757++{
3758++ gboolean value;
3759++ GError *error = NULL;
3760++
3761++ if (!dbus_g_proxy_call (proxy, "GetSoundEnabled", &error,
3762++ G_TYPE_INVALID,
3763++ G_TYPE_BOOLEAN, &value, G_TYPE_INVALID)) {
3764++ g_warning ("Error calling GetSoundEnabled(): %s", error->message);
3765++ return FALSE;
3766++ }
3767++
3768++ return value;
3769++}
3770++
3771++
3772++static gboolean
3773++set_sound_enabled (gboolean enabled)
3774++{
3775++ GError *error = NULL;
3776++
3777++ dbus_g_proxy_call (proxy, "SetSoundEnabled", &error,
3778++ G_TYPE_BOOLEAN, enabled, G_TYPE_INVALID,
3779++ G_TYPE_INVALID);
3780++ if (error) {
3781++ g_warning ("Error calling SetSoundEnabled(%s): %s", enabled ? "TRUE" : "FALSE", error->message);
3782++ return FALSE;
3783++ }
3784++
3785++ return TRUE;
3786++}
3787++
3788++
3789++static gboolean
3790++get_face_browser_enabled ()
3791++{
3792++ gboolean value;
3793++ GError *error = NULL;
3794++
3795++ if (!dbus_g_proxy_call (proxy, "GetFaceBrowserEnabled", &error,
3796++ G_TYPE_INVALID,
3797++ G_TYPE_BOOLEAN, &value, G_TYPE_INVALID)) {
3798++ g_warning ("Error calling GetFaceBrowserEnabled(): %s", error->message);
3799++ return FALSE;
3800++ }
3801++
3802++ return value;
3803++}
3804++
3805++
3806++static gboolean
3807++set_face_browser_enabled (gboolean enabled)
3808++{
3809++ GError *error = NULL;
3810++
3811++ dbus_g_proxy_call (proxy, "SetFaceBrowserEnabled", &error,
3812++ G_TYPE_BOOLEAN, enabled, G_TYPE_INVALID,
3813++ G_TYPE_INVALID);
3814++ if (error) {
3815++ g_warning ("Error calling SetFaceBrowserEnabled(%s): %s", enabled ? "TRUE" : "FALSE", error->message);
3816++ return FALSE;
3817++ }
3818++
3819++ return TRUE;
3820++}
3821++
3822++
3823++static gchar *
3824++get_value (const gchar *key, gchar *def)
3825++{
3826++ gchar *value;
3827++ GError *error = NULL;
3828++
3829++ if (!dbus_g_proxy_call (proxy, "GetValue", &error,
3830++ G_TYPE_STRING, key, G_TYPE_INVALID,
3831++ G_TYPE_STRING, &value, G_TYPE_INVALID)) {
3832++ g_warning ("Error calling GetValue('%s'): %s", key, error->message);
3833++ return def;
3834++ }
3835++
3836++ return value;
3837++}
3838++
3839++
3840++static gboolean
3841++set_value (const gchar *key, const gchar *value)
3842++{
3843++ GError *error = NULL;
3844++
3845++ dbus_g_proxy_call (proxy, "SetValue", &error,
3846++ G_TYPE_STRING, key,
3847++ G_TYPE_STRING, value, G_TYPE_INVALID, G_TYPE_INVALID);
3848++ if (error) {
3849++ g_warning ("Error calling SetValue('%s', '%s'): %s", key, value, error->message);
3850++ return FALSE;
3851++ }
3852++
3853++ return TRUE;
3854++}
3855++
3856++
3857++static gboolean
3858++get_boolean_value (const gchar *key, gboolean def)
3859++{
3860++ gchar *value;
3861++ gboolean result;
3862++
3863++ value = get_value (key, NULL);
3864++ if (!value)
3865++ return def;
3866++ result = strcmp (value, "true") == 0;
3867++ g_free (value);
3868++ return result;
3869++}
3870++
3871++
3872++static gint
3873++get_integer_value (const gchar *key, gint def)
3874++{
3875++ gchar *value;
3876++ gint result;
3877++ char *end;
3878++
3879++ value = get_value (key, NULL);
3880++ if (!value || value[0] == '\0')
3881++ result = def;
3882++ else {
3883++ result = strtol (value, &end, 10);
3884++ if (*end != '\0')
3885++ result = def;
3886++ }
3887++
3888++ if (value)
3889++ g_free (value);
3890++ return result;
3891++}
3892++
3893++
3894++static gboolean
3895++set_boolean_value (const gchar *key, gboolean value)
3896++{
3897++ return set_value (key, value ? "true" : "false");
3898++}
3899++
3900++
3901++static gboolean
3902++set_integer_value (const gchar *key, gint value)
3903++{
3904++ char value_string[1024];
3905++ snprintf(value_string, 1024, "%d", value);
3906++ return set_value (key, value_string);
3907++}
3908++
3909++
3910++static void
3911++update_config ()
3912++{
3913++ GtkTreeModel *model;
3914++ GtkTreeIter iter;
3915++ gchar *user = NULL;
3916++ gint delay = 0;
3917++ gboolean auto_login = FALSE, timed_login = FALSE, error = FALSE;
3918++ gchar *default_session = NULL;
3919++
3920++ if (apply_timeout != 0) {
3921++ g_source_remove (apply_timeout);
3922++ apply_timeout = 0;
3923++ }
3924++
3925++ if (user_list_is_combo) {
3926++ model = gtk_combo_box_get_model (GTK_COMBO_BOX (user_combo));
3927++ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (user_combo), &iter))
3928++ gtk_tree_model_get (model, &iter, 1, &user, -1);
3929++ }
3930++ else
3931++ user = g_strdup (gtk_entry_get_text (GTK_ENTRY (user_entry)));
3932++
3933++ model = gtk_combo_box_get_model (GTK_COMBO_BOX (session_combo));
3934++ if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (session_combo), &iter))
3935++ gtk_tree_model_get (model, &iter, 1, &default_session, -1);
3936++
3937++ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (auto_login_radio))) {
3938++ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (login_delay_check)))
3939++ timed_login = TRUE;
3940++ else
3941++ auto_login = TRUE;
3942++ }
3943++
3944++ delay = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (delay_spin));
3945++
3946++ g_debug ("set user='%s', auto=%s, timed=%s, delay=%d, default_session=%s",
3947++ user,
3948++ auto_login ? "True" : "False",
3949++ timed_login ? "True" : "False", delay,
3950++ default_session);
3951++
3952++ if (!set_boolean_value ("daemon/TimedLoginEnable", timed_login) ||
3953++ !set_boolean_value ("daemon/AutomaticLoginEnable", auto_login) ||
3954++ !set_value ("daemon/TimedLogin", user) ||
3955++ !set_value ("daemon/AutomaticLogin", user) ||
3956++ !set_integer_value ("daemon/TimedLoginDelay", delay) ||
3957++ !set_value ("daemon/DefaultSession", default_session))
3958++ error = TRUE;
3959++
3960++ if (user)
3961++ g_free (user);
3962++}
3963++
3964++
3965++G_MODULE_EXPORT
3966++void
3967++gdm_capplet_response_cb (GtkWidget *widget, gint response_id)
3968++{
3969++ if (response_id != 1)
3970++ gtk_main_quit ();
3971++}
3972++
3973++
3974++static void
3975++unlock_response_cb (DBusGProxy *proxy,
3976++ DBusGProxyCall *call_id,
3977++ void *user_data)
3978++{
3979++ gboolean is_unlocked;
3980++ GError *error = NULL;
3981++
3982++ dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_BOOLEAN, &is_unlocked, G_TYPE_INVALID);
3983++ if (error) {
3984++ g_warning ("Failed to unlock: %s", error->message);
3985++ g_error_free (error);
3986++ return;
3987++ }
3988++
3989++ if (!is_unlocked)
3990++ return;
3991++
3992++ locked = FALSE;
3993++ gtk_widget_set_sensitive (unlock_button, FALSE);
3994++ gtk_widget_set_sensitive (option_vbox, user_login_loaded && !locked);
3995++}
3996++
3997++
3998++G_MODULE_EXPORT
3999++void
4000++unlock_button_clicked_cb (GtkWidget *widget)
4001++{
4002++ dbus_g_proxy_begin_call (proxy, "Unlock", unlock_response_cb, NULL, NULL, G_TYPE_INVALID);
4003++}
4004++
4005++
4006++G_MODULE_EXPORT
4007++void
4008++login_delay_check_toggled_cb (GtkWidget *widget)
4009++{
4010++ gtk_widget_set_sensitive (delay_spin,
4011++ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (login_delay_check)));
4012++
4013++ if (session_loaded && user_login_loaded)
4014++ update_config ();
4015++}
4016++
4017++
4018++G_MODULE_EXPORT
4019++void
4020++sound_enable_check_toggled_cb (GtkWidget *widget)
4021++{
4022++ set_sound_enabled (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
4023++}
4024++
4025++
4026++G_MODULE_EXPORT
4027++void
4028++face_browser_enable_check_toggled_cb (GtkWidget *widget)
4029++{
4030++ set_face_browser_enabled (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
4031++}
4032++
4033++
4034++static gboolean
4035++delayed_apply_cb ()
4036++{
4037++ update_config ();
4038++ return FALSE;
4039++}
4040++
4041++
4042++G_MODULE_EXPORT
4043++void
4044++apply_config_cb (GtkWidget *widget)
4045++{
4046++ if (session_loaded && user_login_loaded) {
4047++ if (apply_timeout != 0)
4048++ g_source_remove (apply_timeout);
4049++ apply_timeout = g_timeout_add (200, (GSourceFunc)delayed_apply_cb, NULL);
4050++ }
4051++}
4052++
4053++
4054++static void
4055++init_login_delay ()
4056++{
4057++ gint delay;
4058++
4059++ if (get_boolean_value ("daemon/TimedLoginEnable", FALSE))
4060++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (login_delay_check), TRUE);
4061++
4062++ delay = get_integer_value ("daemon/TimedLoginDelay", 30);
4063++
4064++ g_debug ("init delay=%d", delay);
4065++
4066++ gtk_spin_button_set_value (GTK_SPIN_BUTTON (delay_spin), delay);
4067++}
4068++
4069++
4070++G_MODULE_EXPORT
4071++void
4072++automatic_login_toggle_cb (GtkWidget *automatic_login_toggle)
4073++{
4074++ gboolean automatic_login;
4075++
4076++ automatic_login = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (automatic_login_toggle));
4077++ gtk_widget_set_sensitive (login_delay_box, automatic_login);
4078++ gtk_widget_set_sensitive (user_combo, automatic_login);
4079++ gtk_widget_set_sensitive (user_entry, automatic_login);
4080++ gtk_widget_set_sensitive (face_browser_enable_check, !automatic_login);
4081++
4082++ if (session_loaded && user_login_loaded)
4083++ update_config ();
4084++}
4085++
4086++
4087++G_MODULE_EXPORT
4088++void
4089++default_user_combo_box_changed_cb (void)
4090++{
4091++ if (session_loaded && user_login_loaded) {
4092++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (auto_login_radio), TRUE);
4093++ update_config ();
4094++ }
4095++}
4096++
4097++G_MODULE_EXPORT
4098++void
4099++default_session_combo_box_changed_cb (void)
4100++{
4101++ if (session_loaded && user_login_loaded)
4102++ update_config ();
4103++}
4104++
4105++
4106++static void
4107++init_default_user (void)
4108++{
4109++ GtkTreeModel *model;
4110++ GtkTreeIter iter;
4111++ gboolean auto_login, timed_login, active;
4112++ gchar *user = NULL;
4113++
4114++ auto_login = get_boolean_value ("daemon/AutomaticLoginEnable", FALSE);
4115++ timed_login = get_boolean_value ("daemon/TimedLoginEnable", FALSE);
4116++
4117++ if (auto_login)
4118++ user = get_value ("daemon/AutomaticLogin", NULL);
4119++ if (user == NULL)
4120++ user = get_value ("daemon/TimedLogin", NULL);
4121++
4122++ g_debug ("init user='%s' auto=%s", user, auto_login || timed_login ? "True" : "False");
4123++
4124++ if (auto_login || timed_login)
4125++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (auto_login_radio), TRUE);
4126++
4127++ if (!user_list_is_combo) {
4128++ if (user != NULL)
4129++ gtk_entry_set_text (GTK_ENTRY (user_entry), user);
4130++ }
4131++ else {
4132++ model = gtk_combo_box_get_model (GTK_COMBO_BOX (user_combo));
4133++ active = gtk_tree_model_get_iter_first (model, &iter);
4134++
4135++ /* If no user then use first available */
4136++ if (user == NULL) {
4137++ if (active)
4138++ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (user_combo), &iter);
4139++ }
4140++ else {
4141++ while (user != NULL && active) {
4142++ gchar *u;
4143++ gboolean matched;
4144++
4145++ gtk_tree_model_get (model, &iter, 1, &u, -1);
4146++ matched = strcmp (user, u) == 0;
4147++ g_free (u);
4148++ if (matched) {
4149++ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (user_combo), &iter);
4150++ break;
4151++ }
4152++
4153++ active = gtk_tree_model_iter_next (model, &iter);
4154++ }
4155++ }
4156++ }
4157++
4158++ g_free (user);
4159++}
4160++
4161++
4162++static void
4163++init_default_session (void)
4164++{
4165++ GtkTreeModel *model;
4166++ GtkTreeIter iter;
4167++ gboolean active;
4168++ gchar *default_session = NULL;
4169++
4170++ default_session = get_value ("daemon/DefaultSession", NULL);
4171++ g_debug ("Init default session found:'%s'", default_session);
4172++
4173++ model = gtk_combo_box_get_model (GTK_COMBO_BOX (session_combo));
4174++ active = gtk_tree_model_get_iter_first (model, &iter);
4175++
4176++ /* If no default session then use gnome one */
4177++ if (default_session == NULL || strlen(default_session) == 0)
4178++ default_session = g_strdup("gnome");
4179++
4180++ while (active) {
4181++ gchar *u;
4182++ gboolean matched;
4183++
4184++ gtk_tree_model_get (model, &iter, 1, &u, -1);
4185++ matched = strcmp (default_session, u) == 0;
4186++ g_free (u);
4187++ if (matched) {
4188++ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (session_combo), &iter);
4189++ break;
4190++ }
4191++
4192++ active = gtk_tree_model_iter_next (model, &iter);
4193++ }
4194++ session_loaded = TRUE;
4195++
4196++ g_free (default_session);
4197++}
4198++
4199++
4200++static void add_user (GdmUser *user)
4201++{
4202++ GtkListStore *model;
4203++ GtkTreeIter iter;
4204++ GString *label;
4205++ const gchar *home_user_dir;
4206++ gchar *encryption_path;
4207++ gchar *encryption_content;
4208++ GFile *encryption_file;
4209++ GString *encryption_mount;
4210++ gboolean using_encryption = FALSE;
4211++
4212++ /* don't enable autologin for user having encrypted home dir
4213++ there are some corner case if gdmsetup isn't run as root and another user
4214++ than the current one is using encrypted dir: you can't check for them if
4215++ they access to it. The solution is the server to refuse the change then
4216++ (too late in the cycle for such changes). */
4217++ home_user_dir = gdm_user_get_home_directory (user);
4218++ encryption_path = g_build_filename (home_user_dir, ".ecryptfs", "Private.mnt", NULL);
4219++ encryption_file = g_file_new_for_path (encryption_path);
4220++ if (g_file_load_contents (encryption_file, NULL, &encryption_content, NULL, NULL, NULL)) {
4221++ if (g_str_has_suffix (encryption_content, "\n"))
4222++ encryption_content[strlen(encryption_content)-1] = '\0';
4223++ encryption_mount = g_string_new(encryption_content);
4224++ if (strcmp (encryption_mount->str, home_user_dir) == 0)
4225++ using_encryption = TRUE;
4226++ g_string_free (encryption_mount, TRUE);
4227++ }
4228++ if (encryption_file)
4229++ g_object_unref (encryption_file);
4230++ g_free (encryption_path);
4231++
4232++ if (using_encryption) {
4233++ g_debug ("%s is using an encrypted home, not listing him for autologin", gdm_user_get_real_name (user));
4234++ return;
4235++ }
4236++
4237++ model = GTK_LIST_STORE (gtk_builder_get_object (ui, "login_user_model"));
4238++ gtk_list_store_append (model, &iter);
4239++ label = g_string_new("");
4240++ g_string_printf (label, "%s (%s)", gdm_user_get_real_name (user), gdm_user_get_user_name (user));
4241++ gtk_list_store_set (model, &iter,
4242++ 0, label->str,
4243++ 1, gdm_user_get_user_name (user),
4244++ -1);
4245++ g_string_free (label, TRUE);
4246++}
4247++
4248++
4249++static void add_session (gchar *session_id, gchar *name, gchar *comment)
4250++{
4251++ GtkListStore *model;
4252++ GtkTreeIter iter;
4253++ GString *label;
4254++
4255++ model = GTK_LIST_STORE (gtk_builder_get_object (ui, "session_model"));
4256++ gtk_list_store_append (model, &iter);
4257++ label = g_string_new("");
4258++ g_string_printf (label, "%s", name);
4259++ gtk_list_store_set (model, &iter,
4260++ 0, label->str,
4261++ 1, session_id,
4262++ -1);
4263++ g_string_free (label, TRUE);
4264++}
4265++
4266++
4267++static void
4268++users_loaded_cb(GdmUserManager *manager)
4269++{
4270++ GSList *users, *item;
4271++
4272++ users = gdm_user_manager_list_users (user_manager);
4273++
4274++ if (g_slist_length (users) > MAX_USERS_IN_COMBO_BOX) {
4275++ user_list_is_combo = FALSE;
4276++ gtk_widget_hide (user_combo);
4277++ gtk_widget_show (user_entry);
4278++ }
4279++ else {
4280++ for (item = users; item; item = item->next)
4281++ add_user ((GdmUser *) item->data);
4282++ }
4283++
4284++ init_default_user ();
4285++
4286++ user_login_loaded = TRUE;
4287++ gtk_widget_set_sensitive (option_vbox, user_login_loaded && !locked);
4288++}
4289++
4290++
4291++static void
4292++user_added_cb (GdmUserManager *manager, GdmUser *user)
4293++{
4294++ if (session_loaded && user_login_loaded)
4295++ add_user (user);
4296++}
4297++
4298++
4299++static void
4300++load_sessions_cb(void)
4301++{
4302++ gchar **session_ids;
4303++ int i;
4304++
4305++ session_ids = gdm_get_all_sessions ();
4306++
4307++ for (i = 0; session_ids[i] != NULL; i++) {
4308++ gchar *name;
4309++ gchar *comment;
4310++ if (!gdm_get_details_for_session (session_ids[i],
4311++ &name, &comment)) {
4312++ continue;
4313++ }
4314++ add_session (session_ids[i], name, comment);
4315++ g_free (name);
4316++ g_free (comment);
4317++ }
4318++ g_strfreev (session_ids);
4319++
4320++ init_default_session();
4321++}
4322++
4323++
4324++static void
4325++split_text (const gchar *text, const gchar *prefix_label_name, const gchar *suffix_label_name)
4326++{
4327++ gchar **tokens;
4328++ GtkWidget *prefix_label, *suffix_label;
4329++
4330++ prefix_label = GTK_WIDGET (gtk_builder_get_object (ui, prefix_label_name));
4331++ suffix_label = GTK_WIDGET (gtk_builder_get_object (ui, suffix_label_name));
4332++
4333++ tokens = g_strsplit (text, "%s", 2);
4334++ if (tokens[0] != NULL && tokens[1] != NULL) {
4335++ if (tokens[0][0] != '\0')
4336++ gtk_label_set_text (GTK_LABEL (prefix_label), g_strstrip (tokens[0]));
4337++ else
4338++ gtk_widget_hide (prefix_label);
4339++ if (tokens[1][0] != '\0')
4340++ gtk_label_set_text (GTK_LABEL (suffix_label), g_strstrip (tokens[1]));
4341++ else
4342++ gtk_widget_hide (suffix_label);
4343++ }
4344++ g_strfreev (tokens);
4345++}
4346++
4347++
4348++int main (int argc, char **argv)
4349++{
4350++ GtkCellRenderer *renderer;
4351++ DBusGConnection *connection;
4352++ GError *error = NULL;
4353++
4354++ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
4355++ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
4356++ textdomain (GETTEXT_PACKAGE);
4357++
4358++ gtk_init (&argc, &argv);
4359++
4360++ connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
4361++ if (error) {
4362++ g_warning ("Failed to get system bus: %s", error->message);
4363++ return 1;
4364++ }
4365++ proxy = dbus_g_proxy_new_for_name (connection,
4366++ "org.gnome.DisplayManager",
4367++ "/org/gnome/DisplayManager/Settings",
4368++ "org.gnome.DisplayManager.Settings");
4369++
4370++ ui = gtk_builder_new ();
4371++ gtk_builder_add_from_file (ui, UIDIR "/gdmsetup.ui", &error);
4372++ if (error) {
4373++ g_warning ("Failed to load UI: %s", error->message);
4374++ return 1;
4375++ }
4376++ dialog = GTK_WIDGET (gtk_builder_get_object (ui, "gdm_capplet"));
4377++ unlock_button = GTK_WIDGET (gtk_builder_get_object (ui, "unlock_button"));
4378++ option_vbox = GTK_WIDGET (gtk_builder_get_object (ui, "gdm_capplet_vbox"));
4379++ user_combo = GTK_WIDGET (gtk_builder_get_object (ui, "default_user_combo_box"));
4380++ session_combo = GTK_WIDGET (gtk_builder_get_object (ui, "default_session_combo_box"));
4381++ user_entry = GTK_WIDGET (gtk_builder_get_object (ui, "default_user_entry"));
4382++ delay_spin = GTK_WIDGET (gtk_builder_get_object (ui, "login_delay_spin"));
4383++ auto_login_radio = GTK_WIDGET (gtk_builder_get_object (ui, "automatic_login_radio"));
4384++ login_delay_box = GTK_WIDGET (gtk_builder_get_object (ui, "login_delay_box"));
4385++ login_delay_check = GTK_WIDGET (gtk_builder_get_object (ui, "login_delay_check"));
4386++ sound_enable_check = GTK_WIDGET (gtk_builder_get_object (ui, "sound_enable_check"));
4387++ face_browser_enable_check = GTK_WIDGET (gtk_builder_get_object (ui, "face_browser_enable_check"));
4388++
4389++ if (g_file_test ("/usr/share/gdm/autostart/LoginWindow/libcanberra-ready-sound.desktop", G_FILE_TEST_EXISTS))
4390++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sound_enable_check), get_sound_enabled ());
4391++ else
4392++ gtk_widget_hide (GTK_WIDGET (sound_enable_check));
4393++
4394++ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (face_browser_enable_check), get_face_browser_enabled ());
4395++
4396++ gtk_builder_connect_signals (ui, NULL);
4397++
4398++ /* Translators: Label for choosing which user to log in as. '%s' is replaced with an input field. */
4399++ split_text (_("Log in as %s automatically"), "user_prefix_label", "user_suffix_label");
4400++ /* Translators: Label for choosing the login delay. '%s' is replaced with an input field. */
4401++ split_text (_("Allow %s seconds for anyone else to log in first"), "delay_prefix_label", "delay_suffix_label");
4402++ /* Translators: Label for choosing the default session. '%s' is replaced with an input field. */
4403++ split_text (_("Select %s as default session"), "session_prefix_label", "session_suffix_label");
4404++
4405++ init_login_delay ();
4406++ load_sessions_cb();
4407++
4408++ renderer = gtk_cell_renderer_text_new ();
4409++ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (user_combo), renderer, TRUE);
4410++ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (user_combo), renderer, "text", 0);
4411++
4412++ renderer = gtk_cell_renderer_text_new ();
4413++ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (session_combo), renderer, TRUE);
4414++ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (session_combo), renderer, "text", 0);
4415++
4416++ user_manager = gdm_user_manager_ref_default ();
4417++ g_signal_connect (user_manager, "users-loaded", G_CALLBACK (users_loaded_cb), NULL);
4418++ g_signal_connect (user_manager, "user-added", G_CALLBACK (user_added_cb), NULL);
4419++
4420++ gtk_widget_hide (user_entry);
4421++
4422++ gtk_widget_set_sensitive (option_vbox, FALSE);
4423++ gtk_widget_show (dialog);
4424++
4425++ gtk_main ();
4426++
4427++ return 0;
4428++}
4429+Index: gdm-2.30.5/gui/gdmsetup/gdmsetup.desktop.in
4430+===================================================================
4431+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
4432++++ gdm-2.30.5/gui/gdmsetup/gdmsetup.desktop.in 2010-08-17 22:19:05.000000000 +0200
4433+@@ -0,0 +1,12 @@
4434++[Desktop Entry]
4435++_Name=Login Screen
4436++_Comment=Configure login screen behavior
4437++Exec=gdmsetup
4438++Icon=gdm-setup
4439++StartupNotify=true
4440++Terminal=false
4441++Type=Application
4442++Categories=GNOME;GTK;Settings;System;
4443++X-GNOME-Bugzilla-Bugzilla=GNOME
4444++X-GNOME-Bugzilla-Product=gdm
4445++X-GNOME-Bugzilla-Component=general
4446+Index: gdm-2.30.5/gui/gdmsetup/gdmsetup.ui
4447+===================================================================
4448+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
4449++++ gdm-2.30.5/gui/gdmsetup/gdmsetup.ui 2010-08-17 22:19:05.000000000 +0200
4450+@@ -0,0 +1,345 @@
4451++<?xml version="1.0"?>
4452++<interface>
4453++ <requires lib="gtk+" version="2.16"/>
4454++ <!-- interface-naming-policy project-wide -->
4455++ <object class="GtkListStore" id="login_user_model">
4456++ <columns>
4457++ <!-- column-name label -->
4458++ <column type="gchararray"/>
4459++ <!-- column-name user -->
4460++ <column type="gchararray"/>
4461++ <!-- column-name icon -->
4462++ <column type="GdkPixbuf"/>
4463++ </columns>
4464++ </object>
4465++ <object class="GtkListStore" id="session_model">
4466++ <columns>
4467++ <!-- column-name user -->
4468++ <column type="gchararray"/>
4469++ <!-- column-name session_id -->
4470++ <column type="gchararray"/>
4471++ <!-- column-name icon -->
4472++ <column type="GdkPixbuf"/>
4473++ </columns>
4474++ </object>
4475++ <object class="GtkDialog" id="gdm_capplet">
4476++ <property name="border_width">5</property>
4477++ <property name="title" translatable="yes" comments="Title of login screen settings dialog">Login Screen Settings</property>
4478++ <property name="resizable">False</property>
4479++ <property name="window_position">center</property>
4480++ <property name="icon_name">gdm-setup</property>
4481++ <property name="type_hint">normal</property>
4482++ <property name="has_separator">False</property>
4483++ <signal name="response" handler="gdm_capplet_response_cb"/>
4484++ <child internal-child="vbox">
4485++ <object class="GtkVBox" id="dialog-vbox1">
4486++ <property name="visible">True</property>
4487++ <property name="spacing">12</property>
4488++ <child>
4489++ <object class="GtkVBox" id="gdm_capplet_vbox">
4490++ <property name="visible">True</property>
4491++ <property name="spacing">18</property>
4492++ <child>
4493++ <object class="GtkLabel" id="intro_label">
4494++ <property name="visible">True</property>
4495++ <property name="xalign">0</property>
4496++ <property name="label" translatable="yes" comments="Description above login option radio buttons">When the computer starts up:</property>
4497++ </object>
4498++ <packing>
4499++ <property name="expand">False</property>
4500++ <property name="position">0</property>
4501++ </packing>
4502++ </child>
4503++ <child>
4504++ <object class="GtkVBox" id="vbox3">
4505++ <property name="visible">True</property>
4506++ <property name="spacing">12</property>
4507++ <child>
4508++ <object class="GtkCheckButton" id="sound_enable_check">
4509++ <property name="label" translatable="yes">Play login sound</property>
4510++ <property name="visible">True</property>
4511++ <property name="can_focus">True</property>
4512++ <property name="receives_default">False</property>
4513++ <property name="draw_indicator">True</property>
4514++ <signal name="toggled" handler="sound_enable_check_toggled_cb"/>
4515++ </object>
4516++ <packing>
4517++ <property name="position">0</property>
4518++ </packing>
4519++ </child>
4520++ <child>
4521++ <object class="GtkCheckButton" id="face_browser_enable_check">
4522++ <property name="label" translatable="yes">Show list of users</property>
4523++ <property name="visible">True</property>
4524++ <property name="can_focus">True</property>
4525++ <property name="receives_default">False</property>
4526++ <property name="draw_indicator">True</property>
4527++ <signal name="toggled" handler="face_browser_enable_check_toggled_cb"/>
4528++ </object>
4529++ <packing>
4530++ <property name="position">1</property>
4531++ </packing>
4532++ </child>
4533++ <child>
4534++ <object class="GtkRadioButton" id="manual_login_radio">
4535++ <property name="label" translatable="yes" comments="Radio option to set login screen to prompt for user">_Show the screen for choosing who will log in</property>
4536++ <property name="visible">True</property>
4537++ <property name="can_focus">True</property>
4538++ <property name="receives_default">False</property>
4539++ <property name="use_underline">True</property>
4540++ <property name="active">True</property>
4541++ <property name="draw_indicator">True</property>
4542++ </object>
4543++ <packing>
4544++ <property name="expand">False</property>
4545++ <property name="position">2</property>
4546++ </packing>
4547++ </child>
4548++ <child>
4549++ <object class="GtkVBox" id="vbox4">
4550++ <property name="visible">True</property>
4551++ <property name="spacing">6</property>
4552++ <child>
4553++ <object class="GtkHBox" id="hbox1">
4554++ <property name="visible">True</property>
4555++ <property name="spacing">6</property>
4556++ <child>
4557++ <object class="GtkRadioButton" id="automatic_login_radio">
4558++ <property name="visible">True</property>
4559++ <property name="can_focus">True</property>
4560++ <property name="receives_default">False</property>
4561++ <property name="draw_indicator">True</property>
4562++ <property name="group">manual_login_radio</property>
4563++ <signal name="toggled" handler="automatic_login_toggle_cb"/>
4564++ <child>
4565++ <object class="GtkLabel" id="user_prefix_label">
4566++ <property name="visible">True</property>
4567++ <property name="label">_Log in as</property>
4568++ <property name="use_underline">True</property>
4569++ </object>
4570++ </child>
4571++ </object>
4572++ <packing>
4573++ <property name="expand">False</property>
4574++ <property name="position">0</property>
4575++ </packing>
4576++ </child>
4577++ <child>
4578++ <object class="GtkComboBox" id="default_user_combo_box">
4579++ <property name="visible">True</property>
4580++ <property name="sensitive">False</property>
4581++ <property name="model">login_user_model</property>
4582++ <signal name="changed" handler="default_user_combo_box_changed_cb"/>
4583++ </object>
4584++ <packing>
4585++ <property name="expand">False</property>
4586++ <property name="position">1</property>
4587++ </packing>
4588++ </child>
4589++ <child>
4590++ <object class="GtkEntry" id="default_user_entry">
4591++ <property name="visible">True</property>
4592++ <property name="sensitive">False</property>
4593++ <property name="can_focus">True</property>
4594++ <property name="invisible_char">&#x2022;</property>
4595++ <signal name="changed" handler="apply_config_cb"/>
4596++ </object>
4597++ <packing>
4598++ <property name="position">2</property>
4599++ </packing>
4600++ </child>
4601++ <child>
4602++ <object class="GtkLabel" id="user_suffix_label">
4603++ <property name="visible">True</property>
4604++ <property name="label">automatically</property>
4605++ </object>
4606++ <packing>
4607++ <property name="expand">False</property>
4608++ <property name="position">3</property>
4609++ </packing>
4610++ </child>
4611++ </object>
4612++ <packing>
4613++ <property name="expand">False</property>
4614++ <property name="position">0</property>
4615++ </packing>
4616++ </child>
4617++ <child>
4618++ <object class="GtkAlignment" id="alignment1">
4619++ <property name="visible">True</property>
4620++ <property name="left_padding">16</property>
4621++ <child>
4622++ <object class="GtkHBox" id="login_delay_box">
4623++ <property name="visible">True</property>
4624++ <property name="sensitive">False</property>
4625++ <property name="spacing">6</property>
4626++ <child>
4627++ <object class="GtkCheckButton" id="login_delay_check">
4628++ <property name="visible">True</property>
4629++ <property name="can_focus">True</property>
4630++ <property name="receives_default">False</property>
4631++ <property name="draw_indicator">True</property>
4632++ <signal name="toggled" handler="login_delay_check_toggled_cb"/>
4633++ <child>
4634++ <object class="GtkLabel" id="delay_prefix_label">
4635++ <property name="visible">True</property>
4636++ <property name="label">_Allow</property>
4637++ <property name="use_underline">True</property>
4638++ </object>
4639++ </child>
4640++ </object>
4641++ <packing>
4642++ <property name="expand">False</property>
4643++ <property name="position">0</property>
4644++ </packing>
4645++ </child>
4646++ <child>
4647++ <object class="GtkSpinButton" id="login_delay_spin">
4648++ <property name="visible">True</property>
4649++ <property name="sensitive">False</property>
4650++ <property name="can_focus">True</property>
4651++ <property name="invisible_char">&#x2022;</property>
4652++ <property name="adjustment">adjustment1</property>
4653++ <signal name="value_changed" handler="apply_config_cb"/>
4654++ </object>
4655++ <packing>
4656++ <property name="expand">False</property>
4657++ <property name="position">1</property>
4658++ </packing>
4659++ </child>
4660++ <child>
4661++ <object class="GtkLabel" id="delay_suffix_label">
4662++ <property name="visible">True</property>
4663++ <property name="label">seconds for anyone else to log in first</property>
4664++ </object>
4665++ <packing>
4666++ <property name="expand">False</property>
4667++ <property name="position">2</property>
4668++ </packing>
4669++ </child>
4670++ </object>
4671++ </child>
4672++ </object>
4673++ <packing>
4674++ <property name="expand">False</property>
4675++ <property name="position">1</property>
4676++ </packing>
4677++ </child>
4678++ </object>
4679++ <packing>
4680++ <property name="expand">False</property>
4681++ <property name="position">3</property>
4682++ </packing>
4683++ </child>
4684++ <child>
4685++ <object class="GtkHBox" id="hbox2">
4686++ <property name="visible">True</property>
4687++ <property name="spacing">6</property>
4688++ <child>
4689++ <object class="GtkLabel" id="session_prefix_label">
4690++ <property name="visible">True</property>
4691++ <property name="label">Use</property>
4692++ <property name="use_underline">True</property>
4693++ </object>
4694++ <packing>
4695++ <property name="expand">False</property>
4696++ <property name="position">0</property>
4697++ </packing>
4698++ </child>
4699++ <child>
4700++ <object class="GtkComboBox" id="default_session_combo_box">
4701++ <property name="visible">True</property>
4702++ <property name="model">session_model</property>
4703++ <signal name="changed" handler="default_session_combo_box_changed_cb"/>
4704++ </object>
4705++ <packing>
4706++ <property name="expand">False</property>
4707++ <property name="position">1</property>
4708++ </packing>
4709++ </child>
4710++ <child>
4711++ <object class="GtkLabel" id="session_suffix_label">
4712++ <property name="visible">True</property>
4713++ <property name="label">as default session</property>
4714++ </object>
4715++ <packing>
4716++ <property name="expand">False</property>
4717++ <property name="position">2</property>
4718++ </packing>
4719++ </child>
4720++ </object>
4721++ <packing>
4722++ <property name="position">4</property>
4723++ </packing>
4724++ </child>
4725++ </object>
4726++ <packing>
4727++ <property name="expand">False</property>
4728++ <property name="position">4</property>
4729++ </packing>
4730++ </child>
4731++ </object>
4732++ <packing>
4733++ <property name="position">1</property>
4734++ </packing>
4735++ </child>
4736++ <child internal-child="action_area">
4737++ <object class="GtkHButtonBox" id="dialog-action_area1">
4738++ <property name="visible">True</property>
4739++ <property name="layout_style">end</property>
4740++ <child>
4741++ <object class="GtkButton" id="unlock_button">
4742++ <property name="label" translatable="yes">_Unlock</property>
4743++ <property name="visible">True</property>
4744++ <property name="can_focus">True</property>
4745++ <property name="receives_default">True</property>
4746++ <property name="image">image1</property>
4747++ <property name="use_underline">True</property>
4748++ <signal name="clicked" handler="unlock_button_clicked_cb"/>
4749++ </object>
4750++ <packing>
4751++ <property name="expand">False</property>
4752++ <property name="fill">False</property>
4753++ <property name="position">0</property>
4754++ </packing>
4755++ </child>
4756++ <child>
4757++ <object class="GtkButton" id="close_button">
4758++ <property name="label">gtk-close</property>
4759++ <property name="visible">True</property>
4760++ <property name="can_focus">True</property>
4761++ <property name="receives_default">True</property>
4762++ <property name="use_stock">True</property>
4763++ </object>
4764++ <packing>
4765++ <property name="expand">False</property>
4766++ <property name="fill">False</property>
4767++ <property name="position">1</property>
4768++ </packing>
4769++ </child>
4770++ </object>
4771++ <packing>
4772++ <property name="expand">False</property>
4773++ <property name="pack_type">end</property>
4774++ <property name="position">0</property>
4775++ </packing>
4776++ </child>
4777++ </object>
4778++ </child>
4779++ <action-widgets>
4780++ <action-widget response="1">unlock_button</action-widget>
4781++ <action-widget response="-7">close_button</action-widget>
4782++ </action-widgets>
4783++ </object>
4784++ <object class="GtkImage" id="image1">
4785++ <property name="visible">True</property>
4786++ <property name="stock">gtk-dialog-authentication</property>
4787++ </object>
4788++ <object class="GtkSizeGroup" id="combo_size_group"/>
4789++ <object class="GtkSizeGroup" id="radio_size_group"/>
4790++ <object class="GtkAdjustment" id="adjustment1">
4791++ <property name="lower">1</property>
4792++ <property name="upper">600</property>
4793++ <property name="step_increment">1</property>
4794++ </object>
4795++</interface>
4796+Index: gdm-2.30.5/gui/gdmsetup/gdm-user.c
4797+===================================================================
4798+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
4799++++ gdm-2.30.5/gui/gdmsetup/gdm-user.c 2010-08-17 22:19:05.000000000 +0200
4800+@@ -0,0 +1,1172 @@
4801++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
4802++ *
4803++ * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
4804++ * Copyright (C) 2007-2008 William Jon McCann <mccann@jhu.edu>
4805++ *
4806++ * This program is free software; you can redistribute it and/or modify
4807++ * it under the terms of the GNU General Public License as published by
4808++ * the Free Software Foundation; either version 2 of the License, or
4809++ * (at your option) any later version.
4810++ *
4811++ * This program is distributed in the hope that it will be useful,
4812++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4813++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4814++ * GNU General Public License for more details.
4815++ *
4816++ * You should have received a copy of the GNU General Public License
4817++ * along with this program; if not, write to the Free Software
4818++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
4819++ */
4820++
4821++#include <config.h>
4822++
4823++#include <float.h>
4824++#include <string.h>
4825++#include <sys/types.h>
4826++#include <sys/stat.h>
4827++#include <unistd.h>
4828++
4829++#include <glib/gi18n.h>
4830++#include <gio/gio.h>
4831++#include <gtk/gtk.h>
4832++
4833++#include "gdm-user-manager.h"
4834++#include "gdm-user-private.h"
4835++
4836++#define GDM_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDM_TYPE_USER, GdmUserClass))
4837++#define GDM_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDM_TYPE_USER))
4838++#define GDM_USER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GDM_TYPE_USER, GdmUserClass))
4839++
4840++#define GLOBAL_FACEDIR DATADIR "/faces"
4841++#define MAX_ICON_SIZE 128
4842++#define MAX_FILE_SIZE 65536
4843++#define MINIMAL_UID 100
4844++#define RELAX_GROUP TRUE
4845++#define RELAX_OTHER TRUE
4846++
4847++enum {
4848++ PROP_0,
4849++ PROP_MANAGER,
4850++ PROP_REAL_NAME,
4851++ PROP_USER_NAME,
4852++ PROP_UID,
4853++ PROP_HOME_DIR,
4854++ PROP_SHELL,
4855++ PROP_LOGIN_FREQUENCY,
4856++};
4857++
4858++enum {
4859++ ICON_CHANGED,
4860++ SESSIONS_CHANGED,
4861++ LAST_SIGNAL
4862++};
4863++
4864++struct _GdmUser {
4865++ GObject parent;
4866++
4867++ GdmUserManager *manager;
4868++
4869++ uid_t uid;
4870++ char *user_name;
4871++ char *real_name;
4872++ char *home_dir;
4873++ char *shell;
4874++ GList *sessions;
4875++ gulong login_frequency;
4876++
4877++ GFileMonitor *icon_monitor;
4878++};
4879++
4880++typedef struct _GdmUserClass
4881++{
4882++ GObjectClass parent_class;
4883++
4884++ void (* icon_changed) (GdmUser *user);
4885++ void (* sessions_changed) (GdmUser *user);
4886++} GdmUserClass;
4887++
4888++static void gdm_user_finalize (GObject *object);
4889++
4890++static guint signals[LAST_SIGNAL] = { 0 };
4891++
4892++G_DEFINE_TYPE (GdmUser, gdm_user, G_TYPE_OBJECT)
4893++
4894++static int
4895++session_compare (const char *a,
4896++ const char *b)
4897++{
4898++ if (a == NULL) {
4899++ return 1;
4900++ } else if (b == NULL) {
4901++ return -1;
4902++ }
4903++
4904++ return strcmp (a, b);
4905++}
4906++
4907++void
4908++_gdm_user_add_session (GdmUser *user,
4909++ const char *ssid)
4910++{
4911++ GList *li;
4912++
4913++ g_return_if_fail (GDM_IS_USER (user));
4914++ g_return_if_fail (ssid != NULL);
4915++
4916++ li = g_list_find_custom (user->sessions, ssid, (GCompareFunc)session_compare);
4917++ if (li == NULL) {
4918++ g_debug ("GdmUser: adding session %s", ssid);
4919++ user->sessions = g_list_prepend (user->sessions, g_strdup (ssid));
4920++ g_signal_emit (user, signals[SESSIONS_CHANGED], 0);
4921++ } else {
4922++ g_debug ("GdmUser: session already present: %s", ssid);
4923++ }
4924++}
4925++
4926++void
4927++_gdm_user_remove_session (GdmUser *user,
4928++ const char *ssid)
4929++{
4930++ GList *li;
4931++
4932++ g_return_if_fail (GDM_IS_USER (user));
4933++ g_return_if_fail (ssid != NULL);
4934++
4935++ li = g_list_find_custom (user->sessions, ssid, (GCompareFunc)session_compare);
4936++ if (li != NULL) {
4937++ g_debug ("GdmUser: removing session %s", ssid);
4938++ g_free (li->data);
4939++ user->sessions = g_list_delete_link (user->sessions, li);
4940++ g_signal_emit (user, signals[SESSIONS_CHANGED], 0);
4941++ } else {
4942++ g_debug ("GdmUser: session not found: %s", ssid);
4943++ }
4944++}
4945++
4946++guint
4947++gdm_user_get_num_sessions (GdmUser *user)
4948++{
4949++ return g_list_length (user->sessions);
4950++}
4951++
4952++GList *
4953++gdm_user_get_sessions (GdmUser *user)
4954++{
4955++ return user->sessions;
4956++}
4957++
4958++static void
4959++_gdm_user_set_login_frequency (GdmUser *user,
4960++ gulong login_frequency)
4961++{
4962++ user->login_frequency = login_frequency;
4963++ g_object_notify (G_OBJECT (user), "login-frequency");
4964++}
4965++
4966++static void
4967++gdm_user_set_property (GObject *object,
4968++ guint param_id,
4969++ const GValue *value,
4970++ GParamSpec *pspec)
4971++{
4972++ GdmUser *user;
4973++
4974++ user = GDM_USER (object);
4975++
4976++ switch (param_id) {
4977++ case PROP_MANAGER:
4978++ user->manager = g_value_get_object (value);
4979++ g_assert (user->manager);
4980++ break;
4981++ case PROP_LOGIN_FREQUENCY:
4982++ _gdm_user_set_login_frequency (user, g_value_get_ulong (value));
4983++ break;
4984++ default:
4985++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
4986++ break;
4987++ }
4988++}
4989++
4990++static void
4991++gdm_user_get_property (GObject *object,
4992++ guint param_id,
4993++ GValue *value,
4994++ GParamSpec *pspec)
4995++{
4996++ GdmUser *user;
4997++
4998++ user = GDM_USER (object);
4999++
5000++ switch (param_id) {
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: