r23502 - in /desktop/experimental/gdm3/debian: changelog gdm-xnest.svg gdm3.install gdmflexiserver-xnest.desktop patches/11_xephyr_nested.patch patches/90_relibtoolize.patch patches/series
lethalman-guest at users.alioth.debian.org
lethalman-guest at users.alioth.debian.org
Thu Apr 1 11:28:08 UTC 2010
Author: lethalman-guest
Date: Thu Apr 1 11:28:07 2010
New Revision: 23502
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=23502
Log:
* New upstream release.
* debian/patches/11_xephyr_nested.patch:
- Added, support running gdm in a nested window.
Added:
desktop/experimental/gdm3/debian/gdm-xnest.svg
desktop/experimental/gdm3/debian/gdmflexiserver-xnest.desktop
desktop/experimental/gdm3/debian/patches/11_xephyr_nested.patch
Modified:
desktop/experimental/gdm3/debian/changelog
desktop/experimental/gdm3/debian/gdm3.install
desktop/experimental/gdm3/debian/patches/90_relibtoolize.patch
desktop/experimental/gdm3/debian/patches/series
Modified: desktop/experimental/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/changelog?rev=23502&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/changelog [utf-8] (original)
+++ desktop/experimental/gdm3/debian/changelog [utf-8] Thu Apr 1 11:28:07 2010
@@ -1,3 +1,11 @@
+gdm3 (2.30.0-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+ * debian/patches/11_xephyr_nested.patch:
+ - Added, support running gdm in a nested window.
+
+ -- Luca Bruno <lethalman88 at gmail.com> Thu, 01 Apr 2010 12:51:39 +0200
+
gdm3 (2.29.92-1) experimental; urgency=low
[ Luca Bruno ]
@@ -17,6 +25,8 @@
- Added, really stop the welcome session.
* debian/patches/06_first_vt.patch:
- Fix vt mask to really start at given vtN.
+ * debian/patches/02_xephyr_nested.patch:
+ - Support running gdm in a nested window.
[ Josselin Mouette ]
* Pass --with-screenshot-dir, newly introduced.
@@ -24,7 +34,7 @@
term.
* Update list of copyright holders.
- -- Josselin Mouette <joss at debian.org> Thu, 25 Mar 2010 20:02:20 +0100
+ -- Luca Bruno <lethalman88 at gmail.com> Thu, 01 Apr 2010 12:49:57 +0200
gdm3 (2.28.1-1) UNRELEASED; urgency=low
Added: desktop/experimental/gdm3/debian/gdm-xnest.svg
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/gdm-xnest.svg?rev=23502&op=file
==============================================================================
--- desktop/experimental/gdm3/debian/gdm-xnest.svg (added)
+++ desktop/experimental/gdm3/debian/gdm-xnest.svg [utf-8] Thu Apr 1 11:28:07 2010
@@ -1,0 +1,1011 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.47 r22583"
+ version="1.0"
+ sodipodi:docname="gdm-xnest.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 24 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="48 : 24 : 1"
+ inkscape:persp3d-origin="24 : 16 : 1"
+ id="perspective108" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6380">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6382" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6384" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient8368">
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="0"
+ id="stop8370" />
+ <stop
+ id="stop8376"
+ offset="0.5"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop8372" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8358">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop8360" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop8362" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3307">
+ <stop
+ style="stop-color:#888a85;stop-opacity:1;"
+ offset="0"
+ id="stop3309" />
+ <stop
+ style="stop-color:#888a85;stop-opacity:0;"
+ offset="1"
+ id="stop3311" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3307"
+ id="linearGradient3313"
+ x1="36.201752"
+ y1="37.667465"
+ x2="32.268337"
+ y2="39.921551"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3315">
+ <stop
+ style="stop-color:white;stop-opacity:1;"
+ offset="0"
+ id="stop3317" />
+ <stop
+ style="stop-color:white;stop-opacity:0;"
+ offset="1"
+ id="stop3319" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3315"
+ id="linearGradient3321"
+ x1="33.358002"
+ y1="37.386215"
+ x2="33.045502"
+ y2="46.323711"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3355">
+ <stop
+ id="stop3357"
+ offset="0"
+ style="stop-color:#6f716c;stop-opacity:1;" />
+ <stop
+ id="stop3359"
+ offset="1"
+ style="stop-color:#888a85;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3355"
+ id="linearGradient3329"
+ x1="38.201752"
+ y1="41.542465"
+ x2="38.979862"
+ y2="44.494751"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3331">
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:1;"
+ offset="0"
+ id="stop3333" />
+ <stop
+ style="stop-color:#d3d7cf;stop-opacity:0;"
+ offset="1"
+ id="stop3335" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3331"
+ id="linearGradient3337"
+ x1="35.118725"
+ y1="40.170986"
+ x2="35.358002"
+ y2="45.698715"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient5354">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop5356" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5358" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6288">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="0"
+ id="stop6290" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1"
+ offset="1"
+ id="stop6292" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6288"
+ id="radialGradient8344"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.0249844,0,0,2.0992192,-9.3693601,0.8779019)"
+ cx="11.03125"
+ cy="11.49707"
+ fx="11.03125"
+ fy="11.49707"
+ r="10.96875" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5354"
+ id="linearGradient8346"
+ gradientUnits="userSpaceOnUse"
+ x1="18.119612"
+ y1="36.509514"
+ x2="18.119612"
+ y2="40.376373"
+ gradientTransform="matrix(0.9545455,0,0,1,1.0909091,0)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8358"
+ id="radialGradient8401"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.25,-4,-84.375)"
+ cx="1"
+ cy="37.5"
+ fx="1"
+ fy="37.5"
+ r="2" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8368"
+ id="linearGradient8403"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,0)"
+ x1="9"
+ y1="40"
+ x2="9"
+ y2="35" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8358"
+ id="radialGradient8405"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.25,44,-9.375)"
+ cx="1"
+ cy="37.5"
+ fx="1"
+ fy="37.5"
+ r="2" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6380"
+ id="radialGradient6386"
+ cx="17.48214"
+ cy="8.3041525"
+ fx="17.48214"
+ fy="8.3041525"
+ r="21"
+ gradientTransform="matrix(-3.2870561,0,0,1.48151,68.675557,7.969844)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ r="8.341651"
+ fy="9.3411446"
+ fx="38.658855"
+ cy="9.3411446"
+ cx="38.658855"
+ id="radialGradient3271"
+ xlink:href="#linearGradient2378"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.744653,0,0,1.283833,-26.58256,-3.478359)"
+ r="4.2929163"
+ fy="12.98915"
+ fx="37.030354"
+ cy="12.98915"
+ cx="37.030354"
+ id="radialGradient4796"
+ xlink:href="#linearGradient4790"
+ inkscape:collect="always" />
+ <radialGradient
+ r="86.70845"
+ fy="14.9373"
+ fx="30.653816"
+ cy="14.9373"
+ cx="30.653816"
+ gradientTransform="matrix(0.148355,1.009137e-2,-1.104438e-2,0.162365,25.06011,12.81706)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5352"
+ xlink:href="#linearGradient259"
+ inkscape:collect="always" />
+ <radialGradient
+ r="37.751713"
+ fy="2.3667307"
+ fx="31.863327"
+ cy="2.3667307"
+ cx="31.863327"
+ gradientTransform="matrix(0.331735,0,0,0.353831,20.10526,9.5823)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient5350"
+ xlink:href="#linearGradient269"
+ inkscape:collect="always" />
+ <radialGradient
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,0.284916,0,30.08928)"
+ r="15.821514"
+ fy="42.07798"
+ fx="24.306795"
+ cy="42.07798"
+ cx="24.306795"
+ id="radialGradient4548"
+ xlink:href="#linearGradient4542"
+ inkscape:collect="always" />
+ <radialGradient
+ r="38.158695"
+ fy="7.2678967"
+ fx="8.1435566"
+ cy="7.2678967"
+ cx="8.1435566"
+ gradientTransform="matrix(0.968273,0,0,1.032767,3.353553,0.646447)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient15668"
+ xlink:href="#linearGradient15662"
+ inkscape:collect="always" />
+ <radialGradient
+ r="86.70845"
+ fy="35.736916"
+ fx="33.966679"
+ cy="35.736916"
+ cx="33.966679"
+ gradientTransform="scale(0.960493,1.041132)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient15658"
+ xlink:href="#linearGradient259"
+ inkscape:collect="always" />
+ <radialGradient
+ r="37.751713"
+ fy="3.7561285"
+ fx="8.824419"
+ cy="3.7561285"
+ cx="8.824419"
+ gradientTransform="matrix(0.968273,0,0,1.032767,3.353553,0.646447)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient15656"
+ xlink:href="#linearGradient269"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient259">
+ <stop
+ style="stop-color:#fafafa;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop260" />
+ <stop
+ style="stop-color:#bbbbbb;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop261" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient269">
+ <stop
+ style="stop-color:#a3a3a3;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop270" />
+ <stop
+ style="stop-color:#8a8a8a;stop-opacity:1;"
+ offset="1"
+ id="stop271" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient15662">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop15664" />
+ <stop
+ style="stop-color:#f8f8f8;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop15666" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4542"
+ inkscape:collect="always">
+ <stop
+ id="stop4544"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4546"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ y2="38.070381"
+ x2="34.170048"
+ y1="36.921333"
+ x1="33.396004"
+ gradientTransform="matrix(-3.277938e-2,-0.999463,0.999463,-3.277938e-2,-0.709646,45.06274)"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient8166"
+ xlink:href="#linearGradient2251"
+ inkscape:collect="always" />
+ <linearGradient
+ id="linearGradient2251"
+ inkscape:collect="always">
+ <stop
+ id="stop2253"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ id="stop2255"
+ offset="1"
+ style="stop-color:#ffffff;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient4790"
+ inkscape:collect="always">
+ <stop
+ id="stop4792"
+ offset="0"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ id="stop4794"
+ offset="1"
+ style="stop-color:#000000;stop-opacity:0;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient2378">
+ <stop
+ id="stop2380"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#fefede;stop-opacity:0.91836733;"
+ offset="0.25"
+ id="stop4146" />
+ <stop
+ style="stop-color:#f5f328;stop-opacity:1;"
+ offset="0.5"
+ id="stop2386" />
+ <stop
+ id="stop2382"
+ offset="1"
+ style="stop-color:#f5f32d;stop-opacity:0.12234043;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4790"
+ id="radialGradient6219"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.744653,0,0,1.283833,-26.58256,-3.478359)"
+ cx="37.030354"
+ cy="12.98915"
+ fx="37.030354"
+ fy="12.98915"
+ r="4.2929163" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient259"
+ id="radialGradient6221"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.148355,1.009137e-2,-1.104438e-2,0.162365,25.06011,12.81706)"
+ cx="30.653816"
+ cy="14.9373"
+ fx="30.653816"
+ fy="14.9373"
+ r="86.70845" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient269"
+ id="radialGradient6223"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.331735,0,0,0.353831,20.10526,9.5823)"
+ cx="31.863327"
+ cy="2.3667307"
+ fx="31.863327"
+ fy="2.3667307"
+ r="37.751713" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2251"
+ id="linearGradient6225"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.277938e-2,-0.999463,0.999463,-3.277938e-2,-0.709646,45.06274)"
+ x1="33.396004"
+ y1="36.921333"
+ x2="34.170048"
+ y2="38.070381" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2378"
+ id="radialGradient6227"
+ gradientUnits="userSpaceOnUse"
+ cx="38.658855"
+ cy="9.3411446"
+ fx="38.658855"
+ fy="9.3411446"
+ r="8.341651" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2251"
+ id="linearGradient6232"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-3.277938e-2,-0.999463,0.999463,-3.277938e-2,63.914603,51.467346)"
+ x1="33.396004"
+ y1="36.921333"
+ x2="34.170048"
+ y2="38.070381" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient259"
+ id="radialGradient6235"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.148355,1.009137e-2,-1.104438e-2,0.162365,89.684359,19.221666)"
+ cx="30.653816"
+ cy="14.9373"
+ fx="30.653816"
+ fy="14.9373"
+ r="86.70845" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient269"
+ id="radialGradient6237"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.331735,0,0,0.353831,84.729509,15.986906)"
+ cx="31.863327"
+ cy="2.3667307"
+ fx="31.863327"
+ fy="2.3667307"
+ r="37.751713" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4790"
+ id="radialGradient6240"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.744653,0,0,1.283833,38.041689,2.9262474)"
+ cx="37.030354"
+ cy="12.98915"
+ fx="37.030354"
+ fy="12.98915"
+ r="4.2929163" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2378"
+ id="radialGradient6242"
+ gradientUnits="userSpaceOnUse"
+ cx="38.658855"
+ cy="9.3411446"
+ fx="38.658855"
+ fy="9.3411446"
+ r="8.341651" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2378"
+ id="radialGradient6248"
+ gradientUnits="userSpaceOnUse"
+ cx="38.658855"
+ cy="9.3411446"
+ fx="38.658855"
+ fy="9.3411446"
+ r="8.341651" />
+ <inkscape:perspective
+ id="perspective2922"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2378-3"
+ id="radialGradient6248-0"
+ gradientUnits="userSpaceOnUse"
+ cx="38.658855"
+ cy="9.3411446"
+ fx="38.658855"
+ fy="9.3411446"
+ r="8.341651" />
+ <linearGradient
+ id="linearGradient2378-3">
+ <stop
+ id="stop2380-7"
+ offset="0"
+ style="stop-color:#ffffff;stop-opacity:1;" />
+ <stop
+ style="stop-color:#fefede;stop-opacity:0.91836733;"
+ offset="0.25"
+ id="stop4146-8" />
+ <stop
+ style="stop-color:#f5f328;stop-opacity:1;"
+ offset="0.5"
+ id="stop2386-8" />
+ <stop
+ id="stop2382-6"
+ offset="1"
+ style="stop-color:#f5f32d;stop-opacity:0.12234043;" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6380-4"
+ id="radialGradient6386-0"
+ cx="17.48214"
+ cy="8.3041525"
+ fx="17.48214"
+ fy="8.3041525"
+ r="21"
+ gradientTransform="matrix(-2.4847229,0,0,1.1198902,59.340411,12.760324)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6380-4">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop6382-6" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop6384-7" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6288-0"
+ id="radialGradient8344-6"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.0249844,0,0,2.0992192,-9.3693601,0.8779019)"
+ cx="11.03125"
+ cy="11.49707"
+ fx="11.03125"
+ fy="11.49707"
+ r="10.96875" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient6288-0">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="0"
+ id="stop6290-9" />
+ <stop
+ style="stop-color:#729fcf;stop-opacity:1"
+ offset="1"
+ id="stop6292-7" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5354-9"
+ id="linearGradient8346-5"
+ gradientUnits="userSpaceOnUse"
+ x1="18.119612"
+ y1="36.509514"
+ x2="18.119612"
+ y2="40.376373"
+ gradientTransform="matrix(0.9545455,0,0,1,1.0909091,0)" />
+ <linearGradient
+ id="linearGradient5354-9">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0"
+ id="stop5356-7" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop5358-8" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8358-3"
+ id="radialGradient8401-5"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.25,-4,-84.375)"
+ cx="1"
+ cy="37.5"
+ fx="1"
+ fy="37.5"
+ r="2" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8358-3">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop8360-3" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop8362-8" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8368-7"
+ id="linearGradient8403-3"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1,0)"
+ x1="9"
+ y1="40"
+ x2="9"
+ y2="35" />
+ <linearGradient
+ id="linearGradient8368-7">
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="0"
+ id="stop8370-9" />
+ <stop
+ id="stop8376-3"
+ offset="0.5"
+ style="stop-color:#000000;stop-opacity:1;" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop8372-7" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8358-3"
+ id="radialGradient8405-8"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1,0,0,1.25,44,-9.375)"
+ cx="1"
+ cy="37.5"
+ fx="1"
+ fy="37.5"
+ r="2" />
+ <radialGradient
+ r="2"
+ fy="37.5"
+ fx="1"
+ cy="37.5"
+ cx="1"
+ gradientTransform="matrix(1,0,0,1.25,44,-9.375)"
+ gradientUnits="userSpaceOnUse"
+ id="radialGradient2978"
+ xlink:href="#linearGradient8358-3"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6288"
+ id="radialGradient3109"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.0249844,0,0,2.0992192,-9.3693601,0.8779019)"
+ cx="11.03125"
+ cy="11.49707"
+ fx="11.03125"
+ fy="11.49707"
+ r="10.96875" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5354"
+ id="linearGradient3111"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9545455,0,0,1,1.0909091,0)"
+ x1="18.119612"
+ y1="36.509514"
+ x2="18.119612"
+ y2="40.376373" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5354"
+ id="linearGradient3115"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9545455,0,0,1,0.0909091,0)"
+ x1="18.119612"
+ y1="36.509514"
+ x2="18.119612"
+ y2="40.376373" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6288"
+ id="radialGradient3124"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(3.0249844,0,0,2.0992192,-10.36936,0.8779019)"
+ cx="11.03125"
+ cy="11.49707"
+ fx="11.03125"
+ fy="11.49707"
+ r="10.96875" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="5.6568542"
+ inkscape:cx="29.977494"
+ inkscape:cy="14.87383"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ width="48px"
+ height="48px"
+ inkscape:showpageshadow="false"
+ showgrid="false"
+ inkscape:window-width="1024"
+ inkscape:window-height="697"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ showborder="true"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid6113"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ <inkscape:grid
+ id="GridFromPre046Settings"
+ type="xygrid"
+ originx="0px"
+ originy="0px"
+ spacingx="0.5px"
+ spacingy="0.5px"
+ color="#0000ff"
+ empcolor="#0000ff"
+ opacity="0.2"
+ empopacity="0.4"
+ empspacing="2"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Lapo Calamandrei</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/SourceCode" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Livello 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g8396"
+ style="opacity:0.3"
+ transform="matrix(1.0217391,0,0,1.1,-1.5217391,-1)">
+ <rect
+ style="opacity:1;fill:url(#radialGradient8401);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.7;stroke-opacity:1"
+ id="rect8348"
+ width="2"
+ height="5"
+ x="-3"
+ y="-40"
+ transform="scale(-1,-1)" />
+ <rect
+ style="opacity:1;fill:url(#linearGradient8403);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.7;stroke-opacity:1"
+ id="rect8366"
+ width="42"
+ height="5"
+ x="3"
+ y="35" />
+ <rect
+ style="opacity:1;fill:url(#radialGradient8405);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0.7;stroke-opacity:1"
+ id="rect8390"
+ width="2"
+ height="5"
+ x="45"
+ y="35" />
+ </g>
+ <rect
+ style="fill:url(#radialGradient3124);fill-opacity:1;stroke:#3465a4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.7"
+ id="rect5317"
+ width="42.975185"
+ height="33.001831"
+ x="1.5124066"
+ y="7.4990835"
+ rx="2.0508666"
+ ry="2.0508666" />
+ <rect
+ style="opacity:0.45;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.7"
+ id="rect6304"
+ width="41"
+ height="31"
+ x="2.5000012"
+ y="8.5"
+ rx="1.0764557"
+ ry="1.0764557" />
+ <g
+ id="g8378" />
+ <g
+ id="g8333-0"
+ transform="matrix(0.75591132,0,0,0.75591132,6.6718679,6.735829)">
+ <rect
+ ry="2.0508666"
+ rx="2.0508666"
+ y="7.4990835"
+ x="2.5124066"
+ height="33.001831"
+ width="42.975185"
+ id="rect5317-9"
+ style="fill:url(#radialGradient8344-6);fill-opacity:1;stroke:#3465a4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.7" />
+ <rect
+ ry="1.0764557"
+ rx="1.0764557"
+ y="8.5"
+ x="3.5000012"
+ height="31"
+ width="41"
+ id="rect6304-8"
+ style="opacity:0.45;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.7" />
+ <rect
+ ry="1.0307201"
+ rx="1.0307201"
+ y="22.5"
+ x="13.5"
+ height="6"
+ width="20.999998"
+ id="rect6306-8"
+ style="fill:#ffffff;fill-opacity:1;stroke:#729fcf;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.7" />
+ <path
+ transform="matrix(1.1505466,0,0,1.1128235,7.7796609,12.403126)"
+ d="m 8.883029,11.769049 c 0,0.744437 -0.583699,1.347922 -1.3037281,1.347922 -0.7200292,0 -1.3037281,-0.603485 -1.3037281,-1.347922 0,-0.744437 0.5836989,-1.347923 1.3037281,-1.347923 0.7200291,0 1.3037281,0.603486 1.3037281,1.347923 z"
+ sodipodi:ry="1.3479223"
+ sodipodi:rx="1.3037281"
+ sodipodi:cy="11.769049"
+ sodipodi:cx="7.5793009"
+ id="path6308-5"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.1505466,0,0,1.1128235,11.779661,12.403126)"
+ d="m 8.883029,11.769049 c 0,0.744437 -0.583699,1.347922 -1.3037281,1.347922 -0.7200292,0 -1.3037281,-0.603485 -1.3037281,-1.347922 0,-0.744437 0.5836989,-1.347923 1.3037281,-1.347923 0.7200291,0 1.3037281,0.603486 1.3037281,1.347923 z"
+ sodipodi:ry="1.3479223"
+ sodipodi:rx="1.3037281"
+ sodipodi:cy="11.769049"
+ sodipodi:cx="7.5793009"
+ id="path5346-8"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.1505466,0,0,1.1128235,15.779661,12.403126)"
+ d="m 8.883029,11.769049 c 0,0.744437 -0.583699,1.347922 -1.3037281,1.347922 -0.7200292,0 -1.3037281,-0.603485 -1.3037281,-1.347922 0,-0.744437 0.5836989,-1.347923 1.3037281,-1.347923 0.7200291,0 1.3037281,0.603486 1.3037281,1.347923 z"
+ sodipodi:ry="1.3479223"
+ sodipodi:rx="1.3037281"
+ sodipodi:cy="11.769049"
+ sodipodi:cx="7.5793009"
+ id="path5348-4"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <path
+ transform="matrix(1.1505466,0,0,1.1128235,19.779661,12.403126)"
+ d="m 8.883029,11.769049 c 0,0.744437 -0.583699,1.347922 -1.3037281,1.347922 -0.7200292,0 -1.3037281,-0.603485 -1.3037281,-1.347922 0,-0.744437 0.5836989,-1.347923 1.3037281,-1.347923 0.7200291,0 1.3037281,0.603486 1.3037281,1.347923 z"
+ sodipodi:ry="1.3479223"
+ sodipodi:rx="1.3037281"
+ sodipodi:cy="11.769049"
+ sodipodi:cx="7.5793009"
+ id="path5350-3"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc" />
+ <rect
+ ry="0"
+ rx="0"
+ y="36"
+ x="3"
+ height="5"
+ width="42"
+ id="rect5352-7"
+ style="opacity:0.6561086;fill:url(#linearGradient8346-5);fill-opacity:1;stroke:none" />
+ <rect
+ ry="0.5"
+ rx="0.5"
+ y="20"
+ x="13"
+ height="1"
+ width="12"
+ id="rect6331-1"
+ style="opacity:0.06896554;fill:#000000;fill-opacity:1;stroke:none" />
+ </g>
+ <path
+ style="opacity:0.5;fill:url(#radialGradient6386-0);fill-opacity:1;stroke:none"
+ d="m 39.506767,12.78312 c 0.659117,0 1.181111,0.521993 1.181111,1.181111 l 0,5.692957 C 31.095172,25.847813 20.10517,28.815317 8.9396019,26.058812 l 0,-12.094581 c 0,-0.659118 0.521994,-1.181111 1.1811121,-1.181111 l 29.386053,0 z"
+ id="path6374-3" />
+ <g
+ id="g6244-8"
+ transform="matrix(0.75591132,0,0,0.75591132,-55.253976,3.650357)">
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#radialGradient6248-0);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ id="path2388-0"
+ sodipodi:cx="38.658855"
+ sodipodi:cy="9.3411446"
+ sodipodi:rx="8.341651"
+ sodipodi:ry="8.341651"
+ d="m 47.000506,9.3411446 c 0,4.6069664 -3.734684,8.3416514 -8.341651,8.3416514 -4.606966,0 -8.341651,-3.734685 -8.341651,-8.3416514 0,-4.6069667 3.734685,-8.341651 8.341651,-8.341651 4.606967,0 8.341651,3.7346843 8.341651,8.341651 z"
+ transform="matrix(1.14985,0,0,1.14985,77.028921,6.8955014)" />
+ <path
+ sodipodi:type="star"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible"
+ id="path1345-9"
+ sodipodi:sides="5"
+ sodipodi:cx="36.9375"
+ sodipodi:cy="11.125"
+ sodipodi:r1="8.755579"
+ sodipodi:r2="5.0676599"
+ sodipodi:arg1="0.52359878"
+ sodipodi:arg2="1.1519173"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.18352206"
+ inkscape:randomized="0"
+ d="m 44.520054,15.50279 c -0.507171,0.878446 -4.594703,-0.160823 -5.521351,0.251748 -0.926648,0.41257 -2.889414,4.145604 -3.88159,3.934711 -0.992177,-0.210894 -1.266891,-4.419519 -1.945618,-5.173323 -0.678728,-0.753803 -4.835582,-1.466933 -4.94161,-2.475719 -0.106028,-1.008786 3.811722,-2.5705906 4.318893,-3.4490369 0.507171,-0.8784463 -0.09914,-5.0522193 0.827507,-5.4647895 0.926648,-0.4125703 3.622664,2.8308064 4.614841,3.0417001 0.992176,0.2108936 4.77431,-1.6555099 5.453037,-0.9017066 0.678728,0.7538034 -1.572792,4.3201254 -1.466764,5.3289109 0.106027,1.008786 3.049826,4.029058 2.542655,4.907505 z"
+ transform="matrix(0.674116,0.299577,-0.299577,0.674116,100.08838,-0.7878626)" />
+ </g>
+ </g>
+</svg>
Modified: desktop/experimental/gdm3/debian/gdm3.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/gdm3.install?rev=23502&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/gdm3.install [utf-8] (original)
+++ desktop/experimental/gdm3/debian/gdm3.install [utf-8] Thu Apr 1 11:28:07 2010
@@ -4,5 +4,7 @@
debian/greeter.gconf-defaults etc/gdm3
debian/gdmflexiserver.desktop usr/share/gdm/applications
debian/gdmflexiserver.svg usr/share/icons/hicolor/scalable/apps
+debian/gdmflexiserver-xnest.desktop usr/share/gdm/applications
+debian/gdm-xnest.svg usr/share/icons/hicolor/scalable/apps
debian/default.desktop usr/share/gdm/BuiltInSessions
data/session-setup.entries usr/share/gdm/greeter-config
Added: desktop/experimental/gdm3/debian/gdmflexiserver-xnest.desktop
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/gdmflexiserver-xnest.desktop?rev=23502&op=file
==============================================================================
--- desktop/experimental/gdm3/debian/gdmflexiserver-xnest.desktop (added)
+++ desktop/experimental/gdm3/debian/gdmflexiserver-xnest.desktop [utf-8] Thu Apr 1 11:28:07 2010
@@ -1,0 +1,166 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=New Login in a Window
+Name[ar]=ولوج جديد في نافذة
+Name[bg]=Ново влизане в прозорец
+Name[bn]=উইন্ডোর মধ্যে নতুন লগ-ইন
+Name[bn_IN]=উইন্ডোর মধ্যে নতুন লগ-ইন
+Name[ca]=Nova entrada a una finestra
+Name[cs]=Nové přihlášení v okně
+Name[da]=Nyt logind i et vindue
+Name[de]=In einem Fenster neu anmelden
+Name[dz]=སྒོ་སྒྲིག་ཅིག་ནང་ ནང་བསྐྱོད་གསརཔ
+Name[el]=Νέα είσοδος σε παράθυρο
+Name[en_CA]=New Login in a Window
+Name[en_GB]=New Login in a Window
+Name[es]=Nuevo acceso en una ventana
+Name[et]=Uus sisselogimine aknas
+Name[eu]=Saio berria leiho batean
+Name[fi]=Uusi kirjautuminen ikkunassa
+Name[fr]=Nouvelle connexion dans une fenêtre
+Name[ga]=Logáil Isteach Nua i bhFuinneog
+Name[gl]=Novo inicio de sesión nunha ventá
+Name[gu]=વિન્ડોમાં નવો પ્રવેશ
+Name[hi]=विंडो में नया लॉगइन
+Name[hu]=Új bejelentkezés egy ablakban
+Name[it]=Nuovo accesso in una finestra
+Name[ja]=ウィンドウから新しいログイン
+Name[kn]=ಒಂದು ವಿಂಡೋದಲ್ಲಿ ಹೊಸ ಪ್ರವೇಶ
+Name[ko]=창에서 새로 로그인
+Name[lt]=Naujas prisijungimas lange
+Name[mk]=Ново најавување во прозорец
+Name[ml]=ജാലകത്തില് ഉളള പുതിയ ലോഗിന്
+Name[nb]=Ny innlogging i et vindu
+Name[ne]=सञ्झ्यालमा नयाँ लगइन
+Name[nl]=Aanmelden in een venster
+Name[nn]=Ny innlogging i eit vindauge
+Name[or]=ଗୋଟିଏ ୱିଣ୍ଡୋରେ ନୂତନ ଲଗଇନ
+Name[pa]=ਇੱਕ ਵਿੰਡੋ ਵਿੱਚ ਨਵਾਂ ਲਾਗਇਨ
+Name[pl]=Nowe logowanie w oknie
+Name[pt]=Nova Sessão numa Janela
+Name[pt_BR]=Nova Sessão em uma Janela
+Name[ro]=Autentificare nouă într-o fereastră
+Name[ru]=Новый сеанс во встроенном окне
+Name[sk]=Nové prihlásenie v okne
+Name[sl]=Nova prijava v oknu
+Name[sq]=Login i ri në një dritare
+Name[sv]=Ny inloggning i ett fönster
+Name[ta]=சாளரத்தில் புதிய நுழைவு
+Name[te]=ఒక గవాక్షం లో కొత్త ప్రవేశద్వారం
+Name[th]=การเข้าระบบใหม่ในหน้าต่าง
+Name[tr]=İçiçe Perncerede Yeni Giriş
+Name[uk]=Новий сеанс у вікні
+Name[vi]=Đăng nhập mới trong cửa sổ
+Name[zh_CN]=窗口中的新登录
+GenericName=New Login in a Window
+GenericName[ar]=ولوج جديد في نافذة
+GenericName[bg]=Ново влизане в прозорец
+GenericName[bn]=উইন্ডোর মধ্যে নতুন লগ-ইন
+GenericName[bn_IN]=উইন্ডোর মধ্যে নতুন লগ-ইন
+GenericName[ca]=Nova entrada a una finestra
+GenericName[cs]=Nové přihlášení v okně
+GenericName[da]=Nyt logind i et vindue
+GenericName[de]=In einem Fenster neu anmelden
+GenericName[dz]=སྒོ་སྒྲིག་ཅིག་ནང་ ནང་བསྐྱོད་གསརཔ
+GenericName[el]=Νέα είσοδος σε παράθυρο
+GenericName[en_CA]=New Login in a Window
+GenericName[en_GB]=New Login in a Window
+GenericName[es]=Nuevo acceso en una ventana
+GenericName[et]=Uus sisselogimine aknas
+GenericName[eu]=Saio berria leiho batean
+GenericName[fi]=Uusi kirjautuminen ikkunassa
+GenericName[fr]=Nouvelle connexion dans une fenêtre
+GenericName[ga]=Logáil Isteach Nua i bhFuinneog
+GenericName[gl]=Novo inicio de sesión nunha ventá
+GenericName[gu]=વિન્ડોમાં નવો પ્રવેશ
+GenericName[hi]=विंडो में नया लॉगइन
+GenericName[hu]=Új bejelentkezés egy ablakban
+GenericName[it]=Nuovo accesso in una finestra
+GenericName[ja]=ウィンドウから新しいログイン
+GenericName[kn]=ಒಂದು ವಿಂಡೋದಲ್ಲಿ ಹೊಸ ಪ್ರವೇಶ
+GenericName[ko]=창에서 새로 로그인
+GenericName[lt]=Naujas prisijungimas lange
+GenericName[mk]=Ново најавување во прозорец
+GenericName[ml]=ജാലകത്തില് ഉളള പുതിയ ലോഗിന്
+GenericName[nb]=Ny innlogging i et vindu
+GenericName[ne]=सञ्झ्यालमा नयाँ लगइन
+GenericName[nl]=Aanmelden in een venster
+GenericName[nn]=Ny innlogging i eit vindauge
+GenericName[or]=ଗୋଟିଏ ୱିଣ୍ଡୋରେ ନୂତନ ଲଗଇନ
+GenericName[pa]=ਇੱਕ ਵਿੰਡੋ ਵਿੱਚ ਨਵਾਂ ਲਾਗਇਨ
+GenericName[pl]=Nowe logowanie w oknie
+GenericName[pt]=Nova Sessão numa Janela
+GenericName[pt_BR]=Nova Sessão em uma Janela
+GenericName[ro]=Autentificare nouă într-o fereastră
+GenericName[ru]=Новый сеанс во встроенном окне
+GenericName[sk]=Nové prihlásenie v okne
+GenericName[sl]=Nova prijava v oknu
+GenericName[sq]=Login i ri në një dritare
+GenericName[sv]=Ny inloggning i ett fönster
+GenericName[ta]=சாளரத்தில் புதிய நுழைவு
+GenericName[te]=ఒక గవాక్షం లో కొత్త ప్రవేశద్వారం
+GenericName[th]=การเข้าระบบใหม่ในหน้าต่าง
+GenericName[tr]=İçiçe Perncerede Yeni Giriş
+GenericName[uk]=Новий сеанс у вікні
+GenericName[vi]=Đăng nhập mới trong cửa sổ
+GenericName[zh_CN]=窗口中的新登录
+Comment=Login as another user in a window
+Comment[ar]=لُجْ كمستخدم آخر في نافذة
+Comment[bg]=Влизане в системата като друг потребител в прозорец
+Comment[bn]=লগ-আউট না করে পৃথক ব্যবহারকারীরূপে উইন্ডোর মধ্যে লগ-ইন করুন
+Comment[bn_IN]=লগ-আউট না করে পৃথক ব্যবহারকারীরূপে উইন্ডোর মধ্যে লগ-ইন করুন
+Comment[ca]=Entreu com un usuari diferent dins d'una finestra imbricada
+Comment[cs]=Přihlásit se jako jiný uživatel v okně
+Comment[da]=Log ind som en anden bruger i et vindue
+Comment[de]=Als anderer Benutzer in einem Fenster anmelden
+Comment[dz]=སྒོ་སྒྲིག་ གཞན་ཅིག་གི་ནང་ན་ ལག་ལེན་པ་ གཞན་བཟུམ་སྦེ་ ནང་བསྐྱོད་འབད
+Comment[el]=Είσοδος ως διαφορετικός χρήστης μέσα σε ένα παράθυρο
+Comment[en_CA]=Log in as another user in a window
+Comment[en_GB]=Log in as another user in a window
+Comment[es]=Acceda como un usuario distinto dentro de una ventana
+Comment[et]=Teise kasutaja alt aknas sisselogimine
+Comment[eu]=Sartu beste erabiltzaile baten moduan habiaratutako leiho batean
+Comment[fi]=Kirjaudu muuna käyttäjänä ikkunassa
+Comment[fr]=Se connecter sous une autre identité à l'intérieur d'une fenêtre
+Comment[gl]=Iniciar a sesión como outro usuario nunha ventá
+Comment[gu]=વિન્ડોમાં બીજા વપરાશકર્તા તરીકે પ્રવેશ કરો
+Comment[hi]=विंडो के भीतर अन्य उपयोक्ता के रूप में लॉगइन करें
+Comment[hu]=Bejelentkezés más felhasználóként egy ablakban
+Comment[it]=Accede come un altro utente in una finestra
+Comment[ja]=任意のウィンドウから別のユーザでログインします
+Comment[kn]=ಒಂದು ವಿಂಡೋದಲ್ಲಿ ಬೇರೆ ಬಳಕೆದಾರನಾಗಿ ಪ್ರವೇಶಿಸು
+Comment[ko]=창에서 다른 사용자로 로그인
+Comment[lt]=Prisijungti kitu naudojotu lange
+Comment[mk]=Најави се како друг корисник во прозорец
+Comment[ml]=ജാലകത്തില് മറ്റൊരു ഉപയോക്താവായി പ്രവേശിക്കുക
+Comment[nb]=Logg inn som en annen bruker i et vindu
+Comment[ne]=अर्को प्रयोगकर्ताको रूपमा सञ्झ्याल भित्र लगइन गर्नुहोस्
+Comment[nl]=Als een andere gebruiker aanmelden in een venster
+Comment[nn]=Logg inn som ein annan brukar i eit vindauge
+Comment[or]=ଗୋଟିଏ ୱିଣ୍ଡୋରେ ଅନ୍ଯ ଗୋଟିଏ ଚାଳକ ଭାବରେ ଲଗଇନ କରନ୍ତୁ
+Comment[pa]=ਇੱਕ ਵਿੰਡੋ ਵਿੱਚ ਹੋਰ ਯੂਜ਼ਰ ਵਾਂਗ ਲਾਗਇਨ ਕਰੋ
+Comment[pl]=Logowanie jako inny użytkownik w oknie
+Comment[pt]=Iniciar sessão como outro utilizador dentro de uma janela
+Comment[pt_BR]=Iniciar uma sessão como outro usuário dentro de uma janela
+Comment[ro]=Autentificare cu un alt cont într-o fereastră
+Comment[ru]=Войти в окне под другим пользователем
+Comment[sk]=Prihlásiť sa ako iný používateľ v okne
+Comment[sl]=Prijavi se kot drug uporabnik znotraj okna
+Comment[sq]=Hyrje si një përdorues tjetër në një dritare
+Comment[sv]=Logga in som en annan användare i ett fönster
+Comment[ta]=சாளரத்தில் வேறொரு பயனராக நுழை
+Comment[te]=ఒక గవాక్షం లో మరియొక వినియోగదారు లాగా ప్రవేశద్వారం
+Comment[th]=เข้าระบบในนามผู้ใช้อื่นในหน้าต่าง
+Comment[tr]=Diğer bir pencerede farklı kullanıcı ile giriş
+Comment[uk]=Вхід як інший користувач у вікні
+Comment[vi]=Đăng nhập vào cửa sổ với tên người dùng khác
+Comment[zh_CN]=在窗口中以其他用户登录
+TryExec=/usr/share/gdm/gdmXnestWrapper
+Exec=gdmflexiserver --xnest
+Icon=gdm-xnest
+Terminal=false
+Type=Application
+Categories=GNOME;GTK;System;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gdm
+X-GNOME-Bugzilla-Component=general
Added: desktop/experimental/gdm3/debian/patches/11_xephyr_nested.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/11_xephyr_nested.patch?rev=23502&op=file
==============================================================================
--- desktop/experimental/gdm3/debian/patches/11_xephyr_nested.patch (added)
+++ desktop/experimental/gdm3/debian/patches/11_xephyr_nested.patch [utf-8] Thu Apr 1 11:28:07 2010
@@ -1,0 +1,1391 @@
+Debian: add CreateNestedDisplay(parent_display_id) dbus method.
+--- a/daemon/gdm-display.c
++++ b/daemon/gdm-display.c
+@@ -52,6 +52,7 @@
+ {
+ char *id;
+ char *seat_id;
++ GdmDisplay *parent_display;
+
+ char *remote_hostname;
+ int x11_display_number;
+@@ -66,6 +67,7 @@
+ GdmDisplayAccessFile *access_file;
+
+ gboolean is_local;
++ gboolean is_nested;
+ guint finish_idle_id;
+
+ GdmSlaveProxy *slave_proxy;
+@@ -78,12 +80,14 @@
+ PROP_ID,
+ PROP_STATUS,
+ PROP_SEAT_ID,
++ PROP_PARENT_DISPLAY,
+ PROP_REMOTE_HOSTNAME,
+ PROP_X11_DISPLAY_NUMBER,
+ PROP_X11_DISPLAY_NAME,
+ PROP_X11_COOKIE,
+ PROP_X11_AUTHORITY_FILE,
+ PROP_IS_LOCAL,
++ PROP_IS_NESTED,
+ PROP_SLAVE_COMMAND,
+ };
+
+@@ -275,6 +279,33 @@
+ return ret;
+ }
+
++gboolean
++gdm_display_get_user_authorization (GdmDisplay *display,
++ char **username,
++ char **filename,
++ GError **error)
++{
++ gboolean ret;
++
++ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
++
++ ret = FALSE;
++
++ if (display->priv->user_access_file != NULL) {
++ if (username)
++ g_object_get (display->priv->user_access_file,
++ "username", username,
++ NULL);
++ if (filename)
++ g_object_get (display->priv->user_access_file,
++ "path", filename,
++ NULL);
++ ret = TRUE;
++ }
++
++ return ret;
++}
++
+ static gboolean
+ gdm_display_real_set_slave_bus_name (GdmDisplay *display,
+ const char *name,
+@@ -742,6 +773,24 @@
+ }
+
+ gboolean
++gdm_display_get_parent_id (GdmDisplay *display,
++ char **parent_id,
++ GError **error)
++{
++ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
++
++ gboolean ret = TRUE;
++ if (parent_id != NULL) {
++ ret = FALSE;
++ if (display->priv->parent_display != NULL) {
++ ret = gdm_display_get_id (display->priv->parent_display, parent_id, error);
++ }
++ }
++
++ return ret;
++}
++
++gboolean
+ gdm_display_get_x11_display_name (GdmDisplay *display,
+ char **x11_display,
+ GError **error)
+@@ -769,6 +818,20 @@
+ return TRUE;
+ }
+
++gboolean
++gdm_display_is_nested (GdmDisplay *display,
++ gboolean *nested,
++ GError **error)
++{
++ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
++
++ if (nested != NULL) {
++ *nested = display->priv->is_nested;
++ }
++
++ return TRUE;
++}
++
+ static void
+ _gdm_display_set_id (GdmDisplay *display,
+ const char *id)
+@@ -786,6 +849,18 @@
+ }
+
+ static void
++_gdm_display_set_parent_display (GdmDisplay *display,
++ GdmDisplay *parent_display)
++{
++ if (display->priv->parent_display != NULL)
++ g_object_remove_weak_pointer (display, &display->priv->parent_display);
++
++ display->priv->parent_display = parent_display;
++ if (parent_display != NULL)
++ g_object_add_weak_pointer (display, &display->priv->parent_display);
++}
++
++static void
+ _gdm_display_set_remote_hostname (GdmDisplay *display,
+ const char *hostname)
+ {
+@@ -824,6 +899,13 @@
+ }
+
+ static void
++_gdm_display_set_is_nested (GdmDisplay *display,
++ gboolean is_nested)
++{
++ display->priv->is_nested = is_nested;
++}
++
++static void
+ _gdm_display_set_slave_command (GdmDisplay *display,
+ const char *command)
+ {
+@@ -845,6 +927,9 @@
+ case PROP_ID:
+ _gdm_display_set_id (self, g_value_get_string (value));
+ break;
++ case PROP_PARENT_DISPLAY:
++ _gdm_display_set_parent_display (self, g_value_get_object (value));
++ break;
+ case PROP_STATUS:
+ _gdm_display_set_status (self, g_value_get_int (value));
+ break;
+@@ -866,6 +951,9 @@
+ case PROP_IS_LOCAL:
+ _gdm_display_set_is_local (self, g_value_get_boolean (value));
+ break;
++ case PROP_IS_NESTED:
++ _gdm_display_set_is_nested (self, g_value_get_boolean (value));
++ break;
+ case PROP_SLAVE_COMMAND:
+ _gdm_display_set_slave_command (self, g_value_get_string (value));
+ break;
+@@ -889,6 +977,9 @@
+ case PROP_ID:
+ g_value_set_string (value, self->priv->id);
+ break;
++ case PROP_PARENT_DISPLAY:
++ g_value_set_object (value, self->priv->parent_display);
++ break;
+ case PROP_STATUS:
+ g_value_set_int (value, self->priv->status);
+ break;
+@@ -914,6 +1005,9 @@
+ case PROP_IS_LOCAL:
+ g_value_set_boolean (value, self->priv->is_local);
+ break;
++ case PROP_IS_NESTED:
++ g_value_set_boolean (value, self->priv->is_nested);
++ break;
+ case PROP_SLAVE_COMMAND:
+ g_value_set_string (value, self->priv->slave_command);
+ break;
+@@ -979,6 +1073,11 @@
+
+ g_debug ("GdmDisplay: Disposing display");
+
++ if (display->priv->parent_display != NULL) {
++ g_object_remove_weak_pointer (display->priv->parent_display, &display->priv->parent_display);
++ display->priv->parent_display = NULL;
++ }
++
+ if (display->priv->finish_idle_id > 0) {
+ g_source_remove (display->priv->finish_idle_id);
+ display->priv->finish_idle_id = 0;
+@@ -1032,6 +1131,15 @@
+ "id",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++
++ g_object_class_install_property (object_class,
++ PROP_PARENT_DISPLAY,
++ g_param_spec_object ("parent-display",
++ "parent display",
++ "parent display",
++ GDM_TYPE_DISPLAY,
++ G_PARAM_READWRITE));
++
+ g_object_class_install_property (object_class,
+ PROP_REMOTE_HOSTNAME,
+ g_param_spec_string ("remote-hostname",
+@@ -1086,6 +1194,14 @@
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class,
++ PROP_IS_NESTED,
++ g_param_spec_boolean ("is-nested",
++ "display is nested",
++ "display is nested",
++ FALSE,
++ G_PARAM_READWRITE));
++
++ g_object_class_install_property (object_class,
+ PROP_SLAVE_COMMAND,
+ g_param_spec_string ("slave-command",
+ "slave command",
+@@ -1137,6 +1253,10 @@
+ g_free (display->priv->x11_cookie);
+ g_free (display->priv->slave_command);
+
++ if (display->priv->parent_display != NULL) {
++ g_object_remove_weak_pointer (display->priv->parent_display, &display->priv->parent_display);
++ }
++
+ if (display->priv->access_file != NULL) {
+ g_object_unref (display->priv->access_file);
+ }
+--- a/daemon/gdm-display.h
++++ b/daemon/gdm-display.h
+@@ -102,6 +102,9 @@
+ gboolean gdm_display_get_id (GdmDisplay *display,
+ char **id,
+ GError **error);
++gboolean gdm_display_get_parent_id (GdmDisplay *display,
++ char **parent_id,
++ GError **error);
+ gboolean gdm_display_get_remote_hostname (GdmDisplay *display,
+ char **hostname,
+ GError **error);
+@@ -117,6 +120,9 @@
+ gboolean gdm_display_is_local (GdmDisplay *display,
+ gboolean *local,
+ GError **error);
++gboolean gdm_display_is_nested (GdmDisplay *display,
++ gboolean *nested,
++ GError **error);
+ gboolean gdm_display_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabled,
+ char **username,
+@@ -137,6 +143,10 @@
+ gboolean gdm_display_remove_user_authorization (GdmDisplay *display,
+ const char *username,
+ GError **error);
++gboolean gdm_display_get_user_authorization (GdmDisplay *display,
++ char **username,
++ char **filename,
++ GError **error);
+ gboolean gdm_display_set_slave_bus_name (GdmDisplay *display,
+ const char *name,
+ GError **error);
+--- a/daemon/gdm-local-display-factory.c
++++ b/daemon/gdm-local-display-factory.c
+@@ -22,6 +22,8 @@
+
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <sys/types.h>
++#include <pwd.h>
+
+ #include <glib.h>
+ #include <glib/gi18n.h>
+@@ -274,6 +276,131 @@
+
+ return ret;
+ }
++
++static gboolean
++find_display_by_id (const char *id, GdmDisplay *display, gpointer user_data)
++{
++ return !strcmp (id, (const char*)user_data);
++}
++
++gboolean
++gdm_local_display_factory_create_nested_display (GdmLocalDisplayFactory *factory,
++ const char *parent_display_id,
++ DBusGMethodInvocation *context)
++{
++ GdmDisplayStore *store;
++ GError *error;
++ DBusGProxy *proxy;
++ gboolean ret;
++ GdmDisplay *parent_display;
++ GdmDisplay *display;
++ char *parent_username;
++ char *sender;
++ uid_t uid;
++ struct passwd *pw;
++ char *id;
++ guint32 num;
++
++ g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
++
++ ret = FALSE;
++ display = NULL;
++ sender = NULL;
++ proxy = NULL;
++ parent_username = NULL;
++ pw = NULL;
++ error = NULL;
++
++ g_debug ("GdmLocalDisplayFactory: Creating nested display parent %s", parent_display_id);
++
++ store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
++ parent_display = gdm_display_store_find (store, find_display_by_id, parent_display_id);
++ if (!parent_display)
++ goto out;
++
++ if (!gdm_display_get_user_authorization (parent_display, &parent_username, NULL, &error))
++ goto out;
++
++ sender = dbus_g_method_get_sender (context);
++ if (!sender) {
++ g_debug ("GdmLocalDisplayFactory: Unable to get sender");
++ goto out;
++ }
++
++ proxy = dbus_g_proxy_new_for_name_owner (factory->priv->connection,
++ "org.freedesktop.DBus",
++ "/",
++ "org.freedesktop.DBus",
++ &error);
++ if (!proxy)
++ goto out;
++
++ if (!dbus_g_proxy_call (proxy,
++ "GetConnectionUnixUser",
++ &error,
++ G_TYPE_STRING, sender,
++ G_TYPE_INVALID,
++ G_TYPE_UINT, &uid,
++ G_TYPE_INVALID)) {
++ g_debug ("GdmLocalDisplayFactory: Unable to get unix user: %s", error->message);
++ goto out;
++ }
++
++ pw = getpwuid (uid);
++ if (pw == NULL) {
++ g_warning ("GdmLocalDisplayFactory: Can't get passwd for uid: %u", uid);
++ goto out;
++ }
++
++ if (!pw->pw_name || strcmp (pw->pw_name, parent_username)) {
++ g_warning ("GdmLocalDisplayFactory: Invalid attempt to create nested display for parent %s user %u", parent_display_id, uid);
++ goto out;
++ }
++
++ num = take_next_display_number (factory);
++
++ g_debug ("GdmLocalDisplayFactory: got display num %u", num);
++
++ display = gdm_transient_display_new (num);
++
++ /* FIXME: don't hardcode seat1? */
++ g_object_set (display,
++ "seat-id", CK_SEAT1_PATH,
++ "parent-display", parent_display,
++ "is-nested", TRUE,
++ NULL);
++
++ store_display (factory, num, display);
++
++ if (! gdm_display_manage (display)) {
++ display = NULL;
++ goto out;
++ }
++
++ if (! gdm_display_get_id (display, &id, &error)) {
++ display = NULL;
++ goto out;
++ }
++
++ g_debug ("GdmLocalDisplayFactory: Created nested display :%d for user %s", num, parent_username);
++ ret = TRUE;
++ out:
++ /* ref either held by store or not at all */
++ g_object_unref (display);
++ g_object_unref (proxy);
++ g_free (parent_username);
++ g_free (sender);
++
++ if (ret) {
++ dbus_g_method_return (context, id);
++ } else {
++ dbus_g_method_return_error (context, error);
++ if (error)
++ g_error_free (error);
++ }
++
++ return ret;
++}
+
+ static void
+ on_static_display_status_changed (GdmDisplay *display,
+--- a/daemon/gdm-local-display-factory.h
++++ b/daemon/gdm-local-display-factory.h
+@@ -65,6 +65,10 @@
+ char **id,
+ GError **error);
+
++gboolean gdm_local_display_factory_create_nested_display (GdmLocalDisplayFactory *factory,
++ const char *parent_display_id,
++ DBusGMethodInvocation *context);
++
+ gboolean gdm_local_display_factory_create_product_display (GdmLocalDisplayFactory *factory,
+ const char *parent_display_id,
+ const char *relay_address,
+--- a/daemon/gdm-local-display-factory.xml
++++ b/daemon/gdm-local-display-factory.xml
+@@ -9,5 +9,10 @@
+ <method name="CreateTransientDisplay">
+ <arg name="id" direction="out" type="o"/>
+ </method>
++ <method name="CreateNestedDisplay">
++ <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
++ <arg name="parent_display_id" direction="in" type="o"/>
++ <arg name="id" direction="out" type="o"/>
++ </method>
+ </interface>
+ </node>
+--- a/daemon/gdm-simple-slave.c
++++ b/daemon/gdm-simple-slave.c
+@@ -1043,6 +1043,9 @@
+ idle_connect_to_display (GdmSimpleSlave *slave)
+ {
+ gboolean res;
++ gboolean display_is_nested;
++
++ g_object_get (slave, "display-is-nested", &display_is_nested, NULL);
+
+ slave->priv->connection_attempts++;
+
+@@ -1053,7 +1056,8 @@
+
+ /* FIXME: handle wait-for-go */
+
+- setup_server (slave);
++ if (!display_is_nested)
++ setup_server (slave);
+
+ delay = 0;
+ enabled = FALSE;
+@@ -1109,12 +1113,20 @@
+ {
+ char *display_name;
+ char *auth_file;
++ char *parent_display_name;
++ char *parent_user_auth_file;
++ char *parent_username;
+ gboolean display_is_local;
++ gboolean display_is_nested;
+
+ g_object_get (slave,
+ "display-is-local", &display_is_local,
++ "display-is-nested", &display_is_nested,
+ "display-name", &display_name,
+ "display-x11-authority-file", &auth_file,
++ "parent-display-name", &parent_display_name,
++ "parent-display-user-auth-file", &parent_user_auth_file,
++ "parent-display-username", &parent_username,
+ NULL);
+
+ /* if this is local display start a server if one doesn't
+@@ -1133,6 +1145,16 @@
+ NULL);
+ }
+
++ if (display_is_nested) {
++ g_object_set (slave->priv->server,
++ "is-nested", TRUE,
++ "is-parented", TRUE,
++ "parent-display-name", parent_display_name,
++ "parent-auth-file", parent_user_auth_file,
++ "user-name", parent_username,
++ NULL);
++ }
++
+ g_signal_connect (slave->priv->server,
+ "exited",
+ G_CALLBACK (on_server_exited),
+--- a/daemon/gdm-slave.c
++++ b/daemon/gdm-slave.c
+@@ -78,31 +78,41 @@
+
+ /* cached display values */
+ char *display_id;
++ char *display_parent_id;
+ char *display_name;
+ int display_number;
+ char *display_hostname;
+ gboolean display_is_local;
++ gboolean display_is_nested;
+ gboolean display_is_parented;
+ char *display_seat_id;
+ char *display_x11_authority_file;
+- char *parent_display_name;
+- char *parent_display_x11_authority_file;
+
+ GArray *display_x11_cookie;
+
++ char *parent_display_name;
++ char *parent_display_user_auth_file;
++ char *parent_display_username;
++
+ DBusGProxy *display_proxy;
++ DBusGProxy *parent_display_proxy;
+ DBusGConnection *connection;
+ };
+
+ enum {
+ PROP_0,
+ PROP_DISPLAY_ID,
++ PROP_DISPLAY_PARENT_ID,
+ PROP_DISPLAY_NAME,
+ PROP_DISPLAY_NUMBER,
+ PROP_DISPLAY_HOSTNAME,
+ PROP_DISPLAY_IS_LOCAL,
++ PROP_DISPLAY_IS_NESTED,
+ PROP_DISPLAY_SEAT_ID,
+- PROP_DISPLAY_X11_AUTHORITY_FILE
++ PROP_DISPLAY_X11_AUTHORITY_FILE,
++ PROP_PARENT_DISPLAY_NAME,
++ PROP_PARENT_DISPLAY_USER_AUTH_FILE,
++ PROP_PARENT_DISPLAY_USERNAME
+ };
+
+ enum {
+@@ -378,6 +388,10 @@
+
+ g_debug ("GdmSlave: Server is ready - opening display %s", slave->priv->display_name);
+
++ /* don't let root connect to nested displays */
++ if (slave->priv->display_is_nested)
++ return TRUE;
++
+ g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
+ g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
+
+@@ -446,6 +460,15 @@
+ slave->priv->display_proxy = NULL;
+ }
+
++static void
++parent_display_proxy_destroyed_cb (DBusGProxy *parent_display_proxy,
++ GdmSlave *slave)
++{
++ g_debug ("GdmSlave: Disconnected from parent display");
++
++ slave->priv->parent_display_proxy = NULL;
++}
++
+ static gboolean
+ gdm_slave_set_slave_bus_name (GdmSlave *slave)
+ {
+@@ -480,11 +503,13 @@
+ {
+ gboolean res;
+ char *id;
++ char *parent_id;
+ GError *error;
+
+ g_debug ("GdmSlave: Starting slave");
+
+ g_assert (slave->priv->display_proxy == NULL);
++ g_assert (slave->priv->parent_display_proxy == NULL);
+
+ g_debug ("GdmSlave: Creating proxy for %s", slave->priv->display_id);
+ error = NULL;
+@@ -539,6 +564,134 @@
+ /* cache some values up front */
+ error = NULL;
+ res = dbus_g_proxy_call (slave->priv->display_proxy,
++ "IsNested",
++ &error,
++ G_TYPE_INVALID,
++ G_TYPE_BOOLEAN, &slave->priv->display_is_nested,
++ G_TYPE_INVALID);
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to get value: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to get value");
++ }
++
++ return FALSE;
++ }
++
++ if (slave->priv->display_is_nested) {
++ /* parent display */
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->display_proxy,
++ "GetParentId",
++ &error,
++ G_TYPE_INVALID,
++ DBUS_TYPE_G_OBJECT_PATH, &slave->priv->display_parent_id,
++ G_TYPE_INVALID);
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to get display parent ID: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to get display parent ID");
++ }
++
++ return FALSE;
++ }
++ }
++
++ if (slave->priv->display_parent_id) {
++ g_debug ("GdmSlave: Got display parent ID: %s", slave->priv->display_parent_id);
++
++ g_debug ("GdmSlave: Creating proxy for parent %s", slave->priv->display_parent_id);
++ error = NULL;
++ slave->priv->parent_display_proxy = dbus_g_proxy_new_for_name_owner (slave->priv->connection,
++ GDM_DBUS_NAME,
++ slave->priv->display_parent_id,
++ GDM_DBUS_DISPLAY_INTERFACE,
++ &error);
++ g_signal_connect (slave->priv->parent_display_proxy,
++ "destroy",
++ G_CALLBACK (parent_display_proxy_destroyed_cb),
++ slave);
++
++ if (slave->priv->parent_display_proxy == NULL) {
++ if (error != NULL) {
++ g_warning ("Failed to create parent display proxy %s: %s", slave->priv->display_parent_id, error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Unable to create parent display proxy");
++ }
++ return FALSE;
++ }
++
++ /* Make sure display parent ID works */
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->parent_display_proxy,
++ "GetId",
++ &error,
++ G_TYPE_INVALID,
++ DBUS_TYPE_G_OBJECT_PATH, &parent_id,
++ G_TYPE_INVALID);
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to get parent display ID %s: %s", slave->priv->display_parent_id, error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to get parent display ID %s", slave->priv->display_parent_id);
++ }
++
++ return FALSE;
++ }
++
++ g_debug ("GdmSlave: Got display parent ID: %s", parent_id);
++
++ if (strcmp (parent_id, slave->priv->display_parent_id) != 0) {
++ g_critical ("Display parent ID doesn't match");
++ exit (1);
++ }
++
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->parent_display_proxy,
++ "GetX11DisplayName",
++ &error,
++ G_TYPE_INVALID,
++ G_TYPE_STRING, &slave->priv->parent_display_name,
++ G_TYPE_INVALID);
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to get parent display value: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to get parent display value");
++ }
++
++ return FALSE;
++ }
++
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->parent_display_proxy,
++ "GetUserAuthorization",
++ &error,
++ G_TYPE_INVALID,
++ G_TYPE_STRING, &slave->priv->parent_display_username,
++ G_TYPE_STRING, &slave->priv->parent_display_user_auth_file,
++ G_TYPE_INVALID);
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to get parent display value: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to get parent display value");
++ }
++
++ return FALSE;
++ }
++ }
++
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->display_proxy,
+ "IsLocal",
+ &error,
+ G_TYPE_INVALID,
+@@ -1284,6 +1437,14 @@
+ }
+
+ static void
++_gdm_slave_set_display_parent_id (GdmSlave *slave,
++ const char *id)
++{
++ g_free (slave->priv->display_parent_id);
++ slave->priv->display_parent_id = g_strdup (id);
++}
++
++static void
+ _gdm_slave_set_display_name (GdmSlave *slave,
+ const char *name)
+ {
+@@ -1330,6 +1491,37 @@
+ }
+
+ static void
++_gdm_slave_set_display_is_nested (GdmSlave *slave,
++ gboolean is_nested)
++{
++ slave->priv->display_is_nested = is_nested;
++}
++
++static void
++_gdm_slave_set_parent_display_name (GdmSlave *slave,
++ const char *name)
++{
++ g_free (slave->priv->parent_display_name);
++ slave->priv->parent_display_name = g_strdup (name);
++}
++
++static void
++_gdm_slave_set_parent_display_user_auth_file (GdmSlave *slave,
++ const char *auth_file)
++{
++ g_free (slave->priv->parent_display_user_auth_file);
++ slave->priv->parent_display_user_auth_file = g_strdup (auth_file);
++}
++
++static void
++_gdm_slave_set_parent_display_username (GdmSlave *slave,
++ const char *name)
++{
++ g_free (slave->priv->parent_display_username);
++ slave->priv->parent_display_username = g_strdup (name);
++}
++
++static void
+ gdm_slave_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+@@ -1343,6 +1535,9 @@
+ case PROP_DISPLAY_ID:
+ _gdm_slave_set_display_id (self, g_value_get_string (value));
+ break;
++ case PROP_DISPLAY_PARENT_ID:
++ _gdm_slave_set_display_parent_id (self, g_value_get_string (value));
++ break;
+ case PROP_DISPLAY_NAME:
+ _gdm_slave_set_display_name (self, g_value_get_string (value));
+ break;
+@@ -1361,6 +1556,18 @@
+ case PROP_DISPLAY_IS_LOCAL:
+ _gdm_slave_set_display_is_local (self, g_value_get_boolean (value));
+ break;
++ case PROP_DISPLAY_IS_NESTED:
++ _gdm_slave_set_display_is_nested (self, g_value_get_boolean (value));
++ break;
++ case PROP_PARENT_DISPLAY_NAME:
++ _gdm_slave_set_parent_display_name (self, g_value_get_string (value));
++ break;
++ case PROP_PARENT_DISPLAY_USER_AUTH_FILE:
++ _gdm_slave_set_parent_display_user_auth_file (self, g_value_get_string (value));
++ break;
++ case PROP_PARENT_DISPLAY_USERNAME:
++ _gdm_slave_set_parent_display_username (self, g_value_get_string (value));
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -1381,6 +1588,9 @@
+ case PROP_DISPLAY_ID:
+ g_value_set_string (value, self->priv->display_id);
+ break;
++ case PROP_DISPLAY_PARENT_ID:
++ g_value_set_string (value, self->priv->display_parent_id);
++ break;
+ case PROP_DISPLAY_NAME:
+ g_value_set_string (value, self->priv->display_name);
+ break;
+@@ -1399,6 +1609,18 @@
+ case PROP_DISPLAY_IS_LOCAL:
+ g_value_set_boolean (value, self->priv->display_is_local);
+ break;
++ case PROP_DISPLAY_IS_NESTED:
++ g_value_set_boolean (value, self->priv->display_is_nested);
++ break;
++ case PROP_PARENT_DISPLAY_NAME:
++ g_value_set_string (value, self->priv->parent_display_name);
++ break;
++ case PROP_PARENT_DISPLAY_USER_AUTH_FILE:
++ g_value_set_string (value, self->priv->parent_display_user_auth_file);
++ break;
++ case PROP_PARENT_DISPLAY_USERNAME:
++ g_value_set_string (value, self->priv->parent_display_username);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -1480,6 +1702,13 @@
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class,
++ PROP_DISPLAY_PARENT_ID,
++ g_param_spec_string ("display-parent-id",
++ "id",
++ "id",
++ NULL,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
+ PROP_DISPLAY_NAME,
+ g_param_spec_string ("display-name",
+ "display name",
+@@ -1523,6 +1752,34 @@
+ "display is local",
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
++ PROP_DISPLAY_IS_NESTED,
++ g_param_spec_boolean ("display-is-nested",
++ "display is nested",
++ "display is nested",
++ FALSE,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
++ PROP_PARENT_DISPLAY_NAME,
++ g_param_spec_string ("parent-display-name",
++ "parent display name",
++ "parent display name",
++ NULL,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
++ PROP_PARENT_DISPLAY_USER_AUTH_FILE,
++ g_param_spec_string ("parent-display-user-auth-file",
++ "parent display user auth file",
++ "parent display user auth file",
++ NULL,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++ g_object_class_install_property (object_class,
++ PROP_PARENT_DISPLAY_USERNAME,
++ g_param_spec_string ("parent-display-username",
++ "parent display authorized username",
++ "parent display authorized username",
++ NULL,
++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+
+ signals [STOPPED] =
+ g_signal_new ("stopped",
+@@ -1568,7 +1825,7 @@
+ g_free (slave->priv->display_seat_id);
+ g_free (slave->priv->display_x11_authority_file);
+ g_free (slave->priv->parent_display_name);
+- g_free (slave->priv->parent_display_x11_authority_file);
++ g_free (slave->priv->parent_display_user_auth_file);
+ g_array_free (slave->priv->display_x11_cookie, TRUE);
+
+ G_OBJECT_CLASS (gdm_slave_parent_class)->finalize (object);
+--- a/daemon/gdm-display.xml
++++ b/daemon/gdm-display.xml
+@@ -4,6 +4,9 @@
+ <method name="GetId">
+ <arg name="id" direction="out" type="o"/>
+ </method>
++ <method name="GetParentId">
++ <arg name="parent_id" direction="out" type="o"/>
++ </method>
+ <method name="GetX11DisplayName">
+ <arg name="name" direction="out" type="s"/>
+ </method>
+@@ -25,6 +28,9 @@
+ <method name="IsLocal">
+ <arg name="local" direction="out" type="b"/>
+ </method>
++ <method name="IsNested">
++ <arg name="nested" direction="out" type="b"/>
++ </method>
+ <method name="AddUserAuthorization">
+ <arg name="username" direction="in" type="s"/>
+ <arg name="filename" direction="out" type="s"/>
+@@ -32,6 +38,10 @@
+ <method name="RemoveUserAuthorization">
+ <arg name="username" direction="in" type="s"/>
+ </method>
++ <method name="GetUserAuthorization">
++ <arg name="username" direction="out" type="s"/>
++ <arg name="filename" direction="out" type="s"/>
++ </method>
+ <method name="SetSlaveBusName">
+ <arg name="name" direction="in" type="s"/>
+ </method>
+--- a/data/gdm.conf.in
++++ b/data/gdm.conf.in
+@@ -62,10 +62,16 @@
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Display"
+ send_member="IsLocal"/>
++ <allow send_destination="org.gnome.DisplayManager"
++ send_interface="org.gnome.DisplayManager.Display"
++ send_member="IsNested"/>
+
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"
+ send_member="CreateTransientDisplay"/>
++ <allow send_destination="org.gnome.DisplayManager"
++ send_interface="org.gnome.DisplayManager.LocalDisplayFactory"
++ send_member="CreateNestedDisplay"/>
+
+ <allow send_destination="org.gnome.DisplayManager"
+ send_interface="org.gnome.DisplayManager.Manager"
+--- a/daemon/gdm-server.c
++++ b/daemon/gdm-server.c
+@@ -76,11 +76,13 @@
+ char *auth_file;
+
+ gboolean is_parented;
++ gboolean is_nested;
+ char *parent_display_name;
+ char *parent_auth_file;
+ char *chosen_hostname;
+
+ guint child_watch_id;
++ gboolean is_ready;
+ };
+
+ enum {
+@@ -89,6 +91,7 @@
+ PROP_DISPLAY_DEVICE,
+ PROP_AUTH_FILE,
+ PROP_IS_PARENTED,
++ PROP_IS_NESTED,
+ PROP_PARENT_DISPLAY_NAME,
+ PROP_PARENT_AUTH_FILE,
+ PROP_CHOSEN_HOSTNAME,
+@@ -166,9 +169,12 @@
+ static gboolean
+ emit_ready_idle (GdmServer *server)
+ {
+- g_debug ("GdmServer: Got USR1 from X server - emitting READY");
++ if (!server->priv->is_ready) {
++ server->priv->is_ready = TRUE;
++ g_debug ("GdmServer: Got USR1 from X server - emitting READY");
+
+- g_signal_emit (server, signals[READY], 0);
++ g_signal_emit (server, signals[READY], 0);
++ }
+ return FALSE;
+ }
+
+@@ -654,7 +660,13 @@
+ g_ptr_array_foreach (env, (GFunc)g_free, NULL);
+ g_ptr_array_free (env, TRUE);
+
+- g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->priv->pid);
++ if (server->priv->is_nested) {
++ // Xephyr doesn't send back any signal
++ g_debug ("GdmServer: Started Xephyr server process %d", (int)server->priv->pid);
++ g_timeout_add (500, (GSourceFunc)emit_ready_idle, server);
++ } else {
++ g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->priv->pid);
++ }
+
+ server->priv->child_watch_id = g_child_watch_add (server->priv->pid,
+ (GChildWatchFunc)server_child_watch,
+@@ -759,6 +771,41 @@
+ }
+
+ static void
++_gdm_server_set_parent_display_name (GdmServer *server,
++ const char *name)
++{
++ g_free (server->priv->parent_display_name);
++ server->priv->parent_display_name = g_strdup (name);
++}
++
++static void
++_gdm_server_set_parent_auth_file (GdmServer *server,
++ const char *auth_file)
++{
++ g_free (server->priv->parent_auth_file);
++ server->priv->parent_auth_file = g_strdup (auth_file);
++}
++
++static void
++_gdm_server_set_is_parented (GdmServer *server,
++ gboolean is_parented)
++{
++ server->priv->is_parented = is_parented;
++}
++
++static void
++_gdm_server_set_is_nested (GdmServer *server,
++ gboolean is_nested)
++{
++ server->priv->is_nested = is_nested;
++ g_free (server->priv->command);
++ if (is_nested)
++ server->priv->command = g_strdup (X_XNEST_CMD " " X_XNEST_CONFIG_OPTIONS " -br");
++ else
++ server->priv->command = g_strdup (X_SERVER " -br -verbose");
++}
++
++static void
+ _gdm_server_set_disable_tcp (GdmServer *server,
+ gboolean disabled)
+ {
+@@ -785,9 +832,21 @@
+ case PROP_USER_NAME:
+ _gdm_server_set_user_name (self, g_value_get_string (value));
+ break;
++ case PROP_PARENT_DISPLAY_NAME:
++ _gdm_server_set_parent_display_name (self, g_value_get_string (value));
++ break;
++ case PROP_PARENT_AUTH_FILE:
++ _gdm_server_set_parent_auth_file (self, g_value_get_string (value));
++ break;
+ case PROP_DISABLE_TCP:
+ _gdm_server_set_disable_tcp (self, g_value_get_boolean (value));
+ break;
++ case PROP_IS_PARENTED:
++ _gdm_server_set_is_parented (self, g_value_get_boolean (value));
++ break;
++ case PROP_IS_NESTED:
++ _gdm_server_set_is_nested (self, g_value_get_boolean (value));
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -818,9 +877,21 @@
+ case PROP_USER_NAME:
+ g_value_set_string (value, self->priv->user_name);
+ break;
++ case PROP_PARENT_DISPLAY_NAME:
++ g_value_set_string (value, self->priv->parent_display_name);
++ break;
++ case PROP_PARENT_AUTH_FILE:
++ g_value_set_string (value, self->priv->parent_auth_file);
++ break;
+ case PROP_DISABLE_TCP:
+ g_value_set_boolean (value, self->priv->disable_tcp);
+ break;
++ case PROP_IS_PARENTED:
++ g_value_set_boolean (value, self->priv->is_parented);
++ break;
++ case PROP_IS_NESTED:
++ g_value_set_boolean (value, self->priv->is_nested);
++ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+@@ -921,6 +992,34 @@
+ NULL,
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
++ g_object_class_install_property (object_class,
++ PROP_IS_PARENTED,
++ g_param_spec_boolean ("is-parented",
++ NULL,
++ NULL,
++ FALSE,
++ G_PARAM_READWRITE));
++ g_object_class_install_property (object_class,
++ PROP_IS_NESTED,
++ g_param_spec_boolean ("is-nested",
++ NULL,
++ NULL,
++ FALSE,
++ G_PARAM_READWRITE));
++ g_object_class_install_property (object_class,
++ PROP_PARENT_DISPLAY_NAME,
++ g_param_spec_string ("parent-display-name",
++ "parent name",
++ "parent name",
++ NULL,
++ G_PARAM_READWRITE));
++ g_object_class_install_property (object_class,
++ PROP_PARENT_AUTH_FILE,
++ g_param_spec_string ("parent-auth-file",
++ "parent auth file",
++ "parent auth file",
++ NULL,
++ G_PARAM_READWRITE));
+
+ }
+
+@@ -933,6 +1032,7 @@
+ server->priv->pid = -1;
+ server->priv->command = g_strdup (X_SERVER " -br -verbose");
+ server->priv->log_dir = g_strdup (LOGDIR);
++ server->priv->is_ready = FALSE;
+
+ add_ready_handler (server);
+ }
+--- a/utils/gdmflexiserver.c
++++ b/utils/gdmflexiserver.c
+@@ -34,6 +34,9 @@
+ #include <dbus/dbus-glib-lowlevel.h>
+
+ #define GDM_DBUS_NAME "org.gnome.DisplayManager"
++#define GDM_DBUS_DISPLAY_INTERFACE "org.gnome.DisplayManager.Display"
++#define GDM_DBUS_DISPLAY_MANAGER_PATH "/org/gnome/DisplayManager/Manager"
++#define GDM_DBUS_DISPLAY_MANAGER_INTERFACE "org.gnome.DisplayManager.Manager"
+ #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
+ #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
+
+@@ -59,7 +62,7 @@
+ /* Keep all config options for compatibility even if they are noops */
+ GOptionEntry options [] = {
+ { "command", 'c', 0, G_OPTION_ARG_STRING, &send_command, N_("Only the VERSION command is supported"), N_("COMMAND") },
+- { "xnest", 'n', 0, G_OPTION_ARG_NONE, &use_xnest, N_("Ignored - retained for compatibility"), NULL },
++ { "xnest", 'n', 0, G_OPTION_ARG_NONE, &use_xnest, N_("Run gdm in a nested window"), NULL },
+ { "no-lock", 'l', 0, G_OPTION_ARG_NONE, &no_lock, N_("Ignored - retained for compatibility"), NULL },
+ { "debug", 'd', 0, G_OPTION_ARG_NONE, &debug_in, N_("Debugging output"), NULL },
+ { "authenticate", 'a', 0, G_OPTION_ARG_NONE, &authenticate, N_("Ignored - retained for compatibility"), NULL },
+@@ -548,6 +551,216 @@
+ }
+
+ static char **
++get_displays (DBusConnection *connection)
++{
++ DBusError error;
++ DBusMessage *message;
++ DBusMessage *reply;
++ DBusMessageIter iter_reply;
++ DBusMessageIter iter_array;
++ char **displays;
++
++ displays = NULL;
++ message = NULL;
++ reply = NULL;
++
++ dbus_error_init (&error);
++ message = dbus_message_new_method_call (GDM_DBUS_NAME,
++ GDM_DBUS_DISPLAY_MANAGER_PATH,
++ GDM_DBUS_DISPLAY_MANAGER_INTERFACE,
++ "GetDisplays");
++ if (message == NULL) {
++ g_debug ("Couldn't allocate the D-Bus message");
++ goto out;
++ }
++
++ dbus_error_init (&error);
++ reply = dbus_connection_send_with_reply_and_block (connection,
++ message,
++ -1, &error);
++ dbus_connection_flush (connection);
++
++ if (dbus_error_is_set (&error)) {
++ g_debug ("Gdm %s raised:\n %s\n\n", error.name, error.message);
++ goto out;
++ }
++
++ if (reply == NULL) {
++ g_debug ("Gdm: No reply for GetDisplays");
++ goto out;
++ }
++
++ dbus_message_iter_init (reply, &iter_reply);
++ if (dbus_message_iter_get_arg_type (&iter_reply) != DBUS_TYPE_ARRAY) {
++ g_debug ("Gdm Wrong reply for GetDisplays - expecting an array.");
++ goto out;
++ }
++
++ dbus_message_iter_recurse (&iter_reply, &iter_array);
++ displays = get_path_array_from_iter (&iter_array, NULL);
++
++ out:
++ if (message != NULL) {
++ dbus_message_unref (message);
++ }
++ if (reply != NULL) {
++ dbus_message_unref (reply);
++ }
++
++ return displays;
++}
++
++static gboolean
++display_has_x11_name (DBusConnection *connection,
++ const char *display_id,
++ const char *display_name)
++{
++ DBusError local_error;
++ DBusMessage *message;
++ DBusMessage *reply;
++ gboolean ret;
++ DBusMessageIter iter;
++ const char *value;
++
++ ret = FALSE;
++ reply = NULL;
++
++ dbus_error_init (&local_error);
++ message = dbus_message_new_method_call (GDM_DBUS_NAME,
++ display_id,
++ GDM_DBUS_DISPLAY_INTERFACE,
++ "GetX11DisplayName");
++ if (message == NULL) {
++ goto out;
++ }
++
++ dbus_error_init (&local_error);
++ reply = dbus_connection_send_with_reply_and_block (connection,
++ message,
++ -1,
++ &local_error);
++ if (reply == NULL) {
++ if (dbus_error_is_set (&local_error)) {
++ g_warning ("Unable to determine display name: %s", local_error.message);
++ dbus_error_free (&local_error);
++ goto out;
++ }
++ }
++
++ dbus_message_iter_init (reply, &iter);
++ dbus_message_iter_get_basic (&iter, &value);
++
++ if (value == NULL || value[0] == '\0' || strncmp (value, display_name, index(display_name,'.')-display_name) != 0) {
++ goto out;
++ }
++
++ ret = TRUE;
++ out:
++ if (message != NULL) {
++ dbus_message_unref (message);
++ }
++ if (reply != NULL) {
++ dbus_message_unref (reply);
++ }
++
++ return ret;
++}
++
++static char *
++get_current_display_id (DBusConnection *connection)
++{
++ const char *display_name;
++ char *display_id;
++ char **displays;
++ int i;
++
++ display_id = NULL;
++
++ display_name = g_getenv ("DISPLAY");
++ if (!display_name) {
++ g_warning ("DISPLAY environment variable not set. Can't start nested display without a parent display");
++ goto out;
++ }
++
++ displays = get_displays (connection);
++ for (i = 0; displays[i] != NULL; i++) {
++ if (display_has_x11_name (connection, displays[i], display_name)) {
++ display_id = g_strdup (displays[i]);
++ goto out;
++ }
++ }
++
++ out:
++ g_strfreev (displays);
++ return display_id;
++}
++
++static gboolean
++create_nested_display (DBusConnection *connection,
++ GError **error)
++{
++ DBusError local_error;
++ DBusMessage *message;
++ DBusMessage *reply;
++ gboolean ret;
++ DBusMessageIter iter;
++ const char *value;
++ char *display_id;
++
++ ret = FALSE;
++ reply = NULL;
++
++ display_id = get_current_display_id (connection);
++ if (display_id == NULL) {
++ g_set_error (error, GDM_FLEXISERVER_ERROR, 0, "Can't determine current display id.");
++ goto out;
++ }
++
++ dbus_error_init (&local_error);
++ message = dbus_message_new_method_call (GDM_DBUS_NAME,
++ GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH,
++ GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE,
++ "CreateNestedDisplay");
++ if (message == NULL) {
++ g_set_error (error, GDM_FLEXISERVER_ERROR, 0, "Out of memory.");
++ goto out;
++ }
++
++ dbus_message_iter_init_append (message, &iter);
++ dbus_message_iter_append_basic (&iter, DBUS_TYPE_OBJECT_PATH, &display_id);
++
++ dbus_error_init (&local_error);
++ reply = dbus_connection_send_with_reply_and_block (connection,
++ message,
++ -1,
++ &local_error);
++ if (reply == NULL) {
++ if (dbus_error_is_set (&local_error)) {
++ g_warning ("Unable to create nested display: %s", local_error.message);
++ g_set_error (error, GDM_FLEXISERVER_ERROR, 0, "%s", local_error.message);
++ dbus_error_free (&local_error);
++ goto out;
++ }
++ }
++
++ dbus_message_iter_init (reply, &iter);
++ dbus_message_iter_get_basic (&iter, &value);
++ g_debug ("Started %s", value);
++
++ ret = TRUE;
++ out:
++ if (message != NULL) {
++ dbus_message_unref (message);
++ }
++ if (reply != NULL) {
++ dbus_message_unref (reply);
++ }
++ g_free (display_id);
++
++ return ret;
++}
++
++static char **
+ seat_get_sessions (DBusConnection *connection,
+ const char *seat_id)
+ {
+@@ -666,6 +879,10 @@
+ return FALSE;
+ }
+
++ if (use_xnest) {
++ return create_nested_display (connection, error);
++ }
++
+ /* First look for any existing LoginWindow sessions on the seat.
+ If none are found, create a new one. */
+
+@@ -742,11 +959,6 @@
+
+ }
+
+- if (use_xnest) {
+- g_warning ("Not yet implemented");
+- return 1;
+- }
+-
+ error = NULL;
+ res = goto_login_session (&error);
+ if (! res) {
Modified: desktop/experimental/gdm3/debian/patches/90_relibtoolize.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/90_relibtoolize.patch?rev=23502&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/patches/90_relibtoolize.patch [utf-8] (original)
+++ desktop/experimental/gdm3/debian/patches/90_relibtoolize.patch [utf-8] Thu Apr 1 11:28:07 2010
@@ -11267,8 +11267,8 @@
@@ -1,20 +1,24 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
--# Generated by GNU Autoconf 2.63 for gdm 2.29.92.
-+# Generated by GNU Autoconf 2.65 for gdm 2.29.92.
+-# Generated by GNU Autoconf 2.63 for gdm 2.30.0.
++# Generated by GNU Autoconf 2.65 for gdm 2.30.0.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gdm>.
#
@@ -12316,8 +12316,8 @@
# Identity of this package.
PACKAGE_NAME='gdm'
@@ -753,6 +705,7 @@
- PACKAGE_VERSION='2.29.92'
- PACKAGE_STRING='gdm 2.29.92'
+ PACKAGE_VERSION='2.30.0'
+ PACKAGE_STRING='gdm 2.30.0'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gdm'
+PACKAGE_URL=''
@@ -12602,7 +12602,7 @@
@@ -2011,124 +1968,656 @@
if $ac_init_version; then
cat <<\_ACEOF
- gdm configure 2.29.92
+ gdm configure 2.30.0
-generated by GNU Autoconf 2.63
+generated by GNU Autoconf 2.65
@@ -12618,7 +12618,7 @@
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
--It was created by gdm $as_me 2.29.92, which was
+-It was created by gdm $as_me 2.30.0, which was
-generated by GNU Autoconf 2.63. Invocation command line was
+## ------------------------ ##
+## Autoconf initialization. ##
@@ -13242,7 +13242,7 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
-+It was created by gdm $as_me 2.29.92, which was
++It was created by gdm $as_me 2.30.0, which was
+generated by GNU Autoconf 2.65. Invocation command line was
+
+ $ $0 $@
@@ -59774,7 +59774,7 @@
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
-+This file was extended by gdm $as_me 2.29.92, which was
++This file was extended by gdm $as_me 2.30.0, which was
+generated by GNU Autoconf 2.65. Invocation command line was
- full_var="$FROM_VAR"
@@ -59874,7 +59874,7 @@
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
-+gdm config.status 2.29.92
++gdm config.status 2.30.0
+configured by $0, generated by GNU Autoconf 2.65,
+ with options \\"\$ac_cs_config\\"
@@ -62138,7 +62138,7 @@
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
--This file was extended by gdm $as_me 2.29.92, which was
+-This file was extended by gdm $as_me 2.30.0, which was
-generated by GNU Autoconf 2.63. Invocation command line was
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
@@ -62243,7 +62243,7 @@
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_version="\\
--gdm config.status 2.29.92
+-gdm config.status 2.30.0
-configured by $0, generated by GNU Autoconf 2.63,
- with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
@@ -67411,7 +67411,7 @@
installcheck-am:
maintainer-clean: maintainer-clean-am
-@@ -995,6 +1036,7 @@
+@@ -994,6 +1035,7 @@
#man_MANS = gdm.1
#EXTRA_DIST = gdm.1
Modified: desktop/experimental/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/series?rev=23502&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/experimental/gdm3/debian/patches/series [utf-8] Thu Apr 1 11:28:07 2010
@@ -8,4 +8,5 @@
08_frequent-users_greeter.patch
09_default_session.patch
10_gdm3_pam.patch
+11_xephyr_nested.patch
90_relibtoolize.patch
More information about the pkg-gnome-commits
mailing list