Commit 19e695b9 authored by Jiri (George) Lebl's avatar Jiri (George) Lebl Committed by George Lebl

update the documentation a lot and install the docs. Yay! We have actual


Sat Jul 19 16:33:19 2003  George Lebl <jirka@5z.com>

	* docs/C/gdm.xml, configure.in, docs/C/Makefile.am,
	  docs/Makefile.am, xmldocs.make, omf.make: update the
	  documentation a lot and install the docs.  Yay!  We
	  have actual documentation now!!!

	* daemon/misc.c: add sys/time.h and sys/resource.h includes
	  (from looking at the FreeBSD patches)

	* daemon/slave.c: pass LOGIN_SETENV as well to setusercontext
	  (from looking at the FreeBSD patches)

	* gui/gdmsetup.c: fix gccism, and look for the chown/chmod command
	  (from looking at the FreeBSD patches)

	* gui/gdmphotosetup.c: add signal.h include
	  (from looking at the FreeBSD patches)

	* configure.in, utils/Makefile.am:  When the security/pam_misc.h is
	  available also test for where the misc_conv function is as it seems
	  to be sometimes compiled into the main libpam (FreeBSD for example)
	  (from looking at the FreeBSD patches)

	* config/Default.in, config/Xsession.in, config/(Pre|Post)Session.in,
	  config/XKeepsCrashing: don't use command -v and use which properly.
	  And avoid stderr from which

	* utils/gdmaskpass.c: use GETTEXT_PACKAGE here

	* configure.in, utils/gdmtranslate.c, utils/Makefile.am,
	  config/XKeepsCrashing, config/Xsession.in, config/Makefile.am:
	  Add gdmtranslate libexec proggie since gettext command is not
	  always installed apparently (non-developer machines) so we
	  can't rely on it existing.  Also do translations from the
	  Xsession script

	* gui/gdmlogin.c, gui/greeter/greeter_system.c: Fix #117504 by
	  changing the tooltip to be more informative

	* gui/greeter/greeter_system.c: Fix warnings when not all
	  system dialog possibilities are present

	* Makefile.am, greeter.c, greeter.dtd, greeter_configuration.h,
	  greeter_item.[ch], greeter_item_customlist.[ch],
	  greeter_parser.[ch], greeter_system.c:  Add listitem (proposed
	  as customitem to the release-team) tags that can be inside
	  a list and thus create custom widgetry.  At this point all
	  custom widgetry that can be done is a list to pick from but
	  this should be possible to extend for some future releases.
	  This custom info is then written to a per display file
	  to use from login scripts or elsewhere.  While I was there
	  I fixed leaks and crashes when the parser would find parse
	  errors.

	* docs/C/gdmconfig/*, docs/C/gdm.sgml, docs/C/gdm-manual.txt:
	  remove everything here as it was old and unused and outdated.
parent dec056b7
Sat Jul 19 16:33:19 2003 George Lebl <jirka@5z.com>
* docs/C/gdm.xml, configure.in, docs/C/Makefile.am,
docs/Makefile.am, xmldocs.make, omf.make: update the
documentation a lot and install the docs. Yay! We
have actual documentation now!!!
* daemon/misc.c: add sys/time.h and sys/resource.h includes
(from looking at the FreeBSD patches)
* daemon/slave.c: pass LOGIN_SETENV as well to setusercontext
(from looking at the FreeBSD patches)
* gui/gdmsetup.c: fix gccism, and look for the chown/chmod command
(from looking at the FreeBSD patches)
* gui/gdmphotosetup.c: add signal.h include
(from looking at the FreeBSD patches)
* configure.in, utils/Makefile.am: When the security/pam_misc.h is
available also test for where the misc_conv function is as it seems
to be sometimes compiled into the main libpam (FreeBSD for example)
(from looking at the FreeBSD patches)
* config/Default.in, config/Xsession.in, config/(Pre|Post)Session.in,
config/XKeepsCrashing: don't use command -v and use which properly.
And avoid stderr from which
* utils/gdmaskpass.c: use GETTEXT_PACKAGE here
* configure.in, utils/gdmtranslate.c, utils/Makefile.am,
config/XKeepsCrashing, config/Xsession.in, config/Makefile.am:
Add gdmtranslate libexec proggie since gettext command is not
always installed apparently (non-developer machines) so we
can't rely on it existing. Also do translations from the
Xsession script
* gui/gdmlogin.c, gui/greeter/greeter_system.c: Fix #117504 by
changing the tooltip to be more informative
* gui/greeter/greeter_system.c: Fix warnings when not all
system dialog possibilities are present
* Makefile.am, greeter.c, greeter.dtd, greeter_configuration.h,
greeter_item.[ch], greeter_item_customlist.[ch],
greeter_parser.[ch], greeter_system.c: Add listitem (proposed
as customitem to the release-team) tags that can be inside
a list and thus create custom widgetry. At this point all
custom widgetry that can be done is a list to pick from but
this should be possible to extend for some future releases.
This custom info is then written to a per display file
to use from login scripts or elsewhere. While I was there
I fixed leaks and crashes when the parser would find parse
errors.
* docs/C/gdmconfig/*, docs/C/gdm.sgml, docs/C/gdm-manual.txt:
remove everything here as it was old and unused and outdated.
2003-07-19 Christian Neumair <chris@gnome-de.org>
* gui/gdmchooser-strings.c, gui/gdmsetup-strings.c: Use english
......
......@@ -24,7 +24,9 @@ EXTRA_DIST = \
gdm-stop.in \
gdm-restart.in \
gdm-safe-restart.in \
gdmconfig
gdmconfig \
xmldocs.make \
omf.make
sbin_SCRIPTS = gdm-stop gdm-restart gdm-safe-restart gdmconfig
......
......@@ -7,22 +7,24 @@ PATH=@X_PATH@:$PATH
sysmodmap=/etc/X11/Xmodmap
if command -v xmodmap > /dev/null 2>&1; then
if [ -z "$GDM_PARENT_DISPLAY" ]; then
XMODMAP=`which xmodmap 2>/dev/null`
if [ x$XMODMAP != x ] ; then
if [ x$GDM_PARENT_DISPLAY = x ]; then
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
$XMODMAP $sysmodmap
fi
else
( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY xmodmap -pke ) | xmodmap -
( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $XMODMAP -pke ) | $XMODMAP -
fi
fi
if command -v setxkbmap > /dev/null 2>&1; then
SETXKBMAP=`which setxkbmap 2>/dev/null`
if [ x$SETXKBMAP != x ] ; then
# FIXME: is this all right? Is this completely on crack?
# What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
# FIXME: This should be done in code. Or there must be an easier way ...
if [ -n "$GDM_PARENT_DISPLAY" ]; then
XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY setxkbmap -v )`
XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
if [ -n "$XKBSETUP" ]; then
XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
......@@ -30,13 +32,13 @@ if command -v setxkbmap > /dev/null 2>&1; then
XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
if [ -n "$XKBKEYMAP" ]; then
setxkbmap -keymap "$XKBKEYMAP"
$SETXKBMAP -keymap "$XKBKEYMAP"
elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
setxkbmap -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
$SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
setxkbmap -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
$SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
elif [ -n "$XKBSYMBOLS" ]; then
setxkbmap -symbols "$XKBSYMBOLS"
$SETXKBMAP -symbols "$XKBSYMBOLS"
fi
fi
fi
......
......@@ -30,7 +30,7 @@ EXTRA_DIST = \
gettextfoo.h \
extract-shell.sh
gettextfoo.h: XKeepsCrashing
gettextfoo.h: XKeepsCrashing Xsession.in
cat $^ | $(srcdir)/extract-shell.sh > gettextfoo.h
@INTLTOOL_DESKTOP_RULE@
......
#!/bin/sh
PATH=@X_PATH@:$PATH
PATH=@X_PATH@:$PATH:/bin:/usr/bin
if command -v sessreg > /dev/null 2>&1; then
sessreg -d -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h "$REMOTE_HOST" -l $DISPLAY $USER
SESSREG=`which sessreg 2>/dev/null`
if [ x$SESSREG != x ] ; then
$SESSREG -d -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h "$REMOTE_HOST" -l $DISPLAY $USER
fi
exit 0
......@@ -6,18 +6,21 @@
#
# Note that output goes into the .xsession-errors file for easy debugging
#
PATH=@X_PATH@:$PATH
PATH=@X_PATH@:$PATH:/bin:/usr/bin
if command -v xsetroot > /dev/null 2>&1; then
xsetroot -cursor_name left_ptr -solid "#363047"
XSETROOT=`which xsetroot 2>/dev/null`
if [ x$XSETROOT != x ] ; then
$XSETROOT -cursor_name left_ptr -solid "#363047"
fi
if command -v sessreg > /dev/null 2>&1; then
SESSREG=`which sessreg 2>/dev/null`
if [ x$SESSREG != x ] ; then
# some output for easy debugging
echo "$0: Registering your session with wtmp and utmp"
echo "$0: running: sessreg -a -w /var/log/wtmp -u /var/run/utmp -x \"$X_SERVERS\" -h \"$REMOTE_HOST\" -l $DISPLAY $USER"
echo "$0: running: $SESSREG -a -w /var/log/wtmp -u /var/run/utmp -x \"$X_SERVERS\" -h \"$REMOTE_HOST\" -l $DISPLAY $USER"
exec sessreg -a -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h "$REMOTE_HOST" -l $DISPLAY $USER
exec $SESSREG -a -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h "$REMOTE_HOST" -l $DISPLAY $USER
# this is not reached
fi
......
#!/bin/sh
GTBIN=`which gettext`
if [ -x "$LIBEXECDIR/gdmtranslate" ] ; then
GDMTRANSLATE="$LIBEXECDIR/gdmtranslate"
else
GDMTRANSLATE=
fi
gettextfunc () {
if test "x$GTBIN" = "x" ; then
echo "$1"
if [ "x$GDMTRANSLATE" != "x" ] ; then
$GDMTRANSLATE "$1"
else
$GTBIN -s "$1"
echo "$1"
fi
}
......
......@@ -33,7 +33,26 @@ test -f $HOME/.profile && . $HOME/.profile
test -f /etc/xprofile && . /etc/xprofile
test -f $HOME/.xprofile && . $HOME/.xprofile
zenity=`which zenity`
# Translation stuff
if [ -x "@EXPANDED_LIBEXECDIR@/gdmtranslate" ] ; then
gdmtranslate="@EXPANDED_LIBEXECDIR@/gdmtranslate"
else
gdmtranslate=
fi
# Note that this should only go to zenity dialogs which always expect utf8
gettextfunc () {
if [ "x$gdmtranslate" != "x" ] ; then
$gdmtranslate --utf8 "$1"
else
echo "$1"
fi
}
zenity=`which zenity 2>/dev/null`
if [ -z "$zenity" ] ; then
echo "zenity not found!"
fi
command="$1"
......@@ -43,7 +62,7 @@ fi
if [ x"$command" = xfailsafe ] ; then
if [ -n "$zenity" ] ; then
$zenity --info --text "This is the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type \"exit\" in the window in the upper left corner"
$zenity --info --text `gettextfunc "This is the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type 'exit' in the window in the upper left corner"`
fi
exec xterm -geometry 80x24+0+0
fi
......@@ -52,8 +71,9 @@ fi
# works for ALL sessions (except ones named 'Failsafe')
# clean up after xbanner
if which freetemp 2> /dev/null ; then
freetemp
freetemp=`which freetemp 2>/dev/null`
if [ -n "$freetemp" ] ; then
$freetemp
fi
userresources=$HOME/.Xresources
......@@ -125,12 +145,12 @@ unset XKB_IN_USE
# Normalize languages, some places/distros screw us up in /etc/profile,
# so in case the user did select a language
if [ -n "$GDM_LANG" ]; then
LANG=$GDM_LANG
LANG="$GDM_LANG"
export LANG
if [ -n "$LC_ALL" ]; then
if [ "$LC_ALL" != "$LANG" ]; then
LC_ALL=$LANG
LC_ALL="$LANG"
fi
else
unset LC_ALL
......@@ -138,7 +158,7 @@ if [ -n "$GDM_LANG" ]; then
if [ -n "$LANGUAGE" ]; then
if [ "$LANGUAGE" != "$LANG" ]; then
LANGUAGE=$LANG
LANGUAGE="$LANG"
fi
else
unset LANGUAGE
......@@ -146,7 +166,7 @@ if [ -n "$GDM_LANG" ]; then
if [ -n "$LINGUAS" ]; then
if [ "$LINGUAS" != "$LANG" ]; then
LINGUAS=$LANG
LINGUAS="$LANG"
fi
else
unset LINGUAS
......@@ -186,9 +206,11 @@ if [ "x$command" = "xdefault" ] ; then
fi
# add ssh-agent if found
sshagent=`which ssh-agent`
sshagent=`which ssh-agent 2>dev/null`
if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
command="$sshagent -- $command"
elif [ -z "$sshagent" ] ; then
echo "ssh-agent not found!"
fi
echo "Xsession: Setup done, will execute: $command"
......@@ -198,7 +220,7 @@ eval exec $command
echo "Xsession: Executing $command failed, will run xterm"
if [ -n "$zenity" ] ; then
$zenity --info --text "I could not start your session and so I have started the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type \"exit\" in the window in the upper left corner"
$zenity --info --text `gettextfunc "I could not start your session and so I have started the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type 'exit' in the window in the upper left corner"`
fi
exec xterm -geometry 80x24+0+0
......@@ -9,3 +9,5 @@ const char *foo = N_("I cannot start the X server (your graphical interface). I
const char *foo = N_("Would you like to view the detailed X server output as well?");
const char *foo = N_("I cannot start the X server (your graphical interface). It seems that the pointer device (your mouse) is not set up correctly. Would you like to view the X server output to diagnose the problem?");
const char *foo = N_("Would you like me to try to run the mouse configuration program? Note that you will need the root password for this.");
const char *foo = N_("This is the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type 'exit' in the window in the upper left corner");
const char *foo = N_("I could not start your session and so I have started the failsafe xterm session. Windows now have focus only if you have your cursor above them. To get out of this mode type 'exit' in the window in the upper left corner");
......@@ -277,11 +277,19 @@ if test x$enable_authentication_scheme != xcrypt -a \
fi
GDMASKPASS=
EXTRA_GDMASKPASS_LIBS=
if test x$have_pam = xyes ; then
AC_CHECK_HEADERS(security/pam_misc.h, [
GDMASKPASS=gdmaskpass])
if test x$GDMASKPASS != x ; then
AC_CHECK_LIB(pam,misc_conv,,[AC_CHECK_LIB(pam_misc,misc_conv, [
EXTRA_GDMASKPASS_LIBS="$EXTRA_GDMASKPASS_LIBS -lpam_misc"], [
GDMASKPASS=], [
-lpam])])
fi
fi
AC_SUBST(GDMASKPASS)
AC_SUBST(EXTRA_GDMASKPASS_LIBS)
if test x$enable_authentication_scheme = xpam -a x$have_pam = xno ; then
AC_MSG_ERROR(PAM support requested but not available)
......@@ -557,6 +565,7 @@ config/Makefile
po/Makefile.in
vicious-extensions/Makefile
docs/Makefile
docs/C/Makefile
config/gdm.conf
config/Xsession
config/Default
......
......@@ -26,6 +26,8 @@
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <net/if.h>
......
......@@ -2615,7 +2615,8 @@ session_child_run (struct passwd *pwent,
if (setusercontext (NULL, pwent, pwent->pw_uid,
LOGIN_SETLOGIN | LOGIN_SETPATH |
LOGIN_SETPRIORITY | LOGIN_SETRESOURCES |
LOGIN_SETUMASK | LOGIN_SETUSER) < 0)
LOGIN_SETUMASK | LOGIN_SETUSER |
LOGIN_SETENV) < 0)
gdm_child_exit (DISPLAY_REMANAGE,
_("%s: setusercontext() failed for %s. "
"Aborting."), "gdm_slave_session_start",
......
gdm_helpdir = $(datadir)/gnome/help/gdm/C
gdm_help_DATA = \
gdm.html
SGML_FILES = gdm.sgml
EXTRA_DIST = \
$(SGML_FILES)
all:
gdm.html: gdm/index.html
-cd $(srcdir) && cp gdm/index.html gdm.html
gdm/index.html: $(SGML_FILES)
-cd $(srcdir) && db2html gdm.sgml
dist-hook:
mkdir $(distdir)/gdm
-cp $(srcdir)/gdm/*.html gdm/*.css $(distdir)/gdm
-cp $(srcdir)/gdm.html $(distdir)
-cp $(srcdir)/gdm.html $(distdir)/gdm/index.html
install-data-local: gdm.html
$(mkinstalldirs) $(DESTDIR)$(gdm_helpdir)/images
-for file in $(srcdir)/gdm/*.html $(srcdir)/gdm/*.css; do \
basefile=`basename $$file`; \
$(INSTALL_DATA) $$file $(DESTDIR)$(gdm_helpdir)/$$basefile; \
done
$(INSTALL_DATA) $(srcdir)/gdm.html $(DESTDIR)$(gdm_helpdir)/index.html
gdm.ps: $(SGML_FILES)
db2ps $<
gdm.rtf: $(SGML_FILES)
-db2rtf $<
figdir =
docname = gdm
lang = C
omffile = gdm-C.omf
entities = legal.xml
include $(top_srcdir)/xmldocs.make
dist-hook: app-dist-hook
This diff is collapsed.
This diff is collapsed.
......@@ -3,7 +3,7 @@
GDM Theme Manual
By Brian Cameron <Brian.Cameron@Sun.COM>
Updated by George Lebl <jirka@5z.com>
Last Updated: July 15, 2003
Last Updated: July 18, 2003
========================================
GDM Themes can be created by creating an XML file that follows the
......@@ -91,7 +91,9 @@ Item Nodes:
<item type="label">
Items can specify ID values which gives them a specific look
and feel or formatting:
and feel or formatting. Furthermore you can customize the login
process by adding custom widgets with custom id's for some items
(currently only the list item)
entry:
......@@ -109,6 +111,11 @@ Item Nodes:
their username by clicking on this instead
of typing.
Furthermore, you can have an arbitrary id (I'd recommend starting
the id with 'custom' not to conflict with future additions to this
spec) and ask extra information of the user. See the section
'Custom Widgetry'
label:
Label items can have id values as follows:
......@@ -252,6 +259,35 @@ Stock:
<stock type="welcome-label"/>
Custom Widgetry:
Currently there is one item which can be customizable and this is
the list item. If you need to ask the user extra things, such as
to pick from a list of places to log into, or set of custom login
sessions you can setup the list item and add listitem children that
describe the choices. Each listitem must have an id and a text child.
The choice will be recorded in the file
<ServAuthDir>/<display>.GreeterInfo as <list id>=<listitem id>
For example suppose we are on display :0, ServAuthDir is /var/gdm
and we have the following in the theme:
<item type="list" id="custom-config">
<pos anchor="nw" x="1" y="1" height="200" width="100"/>
<listitem id="foo">
<text>Foo</text>
</listitem>
<listitem id="bar">
<text>Bar</text>
</listitem>
</item>
Then if the user chooses 'Foo' then /var/gdm/:0.GreeterInfo will
contain:
custom-config=foo
Examples of themes with photos can be found here:
http://art.gnome.org/theme_list.php?category=gdm_greeter
......
SUBDIRS = . C
EXTRA_DIST = GdmGreeterThemeManual.txt
***** THIS DOCUMENT IS NO LONGER MAINTAINED *****
***** Please read C/gdm.sgml *****
The Gnome Display Manager
1. Theory of operation
gdm is a replacement for xdm, the X Display Manager. Unlike its
competitors (x3dm, kdm, wdm) gdm was written from scratch and does not
contain any original xdm code.
gdm was written with simplicity and security in mind. The overall
design concept is this:
When gdm starts it parses the config file gdm.conf. For each of the
local displays gdm forks a slave process. The main gdm process will
listen to XDMCP requests from remote displays and monitor the local
display sessions.
The gdm slave process starts an Xserver according to information read
from the config file. gdm sets up proper X authentication and starts
up the greeter window requesting the user for login and password.
The gdm master and slave processes are deliberately kept small and
they are believed to be secure. The program providing the user
interface is significantly more complex and is linked to several
unaudited libraries. Therefore it runs as a dedicated gdm user and
communicates with gdm through a pipe.
2. Overview of the config directory.
The configuration files for gdm are located in the <prefix>/etc/gdm/
directory.
This is a listing of the config directory contents:
Init/
PostSession/
PreSession/
Sessions/
gdm.conf
gdm.conf is the main gdm configuration file. The options will be
described later in this document.
The remaining configuration is done by dropping scripts in the
subdirectories of the gdm folder. This approach makes it easy for
package management systems to install window managers and different
session types without requiring the sysadmin/user to edit files.
In this section we will explain the Init, PreRoot and PostRoot
directories as they are very similar.
When the X server has been successfully started, gdm will try to run
the script called Init/<displayname>. I.e. Init/:0 for the first local
display. If this file is not found, gdm will attempt to to run
Init/Default. The script will be run as root and gdm blocks until it
terminates. Use the Init/* script for programs that are supposed to
run alongside with the gdm login window. xconsole for
instance. Commands to set the background etc. goes in this file too.
It is up to the sysadmin to decide whether clients started by the Init
script should be killed before starting the user session. This is
controlled with the KillInitClient option in gdm.conf.
When the user has been successfully authenticated, gdm tries to run
the PreSession script. Similar to the Init-scripts,
PreSession/<displayname> will be executed first, if that is not found
gdm will attempt to run PreSession/Default. The script will be run as
root and gdm blocks until it terminates. Use this script for local
session management or accounting stuff. The USER environment variable
contains the login of the authenticated user. The script should return
0 on success. Any other value will cause gdm to terminate the current
login process.
Then the session script is run. Session scripts are located in the
etc/gdm/Session directory. Which one gdm runs depends on the session
the user chose in the Sessions-menu in the gdm greeter. If no session
is selected and the user has no last session stored in his
~/.gnome/gdm file, the system will choose or first script found or --
if Sessions/Default exists -- this will be run. For instance you can
create a symlink from Gnome to Default to make Gnome the default
desktop environment.
When the user terminates his session the PostSession script will be
run. Operation is similar to Init and PreSession. That is, gdm will
attempt to execute the script PostSession/<displayname> and if that
doesn't exist: PostSession/Default. Again the script will be run with
root priviledges, gdm will block and the USER environment variable
will contain the name of the user who just logged out.
Neither of the Init, PreSession or PostSession scripts are necessary
and can be left out. At least one session script is required for
proper operation.
3. The config file
3.1 Section: [daemon]
Chooser=@bindir@/gdmchooser --disable-sound
Path and name of the gdmchooser executable.
DefaultPath=/bin:/usr/bin:/usr/bin/X11:/usr/local/bin
Specifies the path which will be set in the user's session.
DisplayInitDir=@sysconfdir@/gdm/Init
Directory containing the Init scripts.
Greeter=@bindir@/gdmlogin --disable-sound
Path and name of the login program executable.
Group=gdm
The group id under which gdmlogin/gdmchooser is run.
HaltCommand=/sbin/shutdown -h now
Command to be executed when user selects Halt from the System
menu (Full path to executable).
KillInitClients=1
Determines whether gdm should kill X clients started by the
Init scripts when the user logs in. Default is 1.
LogDir=@authdir@
Directory containing the log files for the displays. By
default this is the same as the ServAuthDir.
PidFile=/var/run/gdm.pid
Name of the gdm daemon pidfile.
PostSessionScriptDir=@sysconfdir@/gdm/PostSession
Directory containing the PostSession scripts.
PreSessionScriptDir=@sysconfdir@/gdm/PreSession
Directory containing the PreSession scripts.
RebootCommand=/sbin/shutdown -r now
Command to be executed when user selects Reboot from the
System menu. Full path is required.
RootPath=/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin
Specifies the path which will be set in the root's session and
the scripts executed by gdm.
ServAuthDir=@authdir@
Directory containing the X authentication files for the
displays. Should be owned by gdm.gdm with permissions 750.
SessionDir=@sysconfdir@/gdm/Sessions
Directory containing the Session scripts.
User=gdm
The username under which gdm is run.
UserAuthDir=
The directory where user's .Xauthority file should be
saved. When NULL ~user is used.
UserAuthFBDir=/tmp
If gdm fails to update user's .Xauthority file for some odd
reason a cookie is created in this directory.
UserAuthFile=.Xauthority
Name of the file to store user cookies in.
3.2 Section: [security]
AllowRoot=0
Set to 1 to enable root logins.
RelaxPermissions=0
By default gdm ignores files/dirs writable to other users than
the owner.
Changing the value of RelaxPermissions makes it possible to
alter this behaviour:
0 - Paranoia option. Only accepts user owned files and dirs.
1 - Allow group writable files/dirs
2 - Allow world writable files/dirs
RetryDelay=3
The number of seconds gdm should wait before reactivating the
entry field after a failed login.
UserMaxFile=65536
gdm will refuse to read/write files bigger than this number
(in bytes).
In addition to the size check both gdm and gdmlogin are
extremely picky about accessing files in user directories.
Neither will follow symlinks and they can optionally refuse to
read files and directories writable by other than the owner.
VerboseAuth=0
Specifies whether gdm should print authentication errors.
Depending on authentication type usernames might be exposed
when this option is on.
3.3 Section: [xdmcp]
Enable=0
Setting to 1 enables XDMCP support allowing remote displays/X
terminals to be managed by gdm.
gdm listens for requests on UDP port 177. Access from remote
displays is controlled by the TCP Wrappers library. The
service name is `gdm'.
You should add
gdm: .my.domain
or something similar to /etc/hosts.allow. See the
hosts_access(5) man page for details.
Please note that XDMCP is not a particularly secure protocol
and that it is a good idea to block UDP port 177 on your
firewall unless you really need it.
HonorIndirect=1
Enables INDIRECT choosing (i.e. gdmchooser) for X-terminals
which don't supply their own display browser.
MaxPending=4
To avoid denial of service attacks, gdm has fixed size queue
of pending connections. Only MaxPending displays can start at
the same time.
Please note that this parameter does *not* limit the number of
remote displays which can be managed. It only limits the
number of simultaneous displays initiating a connection.
MaxPendingIndirect=4
Specifies the number of remote displays that can be in choose
mode simultaneously.
MaxSessions=16
Determines the maximum number of remote display connections
which will be accepted.
MaxWait=30
When gdm is ready to manage a display an ACCEPT packet is sent
to it containing a unique session id which will be used in
future conversations.
gdm will then place the session id in the pending queue
waiting for the display to respond with a MANAGE request.
If no response is received within MaxWait seconds, gdm
will declare the display dead and erase it from the pending
queue freeing up the slot for other displays.
MaxWaitIndirect=30
FIXME
Port=177
The UDP port number gdm should listen to for XDMCP requests.
Don't change this.
3.4 Section: [gui]
Gtkrc=
Path to a gtkrc containing the theme for use in
gdmlogin/gdmchooser.
MaxIconWidth=128