r25136 - in /desktop/unstable/gdm3/debian: TODO changelog patches/11_no_xhost_thanks.patch patches/11_xephyr_nested.patch patches/11_xephyr_nested_interface.patch patches/series
joss at users.alioth.debian.org
joss at users.alioth.debian.org
Fri Sep 17 18:51:32 UTC 2010
Author: joss
Date: Fri Sep 17 18:51:31 2010
New Revision: 25136
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=25136
Log:
* 11_no_xhost_thanks.patch: new patch. Drops the very suspicious xhost
authentication that is set in the login window. In addition to
questioning the security, it interacts badly with the Xephyr patch.
+ Put back in place the code that keeps a connection open to the X
server, it is necessary for proper setting of the keyboard map.
+ Rework the xkb setting in the Init script. Passing model/layout/
variant/options seems to work better than keymap/types/compat/…
+ Pass GDM_PARENT_DISPLAY to the greeter session too.
* 11_xephyr_nested_interface.patch: new patch. In the greeter panel,
display only a "Quit" element when GDM_PARENT_DISPLAY is set. Call
the session manager to force a logout when pressed.
* Remove debian/TODO, yay!
Added:
desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch
desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch
Removed:
desktop/unstable/gdm3/debian/TODO
Modified:
desktop/unstable/gdm3/debian/changelog
desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch
desktop/unstable/gdm3/debian/patches/series
Modified: desktop/unstable/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/changelog?rev=25136&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/changelog [utf-8] (original)
+++ desktop/unstable/gdm3/debian/changelog [utf-8] Fri Sep 17 18:51:31 2010
@@ -6,6 +6,9 @@
Add to that a stripping of ::ffff: from IPv4 mapped addresses, since
this is not understood in $DISPLAY.
Closes: #579033.
+ * 11_no_xhost_thanks.patch: new patch. Drops the very suspicious xhost
+ authentication that is set in the login window. In addition to
+ questioning the security, it interacts badly with the Xephyr patch.
* 11_xephyr_nested.patch: re-enabled.
+ Updated to apply cleanly.
+ Modified to not affect the logic of 19_configure_xserver.patch.
@@ -19,6 +22,14 @@
unimportant since it already owns the server process.
+ Set GDM_PARENT_{DISPLAY,XAUTHORITY} so that the keymap is set in
the nested display as well.
+ + Put back in place the code that keeps a connection open to the X
+ server, it is necessary for proper setting of the keyboard map.
+ + Rework the xkb setting in the Init script. Passing model/layout/
+ variant/options seems to work better than keymap/types/compat/…
+ + Pass GDM_PARENT_DISPLAY to the greeter session too.
+ * 11_xephyr_nested_interface.patch: new patch. In the greeter panel,
+ display only a "Quit" element when GDM_PARENT_DISPLAY is set. Call
+ the session manager to force a logout when pressed.
* Install the gdmflexiserver-xnest.desktop file.
* Recommend x11-xkb-utils for xkbcomp.
* 19_configure_xserver.patch:
@@ -28,6 +39,7 @@
* 22_noconsole.patch: refreshed.
* 14_pam_dialog.patch: show messages from PAM in a dialog so that the
user can actually see them.
+ * Remove debian/TODO, yay!
-- Josselin Mouette <joss at debian.org> Fri, 10 Sep 2010 21:48:36 +0200
Added: desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch?rev=25136&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch (added)
+++ desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch [utf-8] Fri Sep 17 18:51:31 2010
@@ -1,0 +1,87 @@
+Index: gdm-2.30.5/daemon/gdm-slave.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-slave.c 2010-09-17 18:18:13.087372216 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c 2010-09-17 18:19:46.555368707 +0200
+@@ -370,27 +370,6 @@ gdm_slave_set_busy_cursor (GdmSlave *sla
+ }
+
+ static void
+-gdm_slave_setup_xhost_auth (XHostAddress *host_entries, XServerInterpretedAddress *si_entries)
+-{
+- si_entries[0].type = "localuser";
+- si_entries[0].typelength = strlen ("localuser");
+- si_entries[1].type = "localuser";
+- si_entries[1].typelength = strlen ("localuser");
+-
+- si_entries[0].value = "root";
+- si_entries[0].valuelength = strlen ("root");
+- si_entries[1].value = GDM_USERNAME;
+- si_entries[1].valuelength = strlen (GDM_USERNAME);
+-
+- host_entries[0].family = FamilyServerInterpreted;
+- host_entries[0].address = (char *) &si_entries[0];
+- host_entries[0].length = sizeof (XServerInterpretedAddress);
+- host_entries[1].family = FamilyServerInterpreted;
+- host_entries[1].address = (char *) &si_entries[1];
+- host_entries[1].length = sizeof (XServerInterpretedAddress);
+-}
+-
+-static void
+ gdm_slave_set_windowpath (GdmSlave *slave)
+ {
+ /* setting WINDOWPATH for clients */
+@@ -503,25 +482,9 @@ gdm_slave_connect_to_x11_display (GdmSla
+ g_warning ("Unable to connect to display %s", slave->priv->display_name);
+ ret = FALSE;
+ } else if (slave->priv->display_is_local) {
+- XServerInterpretedAddress si_entries[2];
+- XHostAddress host_entries[2];
+-
+ g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name);
+ ret = TRUE;
+
+- /* Give programs run by the slave and greeter access to the
+- * display independent of current hostname
+- */
+- gdm_slave_setup_xhost_auth (host_entries, si_entries);
+-
+- gdm_error_trap_push ();
+- XAddHosts (slave->priv->server_display, host_entries,
+- G_N_ELEMENTS (host_entries));
+- XSync (slave->priv->server_display, False);
+- if (gdm_error_trap_pop ()) {
+- g_warning ("Failed to give slave programs access to the display. Trying to proceed.");
+- }
+-
+ gdm_slave_set_windowpath (slave);
+ } else {
+ g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name);
+@@ -818,8 +781,6 @@ gdm_slave_add_user_authorization (GdmSla
+ const char *username,
+ char **filenamep)
+ {
+- XServerInterpretedAddress si_entries[2];
+- XHostAddress host_entries[2];
+ gboolean res;
+ GError *error;
+ char *filename;
+@@ -857,19 +818,6 @@ gdm_slave_add_user_authorization (GdmSla
+ }
+ g_free (filename);
+
+- /* Remove access for the programs run by slave and greeter now that the
+- * user session is starting.
+- */
+- gdm_slave_setup_xhost_auth (host_entries, si_entries);
+- gdm_error_trap_push ();
+- XRemoveHosts (slave->priv->server_display, host_entries,
+- G_N_ELEMENTS (host_entries));
+- XSync (slave->priv->server_display, False);
+- if (gdm_error_trap_pop ()) {
+- g_warning ("Failed to remove slave program access to the display. Trying to proceed.");
+- }
+-
+-
+ return res;
+ }
+
Modified: desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch?rev=25136&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch [utf-8] Fri Sep 17 18:51:31 2010
@@ -1,8 +1,8 @@
Debian: add CreateNestedDisplay(parent_display_id) dbus method.
Index: gdm-2.30.5/daemon/gdm-display.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.c 2010-09-16 23:24:30.995561430 +0200
-+++ gdm-2.30.5/daemon/gdm-display.c 2010-09-16 23:24:33.031566835 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.c 2010-09-17 18:17:49.923368345 +0200
++++ gdm-2.30.5/daemon/gdm-display.c 2010-09-17 18:39:25.163371770 +0200
@@ -52,6 +52,8 @@ struct GdmDisplayPrivate
{
char *id;
@@ -287,8 +287,8 @@
}
Index: gdm-2.30.5/daemon/gdm-display.h
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.h 2010-09-16 23:24:30.983561161 +0200
-+++ gdm-2.30.5/daemon/gdm-display.h 2010-09-16 23:24:33.031566835 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.h 2010-09-17 18:17:49.911372476 +0200
++++ gdm-2.30.5/daemon/gdm-display.h 2010-09-17 18:39:25.143369856 +0200
@@ -102,6 +102,9 @@ gboolean gdm_display_unmanage
gboolean gdm_display_get_id (GdmDisplay *display,
char **id,
@@ -322,8 +322,8 @@
GError **error);
Index: gdm-2.30.5/daemon/gdm-local-display-factory.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-local-display-factory.c 2010-09-16 23:24:30.971561870 +0200
-+++ gdm-2.30.5/daemon/gdm-local-display-factory.c 2010-09-16 23:24:33.031566835 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.c 2010-09-17 18:17:49.899367807 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.c 2010-09-17 18:22:19.435373492 +0200
@@ -22,6 +22,8 @@
#include <stdlib.h>
@@ -468,8 +468,8 @@
on_static_display_status_changed (GdmDisplay *display,
Index: gdm-2.30.5/daemon/gdm-local-display-factory.h
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-local-display-factory.h 2010-09-16 23:24:30.959563557 +0200
-+++ gdm-2.30.5/daemon/gdm-local-display-factory.h 2010-09-16 23:24:33.031566835 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.h 2010-09-17 18:17:49.887368516 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.h 2010-09-17 18:22:19.435373492 +0200
@@ -65,6 +65,10 @@ gboolean gdm_local_dis
char **id,
GError **error);
@@ -483,8 +483,8 @@
const char *relay_address,
Index: gdm-2.30.5/daemon/gdm-local-display-factory.xml
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-local-display-factory.xml 2010-09-16 23:24:30.947561821 +0200
-+++ gdm-2.30.5/daemon/gdm-local-display-factory.xml 2010-09-16 23:24:33.031566835 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.xml 2010-09-17 18:17:49.875371669 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.xml 2010-09-17 18:22:19.435373492 +0200
@@ -9,5 +9,10 @@
<method name="CreateTransientDisplay">
<arg name="id" direction="out" type="o"/>
@@ -498,9 +498,33 @@
</node>
Index: gdm-2.30.5/daemon/gdm-simple-slave.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-simple-slave.c 2010-09-16 23:24:30.935560574 +0200
-+++ gdm-2.30.5/daemon/gdm-simple-slave.c 2010-09-16 23:24:33.031566835 +0200
-@@ -1051,6 +1051,9 @@ static gboolean
+--- gdm-2.30.5.orig/daemon/gdm-simple-slave.c 2010-09-17 18:17:49.863370912 +0200
++++ gdm-2.30.5/daemon/gdm-simple-slave.c 2010-09-17 19:49:32.419367691 +0200
+@@ -916,6 +916,7 @@ start_greeter (GdmSimpleSlave *slave)
+ char *display_name;
+ char *display_device;
+ char *display_hostname;
++ char *parent_display;
+ char *auth_file;
+ char *address;
+ gboolean res;
+@@ -935,6 +936,7 @@ start_greeter (GdmSimpleSlave *slave)
+ "display-name", &display_name,
+ "display-hostname", &display_hostname,
+ "display-x11-authority-file", &auth_file,
++ "parent-display-name", &parent_display,
+ NULL);
+
+ g_debug ("GdmSimpleSlave: Creating greeter for %s %s", display_name, display_hostname);
+@@ -1014,6 +1016,7 @@ start_greeter (GdmSimpleSlave *slave)
+ slave->priv->greeter = gdm_greeter_session_new (display_name,
+ display_device,
+ display_hostname,
++ parent_display,
+ display_is_local);
+ g_signal_connect (slave->priv->greeter,
+ "started",
+@@ -1051,6 +1054,9 @@ static gboolean
idle_connect_to_display (GdmSimpleSlave *slave)
{
gboolean res;
@@ -510,7 +534,7 @@
slave->priv->connection_attempts++;
-@@ -1061,7 +1064,8 @@ idle_connect_to_display (GdmSimpleSlave
+@@ -1061,7 +1067,8 @@ idle_connect_to_display (GdmSimpleSlave
/* FIXME: handle wait-for-go */
@@ -520,7 +544,7 @@
delay = 0;
enabled = FALSE;
-@@ -1119,12 +1123,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1119,12 +1126,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
{
char *display_name;
char *auth_file;
@@ -541,7 +565,7 @@
NULL);
/* if this is local display start a server if one doesn't
-@@ -1143,6 +1155,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1143,6 +1158,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
NULL);
}
@@ -560,8 +584,8 @@
G_CALLBACK (on_server_exited),
Index: gdm-2.30.5/daemon/gdm-slave.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-slave.c 2010-09-16 23:24:30.903567677 +0200
-+++ gdm-2.30.5/daemon/gdm-slave.c 2010-09-16 23:28:58.811560929 +0200
+--- gdm-2.30.5.orig/daemon/gdm-slave.c 2010-09-17 18:19:46.555368707 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c 2010-09-17 18:39:25.103371405 +0200
@@ -81,32 +81,42 @@ struct GdmSlavePrivate
/* cached display values */
@@ -627,7 +651,7 @@
/* some env for use with the Pre and Post scripts */
temp = g_strconcat (slave->priv->display_name, ".Xservers", NULL);
-@@ -481,9 +490,21 @@ gdm_slave_connect_to_x11_display (GdmSla
+@@ -460,6 +469,15 @@ gdm_slave_connect_to_x11_display (GdmSla
g_debug ("GdmSlave: Server is ready - opening display %s", slave->priv->display_name);
@@ -636,20 +660,14 @@
+ if (slave->priv->display_is_nested)
+ {
+ g_free (slave->priv->display_x11_authority_file);
-+ gdm_slave_add_user_authorization (slave, GDM_USERNAME, &slave->priv->display_x11_authority_file);
++ gdm_slave_add_user_authorization (slave, GDM_USERNAME,
++ &slave->priv->display_x11_authority_file);
+ }
+
g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
-+ /* don't let root connect to nested displays */
-+ if (slave->priv->display_is_nested)
-+ return TRUE;
-+
- sigemptyset (&mask);
- sigaddset (&mask, SIGCHLD);
- sigprocmask (SIG_BLOCK, &mask, &omask);
-@@ -540,6 +561,15 @@ display_proxy_destroyed_cb (DBusGProxy *
+@@ -503,6 +521,15 @@ display_proxy_destroyed_cb (DBusGProxy *
slave->priv->display_proxy = NULL;
}
@@ -665,7 +683,7 @@
static gboolean
gdm_slave_set_slave_bus_name (GdmSlave *slave)
{
-@@ -574,11 +604,13 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -537,11 +564,13 @@ gdm_slave_real_start (GdmSlave *slave)
{
gboolean res;
char *id;
@@ -679,7 +697,7 @@
g_debug ("GdmSlave: Creating proxy for %s", slave->priv->display_id);
error = NULL;
-@@ -633,6 +665,135 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -596,6 +625,135 @@ gdm_slave_real_start (GdmSlave *slave)
/* cache some values up front */
error = NULL;
res = dbus_g_proxy_call (slave->priv->display_proxy,
@@ -815,16 +833,7 @@
"IsLocal",
&error,
G_TYPE_INVALID,
-@@ -857,6 +1018,8 @@ gdm_slave_add_user_authorization (GdmSla
- }
- g_free (filename);
-
-+ if (slave->priv->display_is_nested)
-+ return res;
- /* Remove access for the programs run by slave and greeter now that the
- * user session is starting.
- */
-@@ -1405,6 +1568,14 @@ _gdm_slave_set_display_id (GdmSlave *s
+@@ -1353,6 +1511,14 @@ _gdm_slave_set_display_id (GdmSlave *s
}
static void
@@ -839,7 +848,7 @@
_gdm_slave_set_display_name (GdmSlave *slave,
const char *name)
{
-@@ -1451,6 +1622,37 @@ _gdm_slave_set_display_is_local (GdmSlav
+@@ -1399,6 +1565,37 @@ _gdm_slave_set_display_is_local (GdmSlav
}
static void
@@ -877,7 +886,7 @@
gdm_slave_set_property (GObject *object,
guint prop_id,
const GValue *value,
-@@ -1464,6 +1666,9 @@ gdm_slave_set_property (GObject *ob
+@@ -1412,6 +1609,9 @@ gdm_slave_set_property (GObject *ob
case PROP_DISPLAY_ID:
_gdm_slave_set_display_id (self, g_value_get_string (value));
break;
@@ -887,7 +896,7 @@
case PROP_DISPLAY_NAME:
_gdm_slave_set_display_name (self, g_value_get_string (value));
break;
-@@ -1482,6 +1687,18 @@ gdm_slave_set_property (GObject *ob
+@@ -1430,6 +1630,18 @@ gdm_slave_set_property (GObject *ob
case PROP_DISPLAY_IS_LOCAL:
_gdm_slave_set_display_is_local (self, g_value_get_boolean (value));
break;
@@ -906,7 +915,7 @@
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
-@@ -1502,6 +1719,9 @@ gdm_slave_get_property (GObject *obje
+@@ -1450,6 +1662,9 @@ gdm_slave_get_property (GObject *obje
case PROP_DISPLAY_ID:
g_value_set_string (value, self->priv->display_id);
break;
@@ -916,7 +925,7 @@
case PROP_DISPLAY_NAME:
g_value_set_string (value, self->priv->display_name);
break;
-@@ -1520,6 +1740,18 @@ gdm_slave_get_property (GObject *obje
+@@ -1468,6 +1683,18 @@ gdm_slave_get_property (GObject *obje
case PROP_DISPLAY_IS_LOCAL:
g_value_set_boolean (value, self->priv->display_is_local);
break;
@@ -935,7 +944,7 @@
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
-@@ -1601,6 +1833,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1549,6 +1776,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class,
@@ -949,7 +958,7 @@
PROP_DISPLAY_NAME,
g_param_spec_string ("display-name",
"display name",
-@@ -1644,6 +1883,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1592,6 +1826,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
"display is local",
TRUE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -984,7 +993,7 @@
signals [STOPPED] =
g_signal_new ("stopped",
-@@ -1689,7 +1956,7 @@ gdm_slave_finalize (GObject *object)
+@@ -1637,7 +1899,7 @@ gdm_slave_finalize (GObject *object)
g_free (slave->priv->display_seat_id);
g_free (slave->priv->display_x11_authority_file);
g_free (slave->priv->parent_display_name);
@@ -995,8 +1004,8 @@
g_array_free (slave->priv->display_x11_cookie, TRUE);
Index: gdm-2.30.5/daemon/gdm-display.xml
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.xml 2010-09-16 23:24:30.871566468 +0200
-+++ gdm-2.30.5/daemon/gdm-display.xml 2010-09-16 23:24:33.035562524 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.xml 2010-09-17 18:17:49.839373309 +0200
++++ gdm-2.30.5/daemon/gdm-display.xml 2010-09-17 18:39:25.131371054 +0200
@@ -4,6 +4,9 @@
<method name="GetId">
<arg name="id" direction="out" type="o"/>
@@ -1030,8 +1039,8 @@
</method>
Index: gdm-2.30.5/data/gdm.conf.in
===================================================================
---- gdm-2.30.5.orig/data/gdm.conf.in 2010-09-16 23:24:30.784072453 +0200
-+++ gdm-2.30.5/data/gdm.conf.in 2010-09-16 23:24:33.035562524 +0200
+--- gdm-2.30.5.orig/data/gdm.conf.in 2010-09-17 18:17:49.791372237 +0200
++++ gdm-2.30.5/data/gdm.conf.in 2010-09-17 18:39:26.263370440 +0200
@@ -62,10 +62,16 @@
<allow send_destination="org.gnome.DisplayManager"
send_interface="org.gnome.DisplayManager.Display"
@@ -1051,8 +1060,8 @@
send_interface="org.gnome.DisplayManager.Manager"
Index: gdm-2.30.5/daemon/gdm-server.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-server.c 2010-09-16 23:24:30.843565353 +0200
-+++ gdm-2.30.5/daemon/gdm-server.c 2010-09-16 23:24:33.035562524 +0200
+--- gdm-2.30.5.orig/daemon/gdm-server.c 2010-09-17 18:17:49.819378239 +0200
++++ gdm-2.30.5/daemon/gdm-server.c 2010-09-17 18:39:25.335369248 +0200
@@ -70,6 +70,7 @@ extern char **environ;
struct GdmServerPrivate
{
@@ -1288,8 +1297,8 @@
g_free (server->priv->log_dir);
Index: gdm-2.30.5/utils/gdmflexiserver.c
===================================================================
---- gdm-2.30.5.orig/utils/gdmflexiserver.c 2010-09-16 23:24:30.756069870 +0200
-+++ gdm-2.30.5/utils/gdmflexiserver.c 2010-09-16 23:24:33.035562524 +0200
+--- gdm-2.30.5.orig/utils/gdmflexiserver.c 2010-09-17 18:17:49.731374810 +0200
++++ gdm-2.30.5/utils/gdmflexiserver.c 2010-09-17 18:22:19.443369760 +0200
@@ -34,6 +34,9 @@
#include <dbus/dbus-glib-lowlevel.h>
@@ -1562,13 +1571,162 @@
Index: gdm-2.30.5/data/Init.in
===================================================================
---- gdm-2.30.5.orig/data/Init.in 2010-09-17 00:40:52.123567272 +0200
-+++ gdm-2.30.5/data/Init.in 2010-09-17 00:42:07.767560905 +0200
-@@ -65,6 +65,7 @@ if [ "x$SETXKBMAP" != "x" ] ; then
- # FIXME: is this all right? Is this completely on crack?
+--- gdm-2.30.5.orig/data/Init.in 2010-09-17 18:17:49.759372013 +0200
++++ gdm-2.30.5/data/Init.in 2010-09-17 19:31:38.927375051 +0200
+@@ -66,22 +66,11 @@ if [ "x$SETXKBMAP" != "x" ] ; then
# What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
# FIXME: This should be done in code. Or there must be an easier way ...
-+ # FIXME: It just does not work, the keymap is not set.
if [ -n "$GDM_PARENT_DISPLAY" ]; then
++ # Hurray for awk
++ XKBARGS=$( (DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v -v) | awk '/^model:/ { printf "-model %s ", $2 } /^layout:/ { printf "-layout %s ", $2 } /^variant:/ { printf "-variant %s ", $2 } /^options:/ { printf "-option %s ", $2}' )
XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
- if [ -n "$XKBSETUP" ]; then
+- if [ -n "$XKBSETUP" ]; then
+- XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
+- XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
+- XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
+- XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
+- XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
+- if [ -n "$XKBKEYMAP" ]; then
+- $SETXKBMAP -keymap "$XKBKEYMAP"
+- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
+- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
+- elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
+- $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
+- elif [ -n "$XKBSYMBOLS" ]; then
+- $SETXKBMAP -symbols "$XKBSYMBOLS"
+- fi
++ if [ -n "$XKBARGS" ]; then
++ $SETXKBMAP $XKBARGS
+ fi
+ fi
+ fi
+Index: gdm-2.30.5/daemon/gdm-factory-slave.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-factory-slave.c 2010-09-17 19:46:36.087876683 +0200
++++ gdm-2.30.5/daemon/gdm-factory-slave.c 2010-09-17 19:47:01.759869637 +0200
+@@ -558,6 +558,7 @@ run_greeter (GdmFactorySlave *slave)
+ slave->priv->greeter = gdm_greeter_session_new (display_name,
+ display_device,
+ display_hostname,
++ NULL,
+ display_is_local);
+ g_signal_connect (slave->priv->greeter,
+ "started",
+Index: gdm-2.30.5/daemon/gdm-greeter-session.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-greeter-session.c 2010-09-17 19:44:35.411371835 +0200
++++ gdm-2.30.5/daemon/gdm-greeter-session.c 2010-09-17 20:03:21.591872720 +0200
+@@ -142,6 +142,7 @@ GdmGreeterSession *
+ gdm_greeter_session_new (const char *display_name,
+ const char *display_device,
+ const char *display_hostname,
++ const char *parent_display,
+ gboolean display_is_local)
+ {
+ GObject *object;
+@@ -156,6 +157,7 @@ gdm_greeter_session_new (const char *dis
+ "x11-display-device", display_device,
+ "x11-display-hostname", display_hostname,
+ "x11-display-is-local", display_is_local,
++ "parent-x11-display", parent_display,
+ "runtime-dir", GDM_SCREENSHOT_DIR,
+ NULL);
+
+Index: gdm-2.30.5/daemon/gdm-greeter-session.h
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-greeter-session.h 2010-09-17 19:44:56.827878332 +0200
++++ gdm-2.30.5/daemon/gdm-greeter-session.h 2010-09-17 19:45:33.319873552 +0200
+@@ -52,6 +52,7 @@ GType gdm_greeter_sessio
+ GdmGreeterSession * gdm_greeter_session_new (const char *display_name,
+ const char *display_device,
+ const char *display_hostname,
++ const char *parent_display,
+ gboolean display_is_local);
+
+ G_END_DECLS
+Index: gdm-2.30.5/daemon/gdm-welcome-session.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-welcome-session.c 2010-09-17 19:39:14.207876075 +0200
++++ gdm-2.30.5/daemon/gdm-welcome-session.c 2010-09-17 20:01:29.107871685 +0200
+@@ -70,6 +70,7 @@ struct GdmWelcomeSessionPrivate
+ char *x11_display_hostname;
+ char *x11_authority_file;
+ gboolean x11_display_is_local;
++ char *parent_x11_display;
+
+ guint child_watch_id;
+
+@@ -90,6 +91,7 @@ enum {
+ PROP_X11_DISPLAY_HOSTNAME,
+ PROP_X11_AUTHORITY_FILE,
+ PROP_X11_DISPLAY_IS_LOCAL,
++ PROP_PARENT_X11_DISPLAY,
+ PROP_USER_NAME,
+ PROP_GROUP_NAME,
+ PROP_RUNTIME_DIR,
+@@ -428,6 +430,9 @@ get_welcome_environment (GdmWelcomeSessi
+ g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
+ g_hash_table_insert (hash, g_strdup ("GVFS_DISABLE_FUSE"), g_strdup ("1"));
+
++ if (welcome_session->priv->parent_x11_display != NULL)
++ g_hash_table_insert (hash, g_strdup ("GDM_PARENT_DISPLAY"), g_strdup (welcome_session->priv->parent_x11_display));
++
+ g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
+ g_hash_table_destroy (hash);
+
+@@ -1029,6 +1034,13 @@ _gdm_welcome_session_set_x11_display_is_
+ welcome_session->priv->x11_display_is_local = is_local;
+ }
+
++static void
++_gdm_welcome_session_set_parent_x11_display (GdmWelcomeSession *welcome_session,
++ const char *name)
++{
++ g_free (welcome_session->priv->parent_x11_display);
++ welcome_session->priv->parent_x11_display = g_strdup (name);
++}
+
+ static void
+ _gdm_welcome_session_set_x11_authority_file (GdmWelcomeSession *welcome_session,
+@@ -1127,6 +1139,9 @@ gdm_welcome_session_set_property (GObjec
+ case PROP_X11_AUTHORITY_FILE:
+ _gdm_welcome_session_set_x11_authority_file (self, g_value_get_string (value));
+ break;
++ case PROP_PARENT_X11_DISPLAY:
++ _gdm_welcome_session_set_parent_x11_display (self, g_value_get_string (value));
++ break;
+ case PROP_USER_NAME:
+ _gdm_welcome_session_set_user_name (self, g_value_get_string (value));
+ break;
+@@ -1186,6 +1201,9 @@ gdm_welcome_session_get_property (GObjec
+ case PROP_X11_AUTHORITY_FILE:
+ g_value_set_string (value, self->priv->x11_authority_file);
+ break;
++ case PROP_PARENT_X11_DISPLAY:
++ g_value_set_string (value, self->priv->parent_x11_display);
++ break;
+ case PROP_USER_NAME:
+ g_value_set_string (value, self->priv->user_name);
+ break;
+@@ -1281,6 +1299,13 @@ gdm_welcome_session_class_init (GdmWelco
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class,
++ PROP_PARENT_X11_DISPLAY,
++ g_param_spec_string ("parent-x11-display",
++ "parent x11 display",
++ "parent x11 display",
++ NULL,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
+ PROP_USER_NAME,
+ g_param_spec_string ("user-name",
+ "user name",
+@@ -1424,6 +1449,7 @@ gdm_welcome_session_finalize (GObject *o
+ g_free (welcome_session->priv->x11_display_device);
+ g_free (welcome_session->priv->x11_display_hostname);
+ g_free (welcome_session->priv->x11_authority_file);
++ g_free (welcome_session->priv->parent_x11_display);
+ g_free (welcome_session->priv->server_address);
+ g_free (welcome_session->priv->server_dbus_path);
+ g_free (welcome_session->priv->server_dbus_interface);
Added: desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch?rev=25136&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch (added)
+++ desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch [utf-8] Fri Sep 17 18:51:31 2010
@@ -1,0 +1,83 @@
+Index: gdm-2.30.5/gui/simple-greeter/gdm-greeter-panel.c
+===================================================================
+--- gdm-2.30.5.orig/gui/simple-greeter/gdm-greeter-panel.c 2010-09-17 20:00:37.911873931 +0200
++++ gdm-2.30.5/gui/simple-greeter/gdm-greeter-panel.c 2010-09-17 20:47:36.847368737 +0200
+@@ -64,6 +64,10 @@
+ #define GPM_DBUS_PATH "/org/freedesktop/PowerManagement"
+ #define GPM_DBUS_INTERFACE "org.freedesktop.PowerManagement"
+
++#define SM_DBUS_NAME "org.gnome.SessionManager"
++#define SM_DBUS_PATH "/org/gnome/SessionManager"
++#define SM_DBUS_INTERFACE "org.gnome.SessionManager"
++
+ #define KEY_DISABLE_RESTART_BUTTONS "/apps/gdm/simple-greeter/disable_restart_buttons"
+ #define KEY_NOTIFICATION_AREA_PADDING "/apps/notification_area_applet/prefs/padding"
+
+@@ -633,10 +637,53 @@ do_system_stop (void)
+ }
+ }
+
++static gboolean
++try_exit_session (DBusGConnection *connection,
++ GError **error)
++{
++ DBusGProxy *proxy;
++ gboolean res;
++
++ g_debug ("GdmGreeterPanel: trying to exit session");
++
++ proxy = dbus_g_proxy_new_for_name (connection,
++ SM_DBUS_NAME,
++ SM_DBUS_PATH,
++ SM_DBUS_INTERFACE);
++ res = dbus_g_proxy_call_with_timeout (proxy,
++ "Logout",
++ INT_MAX,
++ error,
++ /* parameters: */
++ G_TYPE_UINT, 2, /* Forced mode */
++ G_TYPE_INVALID,
++ /* return values: */
++ G_TYPE_INVALID);
++ return res;
++}
++
+ static void
+ do_disconnect (void)
+ {
+- gtk_main_quit ();
++ gboolean res;
++ GError *error;
++ DBusGConnection *connection;
++
++ error = NULL;
++ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
++ if (connection == NULL) {
++ g_warning ("Unable to get system bus connection: %s", error->message);
++ g_error_free (error);
++ return;
++ } else {
++ res = try_exit_session (connection, &error);
++ if (!res) {
++ g_debug ("GdmGreeterPanel: unable to logout: %s: %s",
++ dbus_g_error_get_name (error),
++ error->message);
++ g_error_free (error);
++ }
++ }
+ }
+
+ static gboolean
+@@ -817,7 +864,11 @@ setup_panel (GdmGreeterPanel *panel)
+ gtk_container_add (GTK_CONTAINER (panel->priv->shutdown_button), image);
+
+ if (! panel->priv->display_is_local) {
+- menu_item = gtk_menu_item_new_with_label ("Disconnect");
++ menu_item = gtk_menu_item_new_with_label (_("Disconnect"));
++ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (do_disconnect), NULL);
++ gtk_menu_shell_append (GTK_MENU_SHELL (panel->priv->shutdown_menu), menu_item);
++ } else if (g_getenv ("GDM_PARENT_DISPLAY")) {
++ menu_item = gtk_menu_item_new_with_label (_("Quit"));
+ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (do_disconnect), NULL);
+ gtk_menu_shell_append (GTK_MENU_SHELL (panel->priv->shutdown_menu), menu_item);
+ } else {
Modified: desktop/unstable/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/series?rev=25136&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/series [utf-8] Fri Sep 17 18:51:31 2010
@@ -8,7 +8,9 @@
08_frequent-users_greeter.patch
09_default_session.patch
10_gdm3_pam.patch
+11_no_xhost_thanks.patch
11_xephyr_nested.patch
+11_xephyr_nested_interface.patch
12_polkit_settings.patch
13_gdmsetup.patch
13_gdmsetup_ui.patch
More information about the pkg-gnome-commits
mailing list