Commit 343865a8 authored by Brian Cameron's avatar Brian Cameron Committed by Brian Cameron

Fix bug that was causing gdmflexiserver to fail. Because we were calling

2006-02-10  Brian Cameron  <brian.cameron@sun.com>

        * gui/gdmflexiserver.c: Fix bug that was causing gdmflexiserver
          to fail.  Because we were calling gtk-init when the --command
          option was being used, and this breaks gdmflexiserver since it
          is sometimes run with the --command option when there is no
          display.
        * README, README.install: Updated with some new features and moved some
          info to docs/C/gdm.xml where the info is more useful.
        * TODO: Updated.
        * configure.ac: Fixed the mess about /usr/opensolaris/bin
        * gui/greeter/greeter_system.c: Do not put tooltips on menus.  They are
          a bad idea and their use is discouraged by the HIG because they break
          a11y.
        * docs/C/gdm.xml: Updated docs with a bunch of information from the
          README and README.install file that really belonged in the docs.
parent dbb9858f
2006-02-10 Brian Cameron <brian.cameron@sun.com>
* gui/gdmflexiserver.c: Fix bug that was causing gdmflexiserver
to fail. Because we were calling gtk-init when the --command
option was being used, and this breaks gdmflexiserver since it
is sometimes run with the --command option when there is no
display.
* README, README.install: Updated with some new features and moved some
info to docs/C/gdm.xml where the info is more useful.
* TODO: Updated.
* configure.ac: Fixed the mess about /usr/opensolaris/bin
* gui/greeter/greeter_system.c: Do not put tooltips on menus. They are
a bad idea and their use is discouraged by the HIG because they break
a11y.
* docs/C/gdm.xml: Updated docs with a bunch of information from the
README and README.install file that really belonged in the docs.
2006-02-09 Brian Cameron <brian.cameron@sun.com>
A known issue with gdmdynamic is that when a display connects to
......
......@@ -13,40 +13,40 @@
-----------------------------------------------------------
The Gnome Display Manager is a re-implementation of the well known xdm
program. GDM 2.4 implements all significant features required for managing
program. GDM implements all significant features required for managing
local and remote displays.
Configuration Stability:
The key/value pairs defined in the %{sysconfdir}/gdm/gdm.conf file is
considered a "stable" interface and should only change in ways that are
backwards compatible.
gdm daemon:
o X Authentication
o Default and per-display initialization scripts
o Pre and post session scripts
o XDMCP (Remote login) including TCP Wrappers for access
control
o machine-specific and system-wide configuration support.
o Default and per-display initialization scripts.
o PreSession, PostSession, Init, and PostLogin scripts.
o Pluggable Authentication Modules (PAM)
o XDMCP (Remote login)
o TCP Wrappers for access control (for XDMCP)
o IPv6 support (optional, use --enable-ipv6=yes to get this)
o Autologin for single user workstations
o Timed login for kiosks and public terminals
o On demand local servers
o Autologin for single user workstations (off by default)
o Timed login for kiosks and public terminals (off by
default)
o On demand local servers (gdmflexiserver)
o SunRay (SRSS) support via gdmdynamic.
o Can manage X servers without a login window
(Such as for XDMCP terminal client machines)
o Many other features ...
gdmlogin and gdmgreeter:
o Can launch the XDMCP chooser program (remote login)
o Can launch the Setup program (off by default)
o Can Halt, reboot, or suspend the machine (off by
default)
o Session selection support
o Language selection support
gdmlogin:
o Logo image
o Background image/color
o Halt, reboot, suspend
o Can launch the XDMCP chooser
o Can launch the Setup program
o Session selection support
o Language selection support
o Face browser
o Background program support
o Xinerama support
......@@ -54,13 +54,8 @@ gdmlogin:
gdmgreeter:
o Fully themable
o Halt, reboot, suspend
o Can launch the XDMCP chooser
o Can launch the Setup program
o Session selection support
o Language selection support
o Face browser (if in the theme)
o Xinerama support
o Face browser (if in the theme)
gdmchooser:
......@@ -71,37 +66,46 @@ gdmchooser:
gdmsetup:
o GUI way to configure the more important aspects of GDM, the rest
is configured by editing the config file
Most features can be turned on and off in the configuration file by
the sysadmin.
o GUI to edit the GDM configuration. Refer to the documentation
for more information about how to configure GDM.
Availability:
ftp://ftp.gnome.org/pub/GNOME/sources/gdm/
Reporting Bugs:
Please consult README.install for instructions on how to configure and
install gdm.
When reporting bugs you should first turn on debugging in
gdm.conf. This causes debug messages to be sent to the system
log (/var/log/messages or /var/adm/messages) and include the
output sent to syslog.
The GDM mail alias is gdm-list@gnome.org. Archives can be found here:
You should not have to configure syslog for this to work, but if
you don't see GDM messages in your syslog you may need to
configure it.
http://mail.gnome.org/archives/
You should not leave "debug" on after collecting data. It will
clutter your syslog and slow system performance.
Installation:
Report bugs in gdm2 at http://bugzilla.gnome.org under the product "gdm".
Or mail Brian Cameron <Brian.Cameron@Sun.Com> or George <jirka@5z.com>
with suggestions or other such things.
Please consult README.install for instructions on how to
configure and install gdm.
Contact:
The GDM mail alias is gdm-list@gnome.org. Archives can be found here:
http://mail.gnome.org/archives/
George
(based on original README by Martin K. Petersen)
Martin, George, and then Brian
-------------------------------------------------------------------------
Note:
Originally I started maintaining gdm2 because martin didn't yet finish gdm3 and
was in general busy and we needed a working gdm for 1.4. The move to gdm3 is
very unlikely to happen nowdays as gdm3 has been pretty dead for quite
very unlikely to happen now that gdm3 has been pretty dead for quite
a while. Do not send gdm2 patches to martin (well you can but he'll likely
ignore them:), send them to me instead and I'll integrate them for you.
......@@ -109,8 +113,8 @@ ignore them:), send them to me instead and I'll integrate them for you.
-------------------------------------------------------------------------
Note:
In January of 2005 George asked me to take over maintainership duties for
gdm2, so send patches to me and I will get them integrated.
Starting January, 2005 I have been acting as maintainer. Send patches to
me and I will work with you to get them integrated.
-Brian Cameron <Brian.Cameron@Sun.Com>
-------------------------------------------------------------------------
QUICK NOTES ON INSTALLATION/USE:
I try to keep this document updated with issues that are brought
up on gdm-list@gnome.org. GDM can be sometimes challanging to setup
and get working. GDM does things like start up your Xserver, so it
is sometimes necessary to tweak the GDM configuration to work with
any given setup.
This document tries to capture the most common problems. Also
refer to the "Troubleshooting" section of the GDM dcumentation:
http://www.gnome.org/projects/gdm/docs.html
You can also look in docs/C/gdm.xml for the raw XML version of the
docs.
General
=======
If you didn't compile Gnome yourself, make sure you have the appropriate
-devel packages installed.
Make sure you are familiar with the "Overview" and "Security"
sections of the GDM documentation:
If building from CVS, there is a script gdm-build.sh in the root of the
tree that you can use to build gdm and then install it with "make install".
The setup is like Red Hat.
http://www.gnome.org/projects/gdm/docs.html
WARNING: gdm is a *daemon* -- not a common user application. It
requires extensive knowledge about your system setup to install and
configure. gdm isn't - and never will be - Plug and Play
WARNING: "gdm-binary" is a *daemon* -- not a common user application.
It requires extensive knowledge about your system setup to install and
configure. gdm does not intend to be Plug and Play.
(i.e. ./configure ; make install).
Security
========
For security reasons a dedicated user and group id are required for
proper operation! This userid is used to run the GDM GUI programs
required for login. All functionality that requires root authority
is done by the GDM daemon process. This design ensures that if the
GUI programs are somehow exploited, only the dedicated user
privileges are available. By default GDM assumes the user and the
group are called `gdm'. These are configured via the User and
Group configuration options in the gdm.conf file. The user and
group should be created before running "make install".
Distributions and system administrators using GDM are expected to
setup the dedicated user properly. It is recommended that this
userid be configured to disallow login and to not have a default
shell. Distributions and system administrators should set up
the filesystem to ensure that the GDM user does not have read or
write access to sensitive files.
The necessity for a gdm userid/group is because the GDM user does
require certain special permissions. It must be able to read and
write Xauth keys to /var/lib/gdm. This directory should have
root:gdm ownership and 1770 permissions. Running "make install"
will set this directory to these values. You will need to
modify the configure/Makefile if you want to use a different
group than gdm. The GDM daemon process will reset this
directory to proper ownership/permissions if it is somehow not
set properly. The need to be able to write Xauth files is why
user "nobody" is not appropriate for gdm.
If the gdm user is set up properly and gdm user access is somehow
exploited, this means that the GDM user should only be able to
maliciously modify the Xauth keys causing potential
Denial-Of-Service attacks. If a person gains the ability to run
programs as the user gdm, it would be possible to snoop on running
GDM processes, including usernames and passwords as they are
being typed in. Therefore it is important to ensure that
the gdm user is disallowed login and has no default shell.
Building GDM
------------
When reporting bugs you should first turn on debugging in
gdm.conf. Your syslog daemon might not log debug information per
default so you should make sure daemon.debug events are logged to a
file. Include the resulting log in your bug report. It is known
that debugging can sometimes cause unrelated problems due to the
interaction with the syslog daemon, so it is not advisable that
you run with the debug option all the time. (Not to mention
it generates a LOT of spew)
XDMCP is disabled by default since XDMCP can be exploited to
create Denial-Of-Service attacks if a malicious user sends a
flood of XDMCP requests to your computer. It may be enabled
by setting "enable=true" in the "[xdmcp]" section of the
gdm.conf file.
The face browser reveals usernames on your system and should
not be used unless the system is physically secure. In other
words, it is a feature most appropriate for home use and
is not recommended on systems that are for public use.
Read the GDM documentation for more information about security:
http://www.gnome.org/projects/gdm/
Configure Options
=================
Configuration is done by editing the gdm.conf file (located in
<prefix>/etc/gdm/gdm.conf). If no config file exists, make install
will create one for you.
The default HaltCommand and RebootCommand gdm.conf options may
not be appropriate for your distribution. Distribution vendors
who ship GDM are advised to modify these to the supported
Halt/Reboot commands for their system. The correct HaltCommand
for FreeBSD is "/sbin/halt -p" so the disks are synced on shutdown,
and on other systems "/sbin/init 0" or /sbin/init 5" may be most
appropriate. The correct RebootCommand for some systems may
be "/sbin/init 6". Patches to improve the GDM configure script
and how it sets these values by default would be accepted.
On some systems "/sbin/init 0", "/sbin/init 5",
or "/sbin/halt -p" may be
You may need to update your build tools if the autogen.sh command
complains that it requires a newer version of the build tool.
If you did not compile GNOME yourself, make sure you have the appropriate
-devel packages installed.
Here's a good configure for GDM:
./autogen.sh --enable-ipv6=yes --with-at-bindir=/usr/sfw/bin
--with-prefetch --with-post-path=/usr/openwin/bin
Remove --enable-ipv6=yes if you do not use IPv6.
If you want to add distribution-specific directories to the end of
DefaultPath and RootDefaultPath, then use the --with-post-path
......@@ -104,19 +49,12 @@ configure option. Argument value should be a list of directories
separated by ":" characters (no spaces).
Make sure the --with-pam-prefix points to the prefix where the pam.conf
file is located (default is sysconfdir - /etc).
file is located (default is sysconfdir or /etc).
If you want accessibility to work and have AT programs like gok and
gnopernicus installed to a different directory than EXPANDED_BINDIR,
then use the --with-at-bindir configure option.
If you want IPv6 enabled, use --enable-ipv6=yes option to configure.
To assign a default face to a user for the face browser, place a
(jpg, gif, png, xpm) image to the user's $HOME/.iface directory.
The gdm.conf DefaultFace configuration option allows the system
administrator to set up a default face image.
For best a11y support on Linux, it is recommended use the
--with-xevie configuration option so that the user's Xserver
session is always started with the Xserver XEVIE extension.
......@@ -125,67 +63,132 @@ GOK works best when XEVIE is enabled.
Read the GDM documentation for more information about configuring
GDM: http://www.gnome.org/projects/gdm/
Distribution
============
Reporting Bugs
--------------
Red Hat
-------
If you want to install OVER RedHat or Ximian packages use,
following configure options:
--prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var
--enable-console-helper --with-pam-prefix=/etc
However, there is now a spec file so you can build an rpm by just doing
rpm -ta gdm-<version>.tar.gz
When reporting bugs you should first turn on debugging in
gdm.conf. This causes debug messages to be sent to the system
log (/var/log/messages or /var/adm/messages) and include the
output sent to syslog.
You should not have to configure syslog for this to work, but if
you don't see GDM messages in your syslog you may need to
configure it.
You should not leave "debug" on after collecting data. It will
clutter your syslog and slow system performance.
Configuration
=============
Make sure you are familiar with the "Configuring GDM" section of
the GDM documentation:
http://www.gnome.org/projects/gdm/docs.html
GDM Default Configuration File
------------------------------
The GDM configuration file /etc/gdm/gdm.conf may be replaced by
you distribution on upgrade, so if a user wants to ensure that
configuration changes persist on upgrade, edit the /etc/gdm/gdm.conf-custom
file. You can specify a different location for the file via
the "--with-configdir=/dir" option. This can be useful if you
want to put the default file on a filesystem shared by multiple
machines.
If you wish to change configuration by hand, edit the
/etc/X11/gdm/gdm.conf-custom file and make sure the keyname=value
pair you want is included in the appropriate section. For example,
to change the "Greeter" key in the "daemon" section, make sure the
daemon section of the gdm.conf-custom file has the value like
in this example. The modified option does not have to come
first after the "[daemon]" section heading, but can be placed
anywhere in the section.
[daemon]
Greeter=/usr/lib/gdmgreeter
The default options refer to interfaces that may need to be
customized for your distribution providor.
HaltCommand
RebootCommand
SuspendCommand
StandardXServer
Xnest
SoundProgram
"command" value in each "[server-foo]" section
For example on some systems you need to define RebootCommand
as "/sbin halt -p" or "/sbin/init 0" or whatever is right on
your system.
Face Browser
------------
Face Browser is turned off by default and displays a list of
faces to choose from on the login screen which can be used
instead of typing the username. This decreases security, but
is appropriate for some uses (e.g. home use).
This should work on RedHat 6.x, 7.x, 8.x, 9 and perhaps later, and if you're
very lucky then on your favorite other distribution, but no promises. GDM is
not a trivial package so it's more likely it won't work in other places out of
the box.
To assign a default face to a user for the face browser, place a
(jpg, gif, png, xpm) image to the user's $HOME/.iface directory.
The gdm.conf DefaultFace configuration option allows the system
administrator to set up a default face image.
Solaris
-------
Configuring Performance
----------------------
PreFetch can be turned on by using the "--with-prefetch" configure
option. Turning on PreFetch tells GDM to load a specified list of
libraries immediately after displaying the first GUI screen. This
list can be populated with libraries that will get used when the
session starts and will speed up session start performance. Why
not let your computer load these libraries while the user types
in their name and password?
The provided gdmprefetchlist.in was created for Solaris 11 running
GNOME 2.13 (not a particularly stable configuration but one that will
likely be what Sun ships in Solaris 11). If using another OS, then
you will probably want to modify the config/gdmprefetchlist.in file
before running configure. This makes sure the list of libraries to
preload is suitable for your setup. The GDM PreFetch will ignore
libraries it doesn't find on your system but the point with this code
is to speed up your system so you can do further tuning for your
environment.
Configuring GDM with the "--with-post-path=/usr/openwin/bin" on Solaris
is recommended.
Red Hat
=======
GDM includes code to integrate with /etc/logindevperm and Solaris audit API's.
These interfaces are only supported on Solaris 10 and higher. GDM should not
be used on Solaris 9 and earlier if auditing is needed.
If you want to install OVER RedHat or Ximian packages use, following
configure options:
If using Solaris 9 or earlier, device permissions will not be set correctly
on login since GDM only processes /etc/logindevperm on Solaris 10 and higher.
The most annoying problem is that the user will likely not have access to
audio input/output. This can be worked around by adding chown/chmod commands
to each /dev device specified in /etc/logindevperm to the GDM PreSession and
PostSession script to set the ownership and read/write permissions to the
user on user login and back to root:root 0600 on logout.
--prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var
--enable-console-helper --with-pam-prefix=/etc
If someone wants to provide a patch to GDM to make it support processing
/etc/logindevperm on Solaris 9 and lower to avoid the above workaround, then
that would be great.
However, there is now a spec file so you can build an rpm by just doing
Automatic Login On Solaris
--------------------------
rpm -ta gdm-<version>.tar.gz
Automatic Login, if enabled on Solaris will still popup a GUI asking the user
for a password. To set up automatic login so it doesn't require password,
use the following /etc/pam.conf settings:
This should work on RedHat 6.x, 7.x, 8.x, 9 and perhaps later, and if you
are very lucky then on your favorite other distribution, but no promises.
GDM is not a trivial package so it's more likely it will not work in other
places out of the box.
gdm-autologin auth required pam_unix_cred.so.1
gdm-autologin auth sufficient pam_allow.so.1
gdm-autologin account sufficient pam_allow.so.1
gdm-autologin session sufficient pam_allow.so.1
gdm-autologin password sufficient pam_allow.so.1
Solaris
=======
The above setup will cause no lastlog entry to be generated. If a lastlog
entry is desired, then use the following for session:
On Solaris, the following configuration is recommended:
gdm-autologin session required pam_unix_session.so.1
./autogen.sh --prefix=/usr --sysconfdir=/etc/X11 --localstatedir=/var
--libexecdir=/usr/lib --enable-ipv6=yes --with-at-bindir=/usr/sfw/bin
--with-prefetch --with-post-path=/usr/openwin/bin
If using Solaris 10 or lower, then you also need to compile the pam_allow.c
code and install it to /usr/lib/security (or anywhere and provide the full
path in /etc/pam.conf) and ensure it is owned by uid 0 and not group or
world writable.
GDM includes code to integrate with the audit API, only supported on
Solaris 10 and later. GDM should not be used on Solaris 9 and earlier
if auditing is needed. Refer to the "Solaris" section of the
documentation for information about specific configuration issues for
Solaris.
http://www.gnome.org/projects/gdm/docs.html
gdm TODO list:
Big TODO: Rewrite the slave to be based around a mainloop.
So that we don't have to do things directly from signal handlers.
Some work has already been started by making the slave use select
calls instead of waitpid. This needs to be extended a bit. The
big issue is things that hang. We need two things, some better
general framework for things that hang and handling signals there
(see daemon/misc.c for solution when using gethostbyaddr in the
main daemon). We also need some way to do something like
"sleep(5)" with the mainloop nicely. We want the slave to still
be very synchronous, but just have some small handlers run from
within the mainloop. The one thing that will always cause
trouble here is the XDMCP server pinging, I think in this case
it would be sane to do the setjmp thing and just ignore the ping
if a signal comes, not sure how this will play with the X stuff
and if this would completely whack us out. The other option is
to have a separate "pinger process" but that seems to
heavyweight. Another option here is to give up on complete
mainloopishness and during pinging set up an alarm or some other
polling thing that checks all the mainloops stuff.
All the GUIs running as the gdm user should have some resource
limits set to make it hard to do DoS attacks by somehow exploiting
a leak or some such.
This file is just a place to note ideas about GDM that are maybe
experimental or not significant enough to report a bug. Refore
to http://bugzilla.gnome.org in the "gdm" category for the real
TODO list for GDM.
+ On Solaris GDM uses /etc/logindevperm (see README.install)
and it might be useful to simply make GDM's PreSession and
PostSession scripts process /etc/logindevperm directly and
not call the library interface on Solaris.
+ Big TODO: Rewrite the slave to be based around a mainloop.
So that we don't have to do things directly from signal handlers.
Some work has already been started by making the slave use select
calls instead of waitpid. This needs to be extended a bit. The
big issue is things that hang. We need two things, some better
general framework for things that hang and handling signals there
(see daemon/misc.c for solution when using gethostbyaddr in the
main daemon). We also need some way to do something like
"sleep(5)" with the mainloop nicely. We want the slave to still
be very synchronous, but just have some small handlers run from
within the mainloop. The one thing that will always cause
trouble here is the XDMCP server pinging, I think in this case
it would be sane to do the setjmp thing and just ignore the ping
if a signal comes, not sure how this will play with the X stuff
and if this would completely whack us out. The other option is
to have a separate "pinger process" but that seems to
heavyweight. Another option here is to give up on complete
mainloopishness and during pinging set up an alarm or some other
polling thing that checks all the mainloops stuff.
+ Resource limits have been implemented into the GDM slaves, but
perhaps more could be done. Always keep eye out for leaks.
Small TODO things:
- If we can't setup pam display user visible errors and not just
syslog stuff
Languages should be read from available locales. Look at source
for locale_config. Currently the way we do things is utter crack.
+ If we can't setup PAM display user visible errors and not just
syslog stuff
Perhaps stuff:
- Keyboard layout menu.
- native utmp/wtmp handling without sessreg
- xsri like logo functionality
The photosetup proggie should be put into some sort of capplet and
there should be other settings in the capplet as well.
+ Languages should be read from available locales. Right now the code
stats each file in /usr/locale, which is slow. Would be faster to
do a readdir on the direction and process them without doing stats.
Handle all the XFree86 Xserver error thingies, such as No "Display"
subsection for etc...
Perhaps stuff:
Add spacer files. Files which we can use in case there is disk
shortage to write a new xauthority stuff so that someone can actually
log on and clean up. Is this crack? Maybe.
+ Keyboard layout menu.
+ native utmp/wtmp handling without sessreg
+ xsri like logo functionality
+ Handle all the XFree86 Xserver error thingies, such as No "Display"
subsection for etc...
+ Add spacer files. Files which we can use in case there is disk
shortage to write a new xauthority stuff so that someone can
actually log on and clean up. Is this crack? Maybe.
......@@ -70,6 +70,20 @@ AC_ARG_WITH(dmx,
AC_ARG_WITH(selinux, [ --with-selinux Add SELinux support])
# On Solaris, Xnest is only shipped in /usr/openwin/, but your
# should use "--with-post-path=/usr/openwin/bin" for full
# Xserver support (such as access to Xnest and other X executables
# that are only in /usr/openwin/bin and not yet in /usr/X11/bin).
# Someday the Xserver team at Sun may fix this, then you don't
# have to do this anymore.
#
# For other platforms it may be useful to add stuff you want to the
# end of the default path, if your distribution provider has
# specific directories for branded applications or whatever or
# clever directories like /usr/sfw/bin or whatever that OpenView
# binary directory is for those OpenView users forced to use GDM.
# OpenView users like to recompile code anyway.
#
withval=""
AC_ARG_WITH(post-path,
[ --with-post-path=<PATH> add PATH to end of user's PATH when logging in],[
......@@ -1012,7 +1026,7 @@ else
X_PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin"
X_SERVER_PATH="/usr/X11R6/bin"
X_SERVER="/usr/X11R6/bin/X"
GDM_USER_PATH="$GDM_USER_PATH:/usr/bin/X11:/usr/X11R6/bin:/usr/local/bin:/opt/X11R6/bin:/usr/openwin/bin"
GDM_USER_PATH="$GDM_USER_PATH:/usr/bin/X11:/usr/X11R6/bin:/usr/local/bin:/opt/X11R6/bin"
X_CONFIG_OPTIONS="-audit 0"
fi
......@@ -1022,19 +1036,11 @@ if test "x$EXPANDED_BINDIR" != "x/bin" -a "x$EXPANDED_BINDIR" != "x/usr/bin"; th
GDM_USER_PATH="$GDM_USER_PATH:$EXPANDED_BINDIR"
fi
# On Solaris, Xnest is only shipped in /usr/openwin/, so set path
# properly. The Xsun version of Xnest also requires the -pn
# argument so it can be run as the user. Note that you can have
# both the X.org and Xsun Xservers on the same system (but X.org on
# Solaris doesn't ship with Xnest), so this makes Solaris work
# properly when the X.org Xserver is included. Also add needed
# /usr/openwin/bin to PATH so that GDM's PreSession/PostSession
# scripts can find sessreg and other programs it requires, and so
# users have programs like xterm in their PATH.
# You have to use /usr/openwin/bin/Xnest even if you are using the
# Xorg Xserver on Solaris x86.
#
case "$host" in
*solaris*)
GDM_USER_PATH="$GDM_USER_PATH:/usr/openwin/bin"
X_XNEST_PATH="/usr/openwin/bin"
X_XNEST_CONFIG_OPTIONS="-audit 0 -name Xnest -pn"
;;
......@@ -1044,6 +1050,10 @@ case "$host" in
;;
esac
# Set POST_PATH after doing system specific case above just in case
# any platforms want to update the PATH for a specific OS or distro.
# None currently, but might be useful.
#
if test "x$USER_POST_PATH" != "x"; then
GDM_USER_PATH="$GDM_USER_PATH:$USER_POST_PATH"
fi
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -713,7 +713,8 @@ main (int argc, char *argv[])
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
gtk_init(&argc, &argv);
/* Option parsing */
ctx = poptGetContext(NULL, argc, (const char**)argv, options, 0);
while ((nextopt = poptGetNextOpt(ctx)) > 0 || nextopt == POPT_ERROR_BADOPT);
......@@ -732,6 +733,8 @@ main (int argc, char *argv[])
return 1;
}
/* Process --command option */
if (send_command != NULL) {
if (authenticate)
auth_cookie = gdmcomm_get_auth_cookie ();
......@@ -789,6 +792,24 @@ main (int argc, char *argv[])
}
}
/*
* The --command argument does not display anything, so avoid running
* gtk_init until it finishes. Sometimes the --command argument is
* used when there is no display so it will fail and cause the
* program to exit, complaining about "no display".
*
* Now process what gdmflexiserver is more used to do, start a
* VT virtual terminal sesions - at least on systems where it
* works. On systems where it doesn't work VT stands for
* "Very Tight" and will mess up your display if you try to
* use it. Tight! So don't use it. I'd accept a patch to
* disable it, but its easy to avoid not using it as long
* as your distro doesn't put the menu choice in the
* application launch button on the panel (don't ship the
* desktop file).
*/
gtk_init(&argc, &argv);
/* always attempt to get cookie and authenticate. On remote
servers */
auth_cookie = gdmcomm_get_auth_cookie ();
......
......@@ -139,16 +139,12 @@ void
greeter_system_append_system_menu (GtkWidget *menu)
{
GtkWidget *w, *sep;
static GtkTooltips *tooltips = NULL;
/* should never be allowed by the UI */
if ( ! gdm_config_get_bool (GDM_KEY_SYSTEM_MENU) ||
ve_string_empty (g_getenv ("GDM_IS_LOCAL")))
return;
if (tooltips == NULL)
tooltips = gtk_tooltips_new ();
if (gdm_config_get_bool (GDM_KEY_CHOOSER_BUTTON)) {
w = gtk_menu_item_new_with_mnemonic (_("Remote Login via _XDMCP..."));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
......@@ -156,11 +152,6 @@ greeter_system_append_system_menu (GtkWidget *menu)
g_signal_connect (G_OBJECT (w), "activate",
G_CALLBACK (greeter_chooser_handler),
NULL);
gtk_tooltips_set_tip (tooltips, GTK_WIDGET (w),
_("Run an XDMCP chooser which will allow "
"you to log into available remote "
"computers, if there are any."),
NULL);
}
if (gdm_config_get_bool (GDM_KEY_CONFIG_AVAILABLE) &&
......@@ -171,10 +162,6 @@ greeter_system_append_system_menu (GtkWidget *menu)
g_signal_connect (G_OBJECT (w), "activate",
G_CALLBACK (greeter_config_handler),
NULL);
gtk_tooltips_set_tip (tooltips, GTK_WIDGET (w),
_("Configure GDM (this login manager). "
"This will require the root password."),
NULL);
}
if (GdmRebootFound || GdmHaltFound || GdmSuspendFound) {
......@@ -190,9 +177,6 @@ greeter_system_append_system_menu (GtkWidget *menu)
g_signal_connect (G_OBJECT (w), "activate",
G_CALLBACK (query_greeter_restart_handler),
NULL);
gtk_tooltips_set_tip (tooltips, GTK_WIDGET (w),
_("Restart your computer"),
NULL);
}
if (GdmHaltFound) {
......@@ -202,10 +186,6 @@ greeter_system_append_system_menu (GtkWidget *menu)
g_signal_connect (G_OBJECT (w), "activate",
G_CALLBACK (query_greeter_halt_handler),
NULL);
gtk_tooltips_set_tip (tooltips, GTK_WIDGET (w),
_