SHA256
1
0
forked from pool/gdm
OBS User unknown 2006-12-28 23:05:20 +00:00 committed by Git OBS Bridge
commit 4a357dfffb
32 changed files with 4992 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

306
SuSEconfig.gdm Normal file
View File

@ -0,0 +1,306 @@
#!/bin/bash
#
# Copyright (c) 2004-2006 SuSE
# Author: Stanislav Brabec <sbrabec@suse.cz>
type -p awk &> /dev/null || {
echo "${0##*/}: No awk in PATH ... skipping"
exit 0
}
type -p cmp &> /dev/null || {
echo "${0##*/}: No cmp in PATH ... skipping"
exit 0
}
# Read old values. We will need one for correct updating of
if test -f $r/etc/opt/gnome/gdm/gdm_sysconfig.conf ; then
. $r/etc/opt/gnome/gdm/gdm_sysconfig.conf
fi
export OLD_DISPLAYMANAGER_AUTOLOGIN="$DISPLAYMANAGER_AUTOLOGIN"
r=$ROOT
# Set default values. (This overwrites all variables from gdm_sysconfig.conf.)
DISPLAYMANAGER_REMOTE_ACCESS="no"
DISPLAYMANAGER_ROOT_LOGIN_REMOTE="no"
DISPLAYMANAGER_STARTS_XSERVER="yes"
DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN="no"
DISPLAYMANAGER_AUTOLOGIN=""
DISPLAYMANAGER_PASSWORD_LESS_LOGIN="no"
DISPLAYMANAGER_AD_INTEGRATION="no"
DISPLAYMANAGER_SHUTDOWN=""
test -f $r/etc/sysconfig/displaymanager || {
echo "${0##*/}: No $r/etc/sysconfig/displaymanager found."
exit 1
}
. $r/etc/sysconfig/displaymanager
test -f $r/etc/sysconfig/security || {
echo "${0##*/}: No $r/etc/sysconfig/security found."
exit 1
}
. $r/etc/sysconfig/security
test -f $r/lib/YaST/SuSEconfig.functions || {
echo "${0##*/}: ERROR - can not find $r"'/lib/YaST/SuSEconfig.functions!!'
echo "${0##*/}: This should not happen. Exit..."
exit 1
}
. $r/lib/YaST/SuSEconfig.functions
GDM_IS_RUNNING=false
if test -z "$r" ; then
if test "$DISPLAYMANAGER" = gdm ; then
if /etc/init.d/xdm status >/dev/null ; then
GDM_IS_RUNNING=false
fi
fi
fi
# Write new set of monitore variables.
echo -en "# custom.conf was last time updated with following sysconfig:\\nDISPLAYMANAGER_REMOTE_ACCESS=\"$DISPLAYMANAGER_REMOTE_ACCESS\"\\nDISPLAYMANAGER_ROOT_LOGIN_REMOTE=\"$DISPLAYMANAGER_ROOT_LOGIN_REMOTE\"\\nDISPLAYMANAGER_STARTS_XSERVER=\"$DISPLAYMANAGER_STARTS_XSERVER\"\\nDISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN=\"$DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN\"\\nDISPLAYMANAGER_AUTOLOGIN=\"$DISPLAYMANAGER_AUTOLOGIN\"\\nDISPLAYMANAGER_PASSWORD_LESS_LOGIN=\"$DISPLAYMANAGER_PASSWORD_LESS_LOGIN\"\\nDISPLAYMANAGER_AD_INTEGRATION=\"$DISPLAYMANAGER_AD_INTEGRATION\"\\nDISPLAYMANAGER_SHUTDOWN=\"$DISPLAYMANAGER_SHUTDOWN\"\\nPERMISSION_SECURITY=\"$PERMISSION_SECURITY\"\\n" >$r/etc/opt/gnome/gdm/gdm_sysconfig.conf.new
# Are there any changes in monitored variables?
if cmp -s 2>/dev/null $r/etc/opt/gnome/gdm/gdm_sysconfig.conf $r/etc/opt/gnome/gdm/gdm_sysconfig.conf.new ; then
rm $r/etc/opt/gnome/gdm/gdm_sysconfig.conf.new
exit
fi
function sysconfig_yesno_to_gdm {
eval local suseval=\$$1
case "$suseval" in
yes )
export $2=true
;;
* )
export $2=false
;;
esac
export comment_$2="displaymanager:$1"
}
sysconfig_yesno_to_gdm DISPLAYMANAGER_REMOTE_ACCESS xdmcp_Enable
sysconfig_yesno_to_gdm DISPLAYMANAGER_ROOT_LOGIN_REMOTE security_AllowRemoteRoot
export comment_servers_0="displaymanager:DISPLAYMANAGER_STARTS_XSERVER"
case "$DISPLAYMANAGER_STARTS_XSERVER" in
"yes" )
export servers_0=@SKIP@
;;
* )
export servers_0=inactive
;;
esac
sysconfig_yesno_to_gdm DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN security_DisallowTCP
sysconfig_yesno_to_gdm DISPLAYMANAGER_AD_INTEGRATION greeter_ShowDomain
export comment_daemon_AutomaticLoginEnable="displaymanager:DISPLAYMANAGER_AUTOLOGIN"
export comment_daemon_AutomaticLogin="displaymanager:DISPLAYMANAGER_AUTOLOGIN"
case "$DISPLAYMANAGER_AUTOLOGIN" in
"" )
export daemon_AutomaticLoginEnable=false
export daemon_AutomaticLogin=@SKIP@
;;
* )
export daemon_AutomaticLoginEnable=true
export daemon_AutomaticLogin="$DISPLAYMANAGER_AUTOLOGIN"
;;
esac
export comment_greeter_AllowShutdown="displaymanager:DISPLAYMANAGER_SHUTDOWN"
export comment_greeter_SecureShutdown="displaymanager:DISPLAYMANAGER_SHUTDOWN"
case "$DISPLAYMANAGER_SHUTDOWN" in
root )
export greeter_AllowShutdown=true
export greeter_SecureShutdown=true
;;
# Remote users can never shutdown in GDM.
none )
export greeter_AllowShutdown=false
export greeter_SecureShutdown=true
;;
all )
export greeter_AllowShutdown=true
export greeter_SecureShutdown=false
;;
auto | * )
export comment_greeter_AllowShutdown="displaymanager:DISPLAYMANAGER_SHUTDOWN, security:PERMISSION_SECURITY"
export comment_greeter_SecureShutdown="displaymanager:DISPLAYMANAGER_SHUTDOWN, security:PERMISSION_SECURITY"
export comment_security_AllowRemoteRoot="displaymanager:DISPLAYMANAGER_ROOT_LOGIN_REMOTE,DISPLAYMANAGER_SHUTDOWN, security:PERMISSION_SECURITY"
case "$PERMISSION_SECURITY" in
paranoid )
export greeter_AllowShutdown=true
export greeter_SecureShutdown=true
export security_AllowRemoteRoot=false
;;
"easy local" )
export greeter_AllowShutdown=true
export greeter_SecureShutdown=false
;;
* )
export greeter_AllowShutdown=true
export greeter_SecureShutdown=true
;;
esac
;;
esac
unset unset ${!last_of_*} ${!custom_conf_*}
# Parse configuration file and record all items to environment values.
eval "$(
awk <$r/etc/opt/gnome/gdm/custom.conf '
BEGIN {
section="BEGIN";
section_last_line=0;
after_empty_line=0;
}
# Do not set last_of_ initial comments of a new section.
/^#/ {
if (after_empty_line == 0)
section_last_line=NR;
else
next;
}
/^\[.*\]/ {
print "export last_of_"section"="section_last_line;
section=$0;
gsub ("[][]", "", section);
section_last_line=NR;
after_empty_line=0;
next;
}
/^[a-zA-Z0-9_]*=/ {
item=$0;
gsub ("=.*", "", item);
value=$0;
gsub ("^[a-zA-Z0-9_]*=", "", value);
gsub ("'\''", "'\''\\'\'''\''", value);
section_last_line=NR;
after_empty_line=0;
print "export custom_conf_"section"_"item"_seen=true";
# print "export custom_conf_"section"_"item"='\''"value"'\''";
next;
}
# Do not set last_of_ for empty lines - we want to add missing stuff before the final empty line.
/^$/ {
after_empty_line=1;
next;
}
/.*/ {
section_last_line=NR;
after_empty_line=0;
}
END {
print "export last_of_"section"="section_last_line;
}
'
)"
# And now set what is required.
awk <$r/etc/opt/gnome/gdm/custom.conf >$r/etc/opt/gnome/gdm/custom.conf.new '
# Prepare array from variable.
function gdm_prepare_var(var) {
gdm_conf_var[var]=ENVIRON[var];
}
# Update configuration from gdm_conf_var array.
function update_item(section, item) {
if (gdm_conf_var[section"_"item] != "@SKIP@") {
print "# SuSEconfig: "ENVIRON["comment_"section"_"item];
print item"="gdm_conf_var[section"_"item];
if (ENVIRON["GDM_IS_RUNNING"] == "true")
# FIXME: If gdm is running and no session is active, command is executed too early.
system("$r/opt/gnome/bin/gdmflexiserver --command=\"UPDATE_CONFIG "section"/"item"\"")
return "DONE";
} else
return "KEEP_ORIG";
}
function process_unseen() {
# Print all items not seen in the section.
if (ENVIRON["last_of_"section] == NR)
for (item in gdm_conf_var) {
item_section = item;
gsub ("_.*", "", item_section);
gsub ("[^_]*_", "", item);
if (item_section == section && ENVIRON["custom_conf_"section"_"item"_seen"] != "true")
update_item(section, item);
}
}
BEGIN {
section="BEGIN";
gdm_prepare_var("daemon_AutomaticLoginEnable");
gdm_prepare_var("daemon_AutomaticLogin");
gdm_prepare_var("security_AllowRemoteRoot");
gdm_prepare_var("security_DisallowTCP");
gdm_prepare_var("xdmcp_Enable");
gdm_prepare_var("greeter_AllowShutdown");
gdm_prepare_var("greeter_SecureShutdown");
gdm_prepare_var("greeter_ShowDomain");
gdm_prepare_var("servers_0");
}
# Remove invalid entry created by SuSEconfig.gdm in SuSE Linux 10.2.
/^enable=/ {
if (section == "xdmcp") {
# Remove old gdm_sysconfig.conf to force update of custom.conf.
system("rm -f $r/etc/opt/gnome/gdm/gdm_sysconfig.conf");
process_unseen();
next;
}
}
/^# SuSEconfig:/ {
process_unseen();
next;
}
/^\[.*\]/ {
section=$0;
gsub ("[][]", "", section);
print;
process_unseen();
next;
}
/^[a-zA-Z0-9_]*=/ {
item=$0;
gsub ("=.*", "", item);
value=$0;
gsub ("^[a-zA-Z0-9_]*=", "", value);
# Update value of item.
if (section"_"item in gdm_conf_var) {
if (update_item(section, item) == "KEEP_ORIG")
# This is actually used only for daemon_AutomaticLogin and servers_0:
if (item == "servers_0") {
if (value != "inactive")
print;
} else {
if (value != ENVIRON["OLD_DISPLAYMANAGER_AUTOLOGIN"])
print;
}
} else
print;
process_unseen();
next;
}
/.*/ {
print;
process_unseen();
next;
}
'
mv $r/etc/opt/gnome/gdm/custom.conf.new $r/etc/opt/gnome/gdm/custom.conf
mv $r/etc/opt/gnome/gdm/gdm_sysconfig.conf.new $r/etc/opt/gnome/gdm/gdm_sysconfig.conf

3
gdm-2.16.1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9733a12aacf6995dc630daf108c357c5d906fdda30de05cd9b5c26a83cf3d5f6
size 3130299

View File

@ -0,0 +1,15 @@
--- gdm-2.16.1/daemon/slave.c
+++ gdm-2.16.1/daemon/slave.c
@@ -3438,6 +3438,12 @@
g_setenv ("SHELL", pwent->pw_shell, TRUE);
g_unsetenv ("MAIL"); /* Unset $MAIL for broken shells */
+ if (d->hostname != NULL && d->hostname [0] != '\0') {
+ ve_setenv ("XAUTHLOCALHOSTNAME", d->hostname, TRUE);
+ } else {
+ ve_setenv ("XAUTHLOCALHOSTNAME", "localhost.localdomain", TRUE);
+ }
+
if (d->type == TYPE_STATIC) {
g_setenv ("GDM_XSERVER_LOCATION", "local", TRUE);
} else if (d->type == TYPE_XDMCP) {

View File

@ -0,0 +1,11 @@
--- gdm-2.16.1/config/gdm.conf.in
+++ gdm-2.16.1/config/gdm.conf.in
@@ -362,7 +362,7 @@
# large numbers of users and this feature should not be used in such
# environments. The setting of IncludeAll does nothing if Include is set to a
# non-empty value.
-#IncludeAll=false
+IncludeAll=true
# If user or user.png exists in this dir it will be used as his picture.
#GlobalFaceDir=@datadir@/pixmaps/faces/

View File

@ -0,0 +1,65 @@
diff -upr gdm-2.16.1-pre/gui/gdmsetup.c gdm-2.16.1-post/gui/gdmsetup.c
--- gdm-2.16.1-pre/gui/gdmsetup.c 2006-09-27 17:02:46.000000000 -0500
+++ gdm-2.16.1-post/gui/gdmsetup.c 2006-11-07 18:27:08.000000000 -0600
@@ -60,6 +60,8 @@ static gboolean GdmAllowRoot;
static gboolean GdmAllowRemoteRoot;
static gboolean GdmUserChangesUnsaved;
+#define LONG_TIMEOUT G_MAXINT
+
/* set the DOING_GDM_DEVELOPMENT env variable if you want to
* search for the glade file in the current dir and not the system
* install dir, better then something you have to change
@@ -1069,7 +1071,7 @@ combobox_timeout (GtkWidget *combo_box)
static void
toggle_toggled (GtkWidget *toggle)
{
- run_timeout (toggle, 200, toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
}
static void
@@ -1097,13 +1099,13 @@ list_selection_toggled (GtkWidget *toggl
gtk_widget_set_sensitive (widget, FALSE);
}
- run_timeout (toggle, 200, toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, toggle_timeout);
}
static void
intspin_changed (GtkWidget *spin)
{
- run_timeout (spin, 500, intspin_timeout);
+ run_timeout (spin, LONG_TIMEOUT, intspin_timeout);
}
static void
@@ -1668,6 +1670,9 @@ setup_intspin (const char *name,
g_object_set_data_full (G_OBJECT (spin),
"key", g_strdup (key),
(GDestroyNotify) g_free);
+ g_object_set_data_full (G_OBJECT (toggle),
+ "notify_key", g_strdup (key),
+ (GDestroyNotify) g_free);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), val);
@@ -2252,7 +2257,7 @@ greeter_toggle_timeout (GtkWidget *toggl
static void
greeter_toggle_toggled (GtkWidget *toggle)
{
- run_timeout (toggle, 500, greeter_toggle_timeout);
+ run_timeout (toggle, LONG_TIMEOUT, greeter_toggle_timeout);
}
static void
@@ -2595,7 +2600,7 @@ greeter_entry_untranslate_timeout (GtkWi
static void
greeter_entry_untranslate_changed (GtkWidget *entry)
{
- run_timeout (entry, 500, greeter_entry_untranslate_timeout);
+ run_timeout (entry, LONG_TIMEOUT, greeter_entry_untranslate_timeout);
}
static void

223
gdm-2.8.0.7-bg-4.patch Normal file
View File

@ -0,0 +1,223 @@
--- gdm-2.16.1/gui/greeter/greeter.c
+++ gdm-2.16.1/gui/greeter/greeter.c
@@ -1025,6 +1025,7 @@
const char *gdm_gtk_theme;
guint sid;
int r;
+ GdkColor black = { 0, 0, 0, 0 };
if (g_getenv ("DOING_GDM_DEVELOPMENT") != NULL)
DOING_GDM_DEVELOPMENT = TRUE;
@@ -1123,6 +1124,7 @@
}
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_widget_modify_bg (window, GTK_STATE_NORMAL, &black);
if G_UNLIKELY (DOING_GDM_DEVELOPMENT) {
g_signal_connect (G_OBJECT (window), "key_press_event",
@@ -1139,6 +1141,7 @@
gtk_window_set_default_size (GTK_WINDOW (window),
gdm_wm_screen.width,
gdm_wm_screen.height);
+ gtk_widget_modify_bg (canvas, GTK_STATE_NORMAL, &black);
gtk_container_add (GTK_CONTAINER (window), canvas);
/*
--- gdm-2.16.1/gui/greeter/greeter_canvas_item.c
+++ gdm-2.16.1/gui/greeter/greeter_canvas_item.c
@@ -24,6 +24,12 @@
#include <glib/gi18n.h>
#include <librsvg/rsvg.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+
#include "gdm.h"
#include "gdmcommon.h"
#include "gdmconfig.h"
@@ -249,6 +255,127 @@
gtk_widget_grab_focus (entry);
}
+/* Create a persistent pixmap. We create a separate display
+ * and set the closedown mode on it to RetainPermanent
+ */
+static GdkPixmap *
+make_root_pixmap (GdkScreen *screen, gint width, gint height)
+{
+ Display *display;
+ char *display_name;
+ Pixmap result;
+ GdkPixmap *gdk_pixmap;
+ int screen_num;
+
+ screen_num = gdk_screen_get_number (screen);
+
+ gdk_flush ();
+
+ display_name = DisplayString (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
+
+ display = XOpenDisplay (display_name);
+
+ if (display == NULL) {
+ g_warning ("Unable to open display '%s' when setting background pixmap\n",
+ (display_name) ? display_name : "NULL");
+ return NULL;
+ }
+
+ XSetCloseDownMode (display, RetainPermanent);
+
+ result = XCreatePixmap (display,
+ RootWindow (display, screen_num),
+ width, height,
+ DefaultDepth (display, screen_num));
+
+ XCloseDisplay (display);
+
+ gdk_pixmap = gdk_pixmap_foreign_new (result);
+ gdk_drawable_set_colormap (GDK_DRAWABLE (gdk_pixmap),
+ gdk_drawable_get_colormap (gdk_screen_get_root_window (screen)));
+
+ return gdk_pixmap;
+}
+
+/* Set the root pixmap, and properties pointing to it. We
+ * do this atomically with XGrabServer to make sure that
+ * we won't leak the pixmap if somebody else it setting
+ * it at the same time. (This assumes that they follow the
+ * same conventions we do)
+ */
+static gboolean
+set_root_pixmap (GdkPixmap *pixmap)
+{
+ Atom type;
+ gulong nitems, bytes_after;
+ gint format;
+ guchar *data_esetroot;
+ Pixmap pixmap_id;
+ Display *display;
+ GdkScreen *screen;
+ int screen_num;
+
+ screen = (GdkScreen *) g_object_get_data (G_OBJECT (pixmap),
+ "gdkscreen");
+
+ screen_num = gdk_screen_get_number (screen);
+
+ if (pixmap != NULL)
+ pixmap_id = GDK_WINDOW_XWINDOW (pixmap);
+ else
+ pixmap_id = 0;
+
+ display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
+
+ XGrabServer (display);
+
+ XGetWindowProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", False),
+ 0L, 1L, False, XA_PIXMAP,
+ &type, &format, &nitems, &bytes_after,
+ &data_esetroot);
+
+ if (type == XA_PIXMAP) {
+ if (format == 32 && nitems == 1) {
+ Pixmap old_pixmap;
+
+ old_pixmap = *((Pixmap *) data_esetroot);
+
+ if (pixmap != NULL && old_pixmap != pixmap_id)
+ XKillClient (display, old_pixmap);
+ else if (pixmap == NULL)
+ pixmap_id = old_pixmap;
+ }
+
+ XFree (data_esetroot);
+ }
+
+ if (pixmap != NULL) {
+ XChangeProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE),
+ XA_PIXMAP, 32, PropModeReplace,
+ (guchar *) &pixmap_id, 1);
+ XChangeProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "_XROOTPMAP_ID", FALSE),
+ XA_PIXMAP, 32, PropModeReplace,
+ (guchar *) &pixmap_id, 1);
+
+ XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
+ pixmap_id);
+ } else if (pixmap == NULL) {
+ XDeleteProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "ESETROOT_PMAP_ID", FALSE));
+ XDeleteProperty (display, RootWindow (display, screen_num),
+ XInternAtom (display, "_XROOTPMAP_ID", FALSE));
+ }
+
+ XClearWindow (display, RootWindow (display, screen_num));
+ XUngrabServer (display);
+ XFlush (display);
+
+ return FALSE;
+}
+
void
greeter_item_create_canvas_item (GreeterItemInfo *item)
{
@@ -346,12 +473,53 @@
}
if (item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL] != NULL)
+ {
+ static int bg_set = 1; /* disabled */
+
item->item = gnome_canvas_item_new (group,
GNOME_TYPE_CANVAS_PIXBUF,
"x", (gdouble) x1,
"y", (gdouble) y1,
"pixbuf", item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL],
NULL);
+
+ if (!bg_set)
+ {
+ GdkPixmap *pixmap;
+ GdkPixbuf *pixbuf;
+ GdkScreen *screen;
+ GdkGC *gc;
+ gint width, height;
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (canvas));
+
+ pixbuf = item->data.pixmap.pixbufs[GREETER_ITEM_STATE_NORMAL];
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+
+ pixmap = make_root_pixmap (screen, width, height);
+
+ gc = gdk_gc_new (GDK_DRAWABLE (pixmap));
+
+ gdk_draw_pixbuf (GDK_DRAWABLE (pixmap),
+ gc,
+ pixbuf,
+ 0, 0, 0, 0,
+ width,
+ height,
+ GDK_RGB_DITHER_NORMAL,
+ 0, 0);
+
+ g_object_set_data (G_OBJECT (pixmap), "gdkscreen", screen);
+
+ g_timeout_add (1000, set_root_pixmap, pixmap);
+
+ g_object_unref (gc);
+
+ bg_set = 1;
+ }
+ }
break;
case GREETER_ITEM_TYPE_LABEL:
text = gdm_common_expand_text (item->data.text.orig_text);

View File

@ -0,0 +1,975 @@
diff -upr gdm-2.16.1-pre/config/gdm.conf.in gdm-2.16.1-post/config/gdm.conf.in
--- gdm-2.16.1-pre/config/gdm.conf.in 2006-11-08 00:02:48.000000000 -0600
+++ gdm-2.16.1-post/config/gdm.conf.in 2006-11-08 00:02:57.000000000 -0600
@@ -498,6 +498,9 @@ SoundOnLogin=false
# list of libraries, one per line, and load each library in the file.
PreFetchProgram=@GDMPREFETCHCMD@
+# Set to true to show the domain login GUI elements.
+#ShowDomain=false
+
# The chooser is what's displayed when a user wants an indirect XDMCP session,
# or selects Run XDMCP chooser from the system menu
[chooser]
diff -upr gdm-2.16.1-pre/config/gdm.conf.in.orig gdm-2.16.1-post/config/gdm.conf.in.orig
--- gdm-2.16.1-pre/config/gdm.conf.in.orig 2006-08-03 12:36:26.000000000 -0500
+++ gdm-2.16.1-post/config/gdm.conf.in.orig 2006-11-08 00:02:57.000000000 -0600
@@ -67,11 +67,11 @@ TimedLoginDelay=30
# The greeter for local (non-xdmcp) logins. Change gdmlogin to gdmgreeter to
# get the new graphical greeter.
-#Greeter=@libexecdir@/gdmlogin
+Greeter=@libexecdir@/gdmgreeter
# The greeter for xdmcp logins, usually you want a less graphically intensive
# greeter here so it's better to leave this with gdmlogin
-#RemoteGreeter=@libexecdir@/gdmlogin
+RemoteGreeter=@libexecdir@/gdmgreeter
# Launch the greeter with an additional list of colon separated GTK+ modules.
# This is useful for enabling additional feature support e.g. GNOME
@@ -85,10 +85,12 @@ TimedLoginDelay=30
# This value will be overridden with the value from /etc/default/login if it
# contains "ROOT=<pathvalue>".
#DefaultPath=@GDM_USER_PATH@
+DefaultPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# Default path for root. The profile scripts will likely override this value.
# This value will be overridden with the value from /etc/default/login if it
# contains "SUROOT=<pathvalue>".
#RootPath=/sbin:/usr/sbin:@GDM_USER_PATH@
+RootPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# If you are having trouble with using a single server for a long time and want
# GDM to kill/restart the server, turn this on. On Solaris, this value is
@@ -127,6 +129,9 @@ XKeepsCrashing=@gdmconfdir@/XKeepsCrashi
#RebootCommand=@REBOOT_COMMAND@
#HaltCommand=@HALT_COMMAND@
#SuspendCommand=@SUSPEND_COMMAND@
+RebootCommand=/sbin/shutdown -r now
+HaltCommand=/sbin/shutdown -h now
+SuspendCommand=/usr/bin/powersave --suspend-to-disk
# Probably should not touch the below this is the standard setup.
ServAuthDir=@authdir@
# This is our standard startup script. A bit different from a normal X
@@ -137,7 +142,7 @@ BaseXsession=@gdmconfdir@/Xsession
# really a PATH style variable since 2.4.4.2 to allow actual interoperability
# with KDM. Note that <dmconfdir>/Sessions is there for backwards
# compatibility reasons with 2.4.4.x.
-#SessionDesktopDir=/etc/X11/sessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/:@datadir@/xsessions/
+SessionDesktopDir=/usr/share/xsessions/:@EXPANDED_SYSCONFDIR@/dm/Sessions/:@EXPANDED_DATADIR@/gdm/BuiltInSessions/
# This is the default .desktop session. One of the ones in SessionDesktopDir
#DefaultSession=gnome.desktop
# Better leave this blank and HOME will be used. You can use syntax ~/ below
@@ -220,7 +225,7 @@ RelaxPermissions=0
# example, home directories owned by some other user.
CheckDirOwner=true
# Number of seconds to wait after a failed login
-#RetryDelay=1
+RetryDelay=1
# Maximum size of a file we wish to read. This makes it hard for a user to DoS
# us by using a large file.
#UserMaxFile=65536
@@ -281,17 +286,18 @@ Enable=false
#PingIntervalSeconds=15
# The port. 177 is the standard port so better keep it that way.
#Port=177
-# Willing script, none is shipped and by default we'll send hostname system id.
-# But if you supply something here, the output of this script will be sent as
-# status of this host so that the chooser can display it. You could for
-# example send load, or mail details for some user, or some such.
-#Willing=@gdmconfdir@/Xwilling
+#Willing script, none is shipped, X11's one is used by default. If
+# none is present we'll send hostname system id. But if you supply
+# something here, the output of this script will be sent as status of
+# this host so that the chooser can display it. You could for example
+# send load, or mail details for some user, or some such.
+Willing=/etc/X11/xdm/Xwilling
[gui]
# The specific gtkrc file we use. It should be the full path to the gtkrc that
# we need. Unless you need a specific gtkrc that doesn't correspond to a
# specific theme, then just use the GtkTheme key.
-#GtkRC=@datadir@/themes/Default/gtk-2.0/gtkrc
+GtkRC=@datadir@/themes/Industrial/gtk-2.0/gtkrc
# The GTK+ theme to use for the GUI.
#GtkTheme=Default
@@ -318,7 +324,7 @@ Enable=false
#TitleBar=true
# Don't allow user to move the standard login window. Only makes sense if
# TitleBar is on.
-#LockPosition=false
+LockPosition=true
# Set a position for the standard login window rather then just centering the
# window. If you enter negative values for the position it is taken as an
# offset from the right or bottom edge.
@@ -339,7 +345,7 @@ Browser=false
# User ID's less than the MinimalUID value will not be included in the face
# browser or in the gdmselection list for Automatic/Timed login. They will not
# be displayed regardless of the settings for Include and Exclude.
-#MinimalUID=100
+MinimalUID=500
# Users listed in Include will be included in the face browser and in the
# gdmsetup selection list for Automatic/Timed login. Users should be separated
# by commas.
@@ -356,7 +362,7 @@ Browser=false
# large numbers of users and this feature should not be used in such
# environments. The setting of IncludeAll does nothing if Include is set to a
# non-empty value.
-#IncludeAll=false
+IncludeAll=true
# If user or user.png exists in this dir it will be used as his picture.
#GlobalFaceDir=@datadir@/pixmaps/faces/
@@ -370,7 +376,7 @@ Browser=false
#ChooserButtonLogo=@pixmapdir@/gdm-foot-logo.png
# The standard greeter should shake if a user entered the wrong username or
# password. Kind of cool looking
-#Quiver=true
+Quiver=false
# The Actions menu (formerly system menu) is shown in the greeter, this is the
# menu that contains reboot, shutdown, suspend, config and chooser. None of
@@ -407,12 +413,12 @@ DefaultRemoteWelcome=true
# Background settings for the standard greeter:
# Type can be 0=None, 1=Image & Color, 2=Color, 3=Image
#BackgroundType=2
-#BackgroundImage=
+BackgroundImage=0
#BackgroundScaleToFit=true
# The Standard greeter (gdmlogin) uses BackgroundColor as the background
# color, while the themed greeter (gdmgreeter) uses GraphicalThemedColor
# as the background color.
-BackgroundColor=#76848F
+BackgroundColor=#000000
GraphicalThemedColor=#76848F
# XDMCP session should only get a color, this is the sanest setting since you
# don't want to take up too much bandwidth
@@ -454,7 +460,7 @@ GraphicalThemedColor=#76848F
# list then provide a list that is delimited by /: to the GraphicalThemes
# key and set GraphicalThemeRand to true. Otherwise use GraphicalTheme
# and specify just one theme.
-#GraphicalTheme=circles
+GraphicalTheme=GDM-SuSE
#GraphicalThemes=circles/:happygnome
GraphicalThemeDir=@datadir@/gdm/themes/
GraphicalThemeRand=false
@@ -471,6 +477,7 @@ GraphicalThemeRand=false
# executable (see daemon/SoundProgram) it will play that file instead of just
# beeping.
#SoundOnLogin=true
+SoundOnLogin=false
#SoundOnLoginFile=
# If SoundOnLoginSuccess, then the greeter will play a sound (as above) when a
# user successfully logs in.
@@ -558,7 +565,7 @@ Gestures=false
# Definition of the standard X server.
[server-Standard]
name=Standard server
-command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@
+command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@ -br
flexible=true
# Indicates that the X server should be started at a different process
# priority. Values can be any integer value accepted by the setpriority C
diff -upr gdm-2.16.1-pre/configure.ac gdm-2.16.1-post/configure.ac
--- gdm-2.16.1-pre/configure.ac 2006-11-08 00:02:48.000000000 -0600
+++ gdm-2.16.1-post/configure.ac 2006-11-08 00:02:57.000000000 -0600
@@ -844,6 +844,9 @@ AC_SUBST(GDMPREFETCH)
AC_SUBST(GDMPREFETCHLIST)
AC_SUBST(GDMPREFETCHCMD)
+GDM_SCRATCH_DIR="${localstatedir}/gdm"
+AC_DEFINE_UNQUOTED(GDM_SCRATCH_DIR, "$GDM_SCRATCH_DIR", [GDM scratch dir])
+
AC_ARG_ENABLE(secureremote,
[ --enable-secureremote=[yes/no] Enable to offer a secure X connection through ssh [default=no]],,
enable_secureremote=no)
diff -upr gdm-2.16.1-pre/daemon/gdmconfig.c gdm-2.16.1-post/daemon/gdmconfig.c
--- gdm-2.16.1-pre/daemon/gdmconfig.c 2006-07-17 13:43:51.000000000 -0500
+++ gdm-2.16.1-post/daemon/gdmconfig.c 2006-11-08 00:04:46.000000000 -0600
@@ -231,6 +231,7 @@ static gint GdmFlexiReapDelayMinutes;
static gint GdmBackgroundProgramInitialDelay = 30;
static gint GdmBackgroundProgramRestartDelay = 30;
+static gboolean GdmShowDomain;
static gboolean GdmAllowGtkThemeChange;
static gboolean GdmTitleBar;
static gboolean GdmIncludeAll;
@@ -348,6 +349,7 @@ gdm_config_init (void)
realkey_hash = g_hash_table_new (g_str_hash, g_str_equal);
/* boolean values */
+ gdm_config_add_hash (GDM_KEY_SHOW_DOMAIN, &GdmShowDomain, &bool_type);
gdm_config_add_hash (GDM_KEY_ALLOW_REMOTE_ROOT, &GdmAllowRemoteRoot, &bool_type);
gdm_config_add_hash (GDM_KEY_ALLOW_ROOT, &GdmAllowRoot, &bool_type);
gdm_config_add_hash (GDM_KEY_ALLOW_REMOTE_AUTOLOGIN,
diff -upr gdm-2.16.1-pre/daemon/gdm.h gdm-2.16.1-post/daemon/gdm.h
--- gdm-2.16.1-pre/daemon/gdm.h 2006-08-23 22:47:43.000000000 -0500
+++ gdm-2.16.1-post/daemon/gdm.h 2006-11-08 00:02:57.000000000 -0600
@@ -384,6 +384,8 @@ enum {
#define GDM_KEY_GRAPHICAL_THEME_DIR "greeter/GraphicalThemeDir=" DATADIR "/gdm/themes/"
#define GDM_KEY_GRAPHICAL_THEMED_COLOR "greeter/GraphicalThemedColor=#76848F"
+#define GDM_KEY_SHOW_DOMAIN "greeter/ShowDomain=false"
+
#define GDM_KEY_INFO_MSG_FILE "greeter/InfoMsgFile="
#define GDM_KEY_INFO_MSG_FONT "greeter/InfoMsgFont="
@@ -725,6 +727,7 @@ void gdm_final_cleanup (void);
#define GDM_NOTIFY_TIMED_LOGIN_DELAY "TimedLoginDelay" /* <seconds> */
#define GDM_NOTIFY_TIMED_LOGIN_ENABLE "TimedLoginEnable" /* <true/false as int> */
#define GDM_NOTIFY_DISALLOW_TCP "DisallowTCP" /* <true/false as int> */
+#define GDM_NOTIFY_SHOW_DOMAIN "ShowDomain" /* <trye/false as int> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FILE "SoundOnLoginFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_SUCCESS_FILE "SoundOnLoginSuccessFile" /* <sound file> */
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
diff -upr gdm-2.16.1-pre/daemon/verify-pam.c gdm-2.16.1-post/daemon/verify-pam.c
--- gdm-2.16.1-pre/daemon/verify-pam.c 2006-06-09 16:07:41.000000000 -0500
+++ gdm-2.16.1-post/daemon/verify-pam.c 2006-11-08 00:02:57.000000000 -0600
@@ -57,6 +57,8 @@ static char *tmp_PAM_USER = NULL;
/* this is another hack */
static gboolean did_we_ask_for_password = FALSE;
+static gboolean is_account_disabled = FALSE;
+static gboolean is_account_expired = FALSE;
static char *selected_user = NULL;
@@ -430,6 +432,7 @@ perhaps_translate_message (const char *m
g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
+ g_hash_table_insert (hash, "Your account is disabled. Please contact your system administrator", _("Your account is disabled. Please contact your system administrator"));
g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
@@ -502,8 +505,9 @@ gdm_verify_pam_conv (int num_msg, struct
for (replies = 0; replies < num_msg; replies++) {
gboolean islogin = FALSE;
- const char *m = msg[replies]->msg;
- m = perhaps_translate_message (m);
+ const char *m_untranslated = msg[replies]->msg;
+ const char *m;
+ m = perhaps_translate_message (m_untranslated);
switch (msg[replies]->msg_style) {
@@ -589,6 +593,12 @@ gdm_verify_pam_conv (int num_msg, struct
case PAM_ERROR_MSG:
/* PAM sent a message that should displayed to the user */
+
+ if (strstr (m_untranslated, "account is disabled"))
+ is_account_disabled = TRUE;
+ else if (strstr (m_untranslated, "account has expired"))
+ is_account_expired = TRUE;
+
gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
@@ -1125,7 +1135,11 @@ authenticate_again:
/* Only give this message if we actually asked for
password, otherwise it would be silly to say that
the password may have been wrong */
- if (did_we_ask_for_password) {
+ if (is_account_disabled) {
+ basemsg = _("\nYour account has been disabled.");
+ } else if (is_account_expired) {
+ basemsg = _("\nYour account has expired.");
+ } else if (did_we_ask_for_password) {
basemsg = _("\nIncorrect username or password. "
"Letters must be typed in the correct "
"case.");
@@ -1134,7 +1148,7 @@ authenticate_again:
"Letters must be typed in the correct "
"case.");
}
- if (is_capslock) {
+ if (is_capslock && !is_account_disabled && !is_account_expired) {
msg = g_strconcat (basemsg, " ",
_("Caps Lock is on."),
NULL);
@@ -1250,6 +1264,8 @@ gdm_verify_setup_user (GdmDisplay *d, co
/* Start authentication session */
did_we_ask_for_password = FALSE;
+ is_account_disabled = FALSE;
+ is_account_expired = FALSE;
if ((pamerr = pam_authenticate (pamh, null_tok)) != PAM_SUCCESS) {
if (gdm_slave_action_pending ()) {
gdm_error (_("Couldn't authenticate user"));
diff -upr gdm-2.16.1-pre/gui/greeter/greeter.c gdm-2.16.1-post/gui/greeter/greeter.c
--- gdm-2.16.1-pre/gui/greeter/greeter.c 2006-11-08 00:02:48.000000000 -0600
+++ gdm-2.16.1-post/gui/greeter/greeter.c 2006-11-08 00:02:57.000000000 -0600
@@ -121,6 +121,53 @@ get_random_theme ()
return theme;
}
+static gchar *errdlg_message = NULL;
+
+static void
+show_errdlg_messages (void)
+{
+ gchar *tmp;
+ GtkWidget *dlg;
+
+ if (!errdlg_message)
+ return;
+
+ /* we should be now fine for focusing new windows */
+ gdm_wm_focus_new_windows (TRUE);
+
+ tmp = ve_locale_to_utf8 (errdlg_message);
+ dlg = ve_hig_dialog_new (NULL /* parent */,
+ GTK_DIALOG_MODAL /* flags */,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ tmp,
+ "");
+ g_free (tmp);
+ g_free (errdlg_message);
+ errdlg_message = NULL;
+
+ gdm_wm_center_window (GTK_WINDOW (dlg));
+
+ gdm_wm_no_login_focus_push ();
+ gtk_dialog_run (GTK_DIALOG (dlg));
+ gtk_widget_destroy (dlg);
+ gdm_wm_no_login_focus_pop ();
+}
+
+static void
+append_errdlg_message (const gchar *message)
+{
+ if (errdlg_message) {
+ gchar *tmp;
+
+ tmp = g_strjoin ("\n\n", errdlg_message, message, NULL);
+ g_free (errdlg_message);
+ errdlg_message = tmp;
+ } else {
+ errdlg_message = g_strdup (message);
+ }
+}
+
static gboolean
greeter_ctrl_handler (GIOChannel *source,
GIOCondition cond,
@@ -184,6 +231,8 @@ process_operation (guchar op_code,
break;
case GDM_PROMPT:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
if (tmp != NULL && strcmp (tmp, _("Username:")) == 0) {
gdm_common_login_sound (gdm_config_get_string (GDM_KEY_SOUND_PROGRAM),
@@ -205,6 +254,8 @@ process_operation (guchar op_code,
break;
case GDM_NOECHO:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
if (tmp != NULL && strcmp (tmp, _("Password:")) == 0)
@@ -217,6 +268,8 @@ process_operation (guchar op_code,
break;
case GDM_MSG:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
greeter_item_pam_message (tmp);
g_free (tmp);
@@ -225,6 +278,8 @@ process_operation (guchar op_code,
break;
case GDM_ERRBOX:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
greeter_item_pam_error (tmp);
g_free (tmp);
@@ -234,30 +289,17 @@ process_operation (guchar op_code,
break;
case GDM_ERRDLG:
- /* we should be now fine for focusing new windows */
- gdm_wm_focus_new_windows (TRUE);
-
tmp = ve_locale_to_utf8 (args);
- dlg = ve_hig_dialog_new (NULL /* parent */,
- GTK_DIALOG_MODAL /* flags */,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- tmp,
- "");
+ append_errdlg_message (tmp);
g_free (tmp);
- gdm_wm_center_window (GTK_WINDOW (dlg));
-
- gdm_wm_no_login_focus_push ();
- gtk_dialog_run (GTK_DIALOG (dlg));
- gtk_widget_destroy (dlg);
- gdm_wm_no_login_focus_pop ();
-
printf ("%c\n", STX);
fflush (stdout);
break;
case GDM_SESS:
+ show_errdlg_messages ();
+
tmp = ve_locale_to_utf8 (args);
session = gdm_session_lookup (tmp);
g_free (tmp);
@@ -274,6 +316,8 @@ process_operation (guchar op_code,
break;
case GDM_LANG:
+ show_errdlg_messages ();
+
language = greeter_language_get_language (args);
if (greeter_language_get_save_language () == GTK_RESPONSE_CANCEL)
printf ("%c%s\n", STX, GDM_RESPONSE_CANCEL);
@@ -284,6 +328,8 @@ process_operation (guchar op_code,
break;
case GDM_SSESS:
+ show_errdlg_messages ();
+
if (gdm_get_save_session () == GTK_RESPONSE_YES)
printf ("%cY\n", STX);
else
@@ -293,6 +339,8 @@ process_operation (guchar op_code,
break;
case GDM_SLANG:
+ show_errdlg_messages ();
+
if (greeter_language_get_save_language () == GTK_RESPONSE_YES)
printf ("%cY\n", STX);
else
@@ -325,6 +373,8 @@ process_operation (guchar op_code,
break;
case GDM_QUIT:
+ show_errdlg_messages ();
+
greeter_item_timed_stop ();
if (require_quarter) {
@@ -429,6 +479,8 @@ process_operation (guchar op_code,
break;
case GDM_SAVEDIE:
+ show_errdlg_messages ();
+
/* Set busy cursor */
gdm_common_setup_cursor (GDK_WATCH);
@@ -448,6 +500,8 @@ process_operation (guchar op_code,
break;
default:
+ show_errdlg_messages ();
+
gdm_common_fail_greeter ("Unexpected greeter command received: '%c'", op_code);
break;
}
@@ -773,6 +827,7 @@ gdm_read_config (void)
gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN);
gdm_config_get_bool (GDM_KEY_DEFAULT_WELCOME);
gdm_config_get_bool (GDM_KEY_DEFAULT_REMOTE_WELCOME);
+ gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN);
/* Keys not to include in reread_config */
gdm_config_get_string (GDM_KEY_SESSION_DESKTOP_DIR);
@@ -832,7 +887,8 @@ greeter_reread_config (int sig, gpointer
gdm_config_reload_bool (GDM_KEY_GRAPHICAL_THEME_RAND) ||
gdm_config_reload_bool (GDM_KEY_SHOW_LAST_SESSION) ||
gdm_config_reload_bool (GDM_KEY_ALLOW_ROOT) ||
- gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT)) {
+ gdm_config_reload_bool (GDM_KEY_ALLOW_REMOTE_ROOT) ||
+ gdm_config_reload_bool (GDM_KEY_SHOW_DOMAIN)) {
/* Set busy cursor */
gdm_common_setup_cursor (GDK_WATCH);
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_canvas_item.c gdm-2.16.1-post/gui/greeter/greeter_canvas_item.c
--- gdm-2.16.1-pre/gui/greeter/greeter_canvas_item.c 2006-11-08 00:02:48.000000000 -0600
+++ gdm-2.16.1-post/gui/greeter/greeter_canvas_item.c 2006-11-08 00:02:57.000000000 -0600
@@ -20,6 +20,8 @@
#include <math.h>
#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
#include <gtk/gtk.h>
#include <glib/gi18n.h>
#include <librsvg/rsvg.h>
@@ -40,6 +42,10 @@
#include "greeter_canvas_item.h"
#include "greeter_configuration.h"
#include "greeter_canvas_text.h"
+#include "greeter_parser.h"
+
+#define WBINFO_DOMAINS_MAX 64
+#define WBINFO_READ_MAX 256
static void
apply_tint (GdkPixbuf *pixbuf, guint32 tint_color)
@@ -376,6 +382,189 @@ set_root_pixmap (GdkPixmap *pixmap)
return FALSE;
}
+gboolean greeter_can_do_domain_login = FALSE;
+gchar *greeter_domain_separator = NULL;
+
+gboolean greeter_wbinfo_was_run = FALSE;
+gboolean greeter_wbinfo_is_running = FALSE;
+GPid greeter_wbinfo_pid;
+GIOChannel *greeter_wbinfo_channel;
+GString *greeter_wbinfo_output;
+
+static void
+wbinfo_end (void)
+{
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+ gint wbinfo_status = 0;
+ gchar *wbinfo_output;
+ GtkListStore *domain_list_store;
+ gchar **tokens = NULL;
+ gchar *own_domain = NULL;
+ gint select_index = 0;
+ GtkTreeIter iter;
+ const gchar *text;
+ gint i;
+
+ if (!greeter_wbinfo_is_running)
+ return;
+
+ greeter_wbinfo_is_running = FALSE;
+ waitpid (greeter_wbinfo_pid, &wbinfo_status, 0);
+ g_spawn_close_pid (greeter_wbinfo_pid);
+
+ wbinfo_output = g_string_free (greeter_wbinfo_output, FALSE);
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item)) {
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+ } else {
+ g_free (wbinfo_output);
+ return;
+ }
+
+ /* Set up the domain store model */
+
+ domain_list_store = gtk_list_store_new (1, G_TYPE_STRING);
+
+ /* The "local login" entry */
+
+ gtk_list_store_append (domain_list_store, &iter);
+ gtk_list_store_set (domain_list_store, &iter,
+ 0, _("<Local>"),
+ -1);
+
+ /* Process wbinfo output, if any */
+
+ if (WEXITSTATUS (wbinfo_status) == 0 && wbinfo_output && *wbinfo_output) {
+ /* The first line of output should be the domain separator,
+ * and any remaining lines are trusted domains. */
+ tokens = g_strsplit_set (wbinfo_output, "\n\r", WBINFO_DOMAINS_MAX + 1);
+ }
+
+ g_free (wbinfo_output);
+ g_free (greeter_domain_separator);
+ greeter_domain_separator = NULL;
+
+ if (tokens && tokens [0]) {
+ greeter_can_do_domain_login = TRUE;
+ greeter_domain_separator = g_strdup (tokens [0]);
+
+ own_domain = tokens [1];
+
+ /* Generate a sorted list of domains for the domain selector combo. */
+
+ g_qsort_with_data (&tokens [1],
+ g_strv_length (tokens) - 1,
+ sizeof (gchar *),
+ (GCompareDataFunc) g_ascii_strcasecmp,
+ NULL);
+
+ for (i = 1; tokens [i]; i++) {
+ /* Ensure no blank entries */
+ if (!strlen (tokens [i]))
+ continue;
+
+ gtk_list_store_append (domain_list_store, &iter);
+ gtk_list_store_set (domain_list_store, &iter,
+ 0, tokens [i],
+ -1);
+
+ if (tokens [i] == own_domain)
+ select_index = i;
+ }
+
+ } else {
+ greeter_can_do_domain_login = FALSE;
+ }
+
+ if (tokens)
+ g_strfreev (tokens);
+
+ /* Assign model and default selection to widget */
+
+ gtk_combo_box_set_model (GTK_COMBO_BOX (domain_entry),
+ GTK_TREE_MODEL (domain_list_store));
+ gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (domain_entry), 0);
+
+ /* Default to our own domain, but only if the entry was empty */
+ text = gtk_entry_get_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (domain_entry))));
+ if (!text || !*text)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (domain_entry), select_index);
+
+ g_object_unref (domain_list_store);
+}
+
+static gboolean
+wbinfo_on_output (GIOChannel *channel, GIOCondition condition, gpointer data)
+{
+ gchar buf [WBINFO_READ_MAX];
+ gsize bytes_read;
+ GIOStatus status;
+
+ status = g_io_channel_read_chars (channel, buf, WBINFO_READ_MAX, &bytes_read, NULL);
+
+ if (bytes_read < 1) {
+ wbinfo_end ();
+ return FALSE;
+ }
+
+ g_string_append_len (greeter_wbinfo_output, buf, bytes_read);
+ return TRUE;
+}
+
+static void
+wbinfo_begin (void)
+{
+ gchar *wbinfo_args [] = { "wbinfo", "--separator", "--own-domain", "--trusted-domains", NULL };
+ gchar *wbinfo_env [] = { NULL };
+ gint wbinfo_stdout_fd;
+
+ if (greeter_wbinfo_was_run)
+ return;
+
+ greeter_wbinfo_was_run = TRUE;
+
+ /* Lame guess, in case winbind isn't running, but gets started later. This
+ * is a workaround for testing and broken systems. */
+ greeter_domain_separator = g_strdup ("\\");
+
+ if (!g_spawn_async_with_pipes ("/",
+ wbinfo_args,
+ wbinfo_env,
+ G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL |
+ G_SPAWN_DO_NOT_REAP_CHILD,
+ NULL /* child setup function */,
+ NULL /* child setup user_data */,
+ &greeter_wbinfo_pid,
+ NULL /* &wbinfo_stdin_fd */,
+ &wbinfo_stdout_fd,
+ NULL /* &wbinfo_stderr_fd */,
+ NULL))
+ return;
+
+ greeter_wbinfo_is_running = TRUE;
+ greeter_wbinfo_output = g_string_new ("");
+
+ fcntl (wbinfo_stdout_fd, F_SETFL, O_NONBLOCK);
+
+ greeter_wbinfo_channel = g_io_channel_unix_new (wbinfo_stdout_fd);
+ g_io_channel_set_encoding (greeter_wbinfo_channel, NULL, NULL);
+ g_io_channel_set_close_on_unref (greeter_wbinfo_channel, TRUE);
+ g_io_add_watch (greeter_wbinfo_channel, G_IO_IN | G_IO_HUP, wbinfo_on_output, NULL);
+ g_io_channel_unref (greeter_wbinfo_channel); /* Watch holds remaining ref */
+}
+
+static gboolean
+deselect_entry_text (GtkEntry *entry)
+{
+ gtk_editable_select_region (GTK_EDITABLE (entry), 0, 0);
+ gtk_editable_set_position (GTK_EDITABLE (entry), -1);
+
+ return FALSE;
+}
+
void
greeter_item_create_canvas_item (GreeterItemInfo *item)
{
@@ -661,6 +850,48 @@ greeter_item_create_canvas_item (Greeter
break;
+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
+ entry = gtk_combo_box_entry_new ();
+
+ gtk_widget_set_name (entry, "domain-entry");
+
+ gtk_entry_set_has_frame (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (entry))), FALSE);
+ gtk_widget_modify_font (entry, item->data.text.fonts[GREETER_ITEM_STATE_NORMAL]);
+
+ get_gdk_color_from_rgb (&c, item->data.text.colors[GREETER_ITEM_STATE_NORMAL]);
+ gtk_widget_modify_text (entry, GTK_STATE_NORMAL, &c);
+
+ item->item = gnome_canvas_item_new (group,
+ GNOME_TYPE_CANVAS_WIDGET,
+ "widget", entry,
+ "x", x1,
+ "y", y1,
+ "height", (double)rect.height,
+ "width", (double)rect.width,
+ NULL);
+
+ /* cursor blinking is evil on remote displays, don't do it forever */
+ gdm_common_setup_blinking_entry (gtk_bin_get_child (GTK_BIN (entry)));
+
+ /* Recall the last used domain */
+ if (g_file_get_contents (GDM_SCRATCH_DIR "/last_domain", &text, NULL, NULL)) {
+ GtkWidget *temp_entry;
+
+ temp_entry = gtk_bin_get_child (GTK_BIN (entry));
+
+ gtk_entry_set_text (GTK_ENTRY (temp_entry), text);
+
+ /* The set text gets selected. It looks bad. Avoid that. */
+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc) deselect_entry_text, temp_entry, NULL);
+
+ g_free (text);
+ }
+
+ /* Query wbinfo */
+ wbinfo_begin ();
+
+ break;
+
case GREETER_ITEM_TYPE_LIST:
/* Note a list type must be setup later and we will add the list store
* to it then, depending on the type. Likely userlist is the
Only in gdm-2.16.1-post/gui/greeter: greeter_canvas_item.c.orig
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_configuration.h gdm-2.16.1-post/gui/greeter/greeter_configuration.h
--- gdm-2.16.1-pre/gui/greeter/greeter_configuration.h 2005-04-18 21:57:56.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_configuration.h 2006-11-08 00:02:57.000000000 -0600
@@ -62,6 +62,7 @@ extern gchar *GdmSoundOnLoginFailureFile
extern gboolean GdmSoundOnLoginReady;
extern gboolean GdmSoundOnLoginSuccess;
extern gboolean GdmSoundOnLoginFailure;
+extern gboolean GdmShowDomain;
extern gboolean GDM_IS_LOCAL;
extern gboolean DOING_GDM_DEVELOPMENT;
diff -upr gdm-2.16.1-pre/gui/greeter/greeter.h gdm-2.16.1-post/gui/greeter/greeter.h
--- gdm-2.16.1-pre/gui/greeter/greeter.h 2005-10-06 16:30:26.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter.h 2006-11-08 00:02:57.000000000 -0600
@@ -27,6 +27,9 @@ extern GtkWidget *window;
extern gboolean greeter_probably_login_prompt;
+extern gboolean greeter_can_do_domain_login;
+extern gchar *greeter_domain_separator;
+
void greeter_ignore_buttons (gboolean val);
#endif
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_item.c gdm-2.16.1-post/gui/greeter/greeter_item.c
--- gdm-2.16.1-pre/gui/greeter/greeter_item.c 2006-04-26 21:10:16.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_item.c 2006-11-08 00:02:57.000000000 -0600
@@ -209,6 +209,10 @@ greeter_item_is_visible (GreeterItemInfo
strcmp (info->show_type, "suspend") == 0))
return FALSE;
+ if ( ! gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN) &&
+ g_str_has_prefix (info->show_type, "domain"))
+ return FALSE;
+
if (( ! gdm_config_get_bool (GDM_KEY_TIMED_LOGIN_ENABLE) ||
ve_string_empty (gdm_config_get_string (GDM_KEY_TIMED_LOGIN))) &&
(info->show_type != NULL &&
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_item.h gdm-2.16.1-post/gui/greeter/greeter_item.h
--- gdm-2.16.1-pre/gui/greeter/greeter_item.h 2006-04-26 21:10:16.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_item.h 2006-11-08 00:02:57.000000000 -0600
@@ -47,7 +47,8 @@ enum _GreeterItemType {
GREETER_ITEM_TYPE_LABEL,
GREETER_ITEM_TYPE_ENTRY,
GREETER_ITEM_TYPE_LIST,
- GREETER_ITEM_TYPE_BUTTON
+ GREETER_ITEM_TYPE_BUTTON,
+ GREETER_ITEM_TYPE_COMBO_BOX_ENTRY
};
/* Make sure to adjust the bitfield in the structure if
@@ -147,7 +148,7 @@ struct _GreeterItemInfo {
union {
/* Note: we want to have alphas, colors and have_color coincide for all types
that have it */
-#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY)
+#define GREETER_ITEM_TYPE_IS_TEXT(info) ((info)->item_type == GREETER_ITEM_TYPE_LABEL || (info)->item_type == GREETER_ITEM_TYPE_ENTRY || (info)->item_type == GREETER_ITEM_TYPE_COMBO_BOX_ENTRY)
struct {
guint8 alphas[GREETER_ITEM_STATE_MAX];
guint32 colors[GREETER_ITEM_STATE_MAX];
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_item_pam.c gdm-2.16.1-post/gui/greeter/greeter_item_pam.c
--- gdm-2.16.1-pre/gui/greeter/greeter_item_pam.c 2006-06-09 16:07:42.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_item_pam.c 2006-11-08 00:02:57.000000000 -0600
@@ -36,6 +36,7 @@
#include "gdm.h"
#include "gdmwm.h"
#include "gdmcommon.h"
+#include "gdmconfig.h"
static gboolean messages_to_give = FALSE;
static gboolean replace_msg = TRUE;
@@ -115,11 +116,29 @@ set_text (GreeterItemInfo *info, const c
info->item);
}
+static void
+domain_entry_set_sensitive (gboolean sensitive)
+{
+ if (gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
+ {
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+
+ if (domain_entry)
+ gtk_widget_set_sensitive (domain_entry, sensitive);
+ }
+}
+
void
greeter_item_pam_login (GtkEntry *entry, GreeterItemInfo *info)
{
const char *str;
- char *tmp;
+ char *tmp, *tmp2;
GreeterItemInfo *error_info;
greeter_ignore_buttons (TRUE);
@@ -146,6 +165,7 @@ greeter_item_pam_login (GtkEntry *entry,
}
gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE);
+ domain_entry_set_sensitive (FALSE);
/* clear the err_box */
if (err_box_clear_handler > 0)
@@ -160,6 +180,33 @@ greeter_item_pam_login (GtkEntry *entry,
}
tmp = ve_locale_from_utf8 (str);
+
+ /* Prepend the domain if applicable */
+ if (greeter_probably_login_prompt && gdm_config_get_bool (GDM_KEY_SHOW_DOMAIN))
+ {
+ GreeterItemInfo *domain_entry_item_info;
+ GtkWidget *domain_entry = NULL;
+
+ domain_entry_item_info = greeter_lookup_id ("domain-entry");
+ if (domain_entry_item_info && domain_entry_item_info->item &&
+ GNOME_IS_CANVAS_WIDGET (domain_entry_item_info->item))
+ domain_entry = GNOME_CANVAS_WIDGET (domain_entry_item_info->item)->widget;
+
+ if (domain_entry && (str = gtk_combo_box_get_active_text (GTK_COMBO_BOX (domain_entry))) && *str &&
+ strcmp (str, _("<Local>")))
+ {
+ g_file_set_contents (GDM_SCRATCH_DIR "/last_domain", str, strlen (str), NULL);
+
+ tmp2 = g_strdup_printf ("%s%s%s", str, greeter_domain_separator, tmp);
+ g_free (tmp);
+ tmp = tmp2;
+ }
+ else
+ {
+ g_remove (GDM_SCRATCH_DIR "/last_domain");
+ }
+ }
+
printf ("%c%s\n", STX, tmp);
fflush (stdout);
g_free (tmp);
@@ -213,6 +260,7 @@ greeter_item_pam_setup (void)
/* initially insensitive */
gtk_widget_set_sensitive (entry, FALSE);
+ domain_entry_set_sensitive (FALSE);
}
g_signal_connect (entry, "activate",
@@ -252,6 +300,9 @@ greeter_item_pam_prompt (const char *mes
gtk_entry_set_max_length (GTK_ENTRY (entry), entry_len);
gtk_entry_set_text (GTK_ENTRY (entry), "");
gtk_widget_grab_focus (entry);
+
+ /* Domain selector should only be accessed when entering the user name */
+ domain_entry_set_sensitive (entry_visible);
}
messages_to_give = FALSE;
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_parser.c gdm-2.16.1-post/gui/greeter/greeter_parser.c
--- gdm-2.16.1-pre/gui/greeter/greeter_parser.c 2006-08-02 21:32:39.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_parser.c 2006-11-08 00:02:57.000000000 -0600
@@ -394,6 +394,11 @@ parse_stock (xmlNodePtr node,
g_free (*translated_text);
*translated_text = g_strdup (_("Username:"));
}
+ else if (g_ascii_strcasecmp ((char *) prop, "domain-label") == 0)
+ {
+ g_free (*translated_text);
+ *translated_text = g_strdup (_("Domain:"));
+ }
else if (g_ascii_strcasecmp ((char *) prop, "ok") == 0)
{
g_free (*translated_text);
@@ -1552,6 +1557,15 @@ parse_entry (xmlNodePtr node,
}
static gboolean
+parse_combo_box_entry (xmlNodePtr node,
+ GreeterItemInfo *info,
+ GError **error)
+{
+ /* A ComboBoxEntry is just an Entry with a dropdown list */
+ return parse_entry (node, info, error);
+}
+
+static gboolean
parse_items (xmlNodePtr node,
GList **items_out,
GreeterItemInfo *parent,
@@ -1606,6 +1620,8 @@ parse_items (xmlNodePtr node,
item_type = GREETER_ITEM_TYPE_LIST;
else if (strcmp ((char *) type, "button") == 0)
item_type = GREETER_ITEM_TYPE_BUTTON;
+ else if (strcmp ((char *) type, "combo-box-entry") == 0)
+ item_type = GREETER_ITEM_TYPE_COMBO_BOX_ENTRY;
else
{
g_set_error (error,
@@ -1650,6 +1666,9 @@ parse_items (xmlNodePtr node,
case GREETER_ITEM_TYPE_BUTTON:
res = parse_gtkbutton (child, info, error);
break;
+ case GREETER_ITEM_TYPE_COMBO_BOX_ENTRY:
+ res = parse_combo_box_entry (child, info, error);
+ break;
default:
g_set_error (error,
GREETER_PARSER_ERROR,

View File

@ -0,0 +1,766 @@
diff -upr gdm-2.16.1-pre/daemon/gdm.c gdm-2.16.1-post/daemon/gdm.c
--- gdm-2.16.1-pre/daemon/gdm.c 2006-09-11 15:36:16.000000000 -0500
+++ gdm-2.16.1-post/daemon/gdm.c 2006-11-07 19:19:53.000000000 -0600
@@ -2347,6 +2347,9 @@ gdm_handle_message (GdmConnection *conn,
return;
d = gdm_display_lookup (slave_pid);
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
+
gdm_info (_("Master suspending..."));
sysmenu = gdm_get_value_bool_per_display (d->name, GDM_KEY_SYSTEM_MENU);
@@ -3242,21 +3245,24 @@ gdm_handle_user_message (GdmConnection *
if (logout_action == GDM_LOGOUT_ACTION_NONE)
logout_action = safe_logout_action;
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_HALT))) {
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_HALT);
if (logout_action == GDM_LOGOUT_ACTION_HALT)
g_string_append (msg, "!");
sep = ";";
}
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_REBOOT))) {
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_REBOOT);
if (logout_action == GDM_LOGOUT_ACTION_REBOOT)
g_string_append (msg, "!");
sep = ";";
}
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
g_string_append_printf (msg, "%s%s", sep, GDM_SUP_LOGOUT_ACTION_SUSPEND);
if (logout_action == GDM_LOGOUT_ACTION_SUSPEND)
@@ -3292,21 +3298,24 @@ gdm_handle_user_message (GdmConnection *
disp->logout_action = GDM_LOGOUT_ACTION_NONE;
was_ok = TRUE;
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_HALT) == 0) {
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_HALT))) {
disp->logout_action =
GDM_LOGOUT_ACTION_HALT;
was_ok = TRUE;
}
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_REBOOT) == 0) {
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_REBOOT))) {
disp->logout_action =
GDM_LOGOUT_ACTION_REBOOT;
was_ok = TRUE;
}
} else if (strcmp (action, GDM_SUP_LOGOUT_ACTION_SUSPEND) == 0) {
- if (sysmenu && disp->attached &&
+ if (sysmenu && disp->attached && gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ !gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
disp->logout_action =
GDM_LOGOUT_ACTION_SUSPEND;
diff -upr gdm-2.16.1-pre/daemon/gdmconfig.c gdm-2.16.1-post/daemon/gdmconfig.c
--- gdm-2.16.1-pre/daemon/gdmconfig.c 2006-07-17 13:43:51.000000000 -0500
+++ gdm-2.16.1-post/daemon/gdmconfig.c 2006-11-07 23:19:19.000000000 -0600
@@ -251,6 +251,8 @@ static gboolean GdmGraphicalThemeRand;
static gboolean GdmBroadcast;
static gboolean GdmAllowAdd;
static gboolean GdmRestartBackgroundProgram;
+static gboolean GdmAllowShutdown;
+static gboolean GdmSecureShutdown;
/**
* gdm_config_add_hash
@@ -418,6 +420,8 @@ gdm_config_init (void)
gdm_config_add_hash (GDM_KEY_SOUND_ON_LOGIN, &GdmSoundOnLogin, &bool_type);
gdm_config_add_hash (GDM_KEY_RESTART_BACKGROUND_PROGRAM,
&GdmRestartBackgroundProgram, &bool_type);
+ gdm_config_add_hash (GDM_KEY_ALLOW_SHUTDOWN, &GdmAllowShutdown, &bool_type);
+ gdm_config_add_hash (GDM_KEY_SECURE_SHUTDOWN, &GdmSecureShutdown, &bool_type);
/* string values */
gdm_config_add_hash (GDM_KEY_PATH, &GdmPath, &string_type);
@@ -1277,6 +1281,10 @@ _gdm_set_value_bool (gchar *key, gboolea
notify_displays_int (GDM_NOTIFY_ADD_GTK_MODULES, *setting);
else if (is_key (key, GDM_KEY_TIMED_LOGIN_ENABLE))
notify_displays_int (GDM_NOTIFY_TIMED_LOGIN_ENABLE, *setting);
+ else if (is_key (key, GDM_KEY_ALLOW_SHUTDOWN))
+ notify_displays_int (GDM_NOTIFY_ALLOW_SHUTDOWN, *setting);
+ else if (is_key (key, GDM_KEY_SECURE_SHUTDOWN))
+ notify_displays_int (GDM_NOTIFY_SECURE_SHUTDOWN, *setting);
}
if (*setting)
diff -upr gdm-2.16.1-pre/daemon/gdm.h gdm-2.16.1-post/daemon/gdm.h
--- gdm-2.16.1-pre/daemon/gdm.h 2006-11-07 18:31:11.000000000 -0600
+++ gdm-2.16.1-post/daemon/gdm.h 2006-11-07 20:04:54.000000000 -0600
@@ -123,6 +123,8 @@ enum {
/* Different login interruptions */
#define GDM_INTERRUPT_TIMED_LOGIN 'T'
#define GDM_INTERRUPT_CONFIGURE 'C'
+#define GDM_INTERRUPT_HALT 'K'
+#define GDM_INTERRUPT_REBOOT 'B'
#define GDM_INTERRUPT_SUSPEND 'S'
#define GDM_INTERRUPT_SELECT_USER 'U'
#define GDM_INTERRUPT_LOGIN_SOUND 'L'
@@ -418,6 +420,9 @@ enum {
#define GDM_KEY_SHOW_XTERM_FAILSAFE "greeter/ShowXtermFailsafeSession=true"
#define GDM_KEY_SHOW_LAST_SESSION "greeter/ShowLastSession=true"
+#define GDM_KEY_ALLOW_SHUTDOWN "security/AllowShutdown=true"
+#define GDM_KEY_SECURE_SHUTDOWN "security/SecureShutdown=false"
+
#define GDM_SESSION_FAILSAFE_GNOME "GDM_Failsafe.GNOME"
#define GDM_SESSION_FAILSAFE_XTERM "GDM_Failsafe.XTERM"
@@ -733,6 +738,8 @@ void gdm_final_cleanup (void);
#define GDM_NOTIFY_SOUND_ON_LOGIN_FAILURE_FILE "SoundOnLoginFailureFile" /* <sound file> */
#define GDM_NOTIFY_ADD_GTK_MODULES "AddGtkModules" /* <true/false as int> */
#define GDM_NOTIFY_GTK_MODULES_LIST "GtkModulesList" /* <modules list> */
+#define GDM_NOTIFY_ALLOW_SHUTDOWN "AllowShutdown" /* <true/false as int> */
+#define GDM_NOTIFY_SECURE_SHUTDOWN "SecureShutdown" /* <true/false as int> */
/* commands, seel GDM_SLAVE_NOTIFY_COMMAND */
#define GDM_NOTIFY_DIRTY_SERVERS "DIRTY_SERVERS"
diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
--- gdm-2.16.1-pre/daemon/slave.c 2006-11-07 18:31:11.000000000 -0600
+++ gdm-2.16.1-post/daemon/slave.c 2006-11-07 19:56:06.000000000 -0600
@@ -101,6 +101,8 @@ static gboolean do_timed_login = FALSE;
login the timed login */
static gboolean do_configurator = FALSE; /* if this is true, login as root
* and start the configurator */
+static gboolean do_system_halt = FALSE;
+static gboolean do_system_reboot = FALSE;
static gboolean do_cancel = FALSE; /* if this is true, go back to
username entry & unselect face
browser (if present) */
@@ -1893,6 +1895,97 @@ play_login_sound (const char *sound_file
return TRUE;
}
+static gboolean
+get_root_auth (const gchar *message, struct passwd **pwent)
+{
+ gboolean oldAllowRoot;
+
+ /* clear any error */
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, message);
+
+ /* we always allow root for this */
+ oldAllowRoot = gdm_get_value_bool (GDM_KEY_ALLOW_ROOT);
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
+
+ *pwent = getpwuid (0);
+ if G_UNLIKELY (*pwent == NULL) {
+ /* what? no "root" ?? */
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
+ return FALSE; /* continue */
+ }
+
+ gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, (*pwent)->pw_name);
+ login = gdm_verify_user (d,
+ (*pwent)->pw_name,
+ d->name,
+ d->attached);
+ gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
+
+ /* Clear message */
+ gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
+
+ if G_UNLIKELY (do_restart_greeter) {
+ g_free (login);
+ login = NULL;
+ do_restart_greeter = FALSE;
+ restart_the_greeter ();
+ return FALSE; /* continue */
+ }
+
+ check_notifies_now ();
+
+ /* The wanker can't remember his password */
+ if (login == NULL) {
+ gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ /* Wipe the login */
+ g_free (login);
+ login = NULL;
+
+ /* Note that this can still fall through to
+ * the timed login if the user doesn't type in the
+ * password fast enough and there is timed login
+ * enabled */
+ if (do_timed_login) {
+ return FALSE; /* break; */
+ }
+
+ /* The user is a wanker */
+ if G_UNLIKELY (do_configurator || do_system_halt || do_system_reboot) {
+ do_configurator = FALSE;
+ do_system_halt = FALSE;
+ do_system_reboot = FALSE;
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ /* Now running as root */
+
+ /* Get the root pwent */
+ *pwent = getpwuid (0);
+
+ if G_UNLIKELY (*pwent == NULL) {
+ /* What? No "root" ?? This is not possible
+ * since we logged in, but I'm paranoid */
+ gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
+ return FALSE; /* continue */
+ }
+
+ d->logged_in = TRUE;
+ logged_in_uid = 0;
+ logged_in_gid = 0;
+ gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
+ /* Note: nobody really logged in */
+ gdm_slave_send_string (GDM_SOP_LOGIN, "");
+
+ return TRUE;
+}
+
static void
gdm_slave_wait_for_login (void)
{
@@ -1949,88 +2042,13 @@ gdm_slave_wait_for_login (void)
do_configurator = FALSE;
g_free (login);
login = NULL;
- /* clear any error */
- gdm_slave_greeter_ctl_no_ret (GDM_ERRBOX, "");
- gdm_slave_greeter_ctl_no_ret
- (GDM_MSG,
- _("You must authenticate as root to run configuration."));
-
- /* we always allow root for this */
- oldAllowRoot = gdm_get_value_bool (GDM_KEY_ALLOW_ROOT);
- gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, TRUE);
-
- pwent = getpwuid (0);
- if G_UNLIKELY (pwent == NULL) {
- /* what? no "root" ?? */
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
- gdm_slave_greeter_ctl_no_ret (GDM_SETLOGIN, pwent->pw_name);
- login = gdm_verify_user (d,
- pwent->pw_name,
- d->name,
- d->attached);
- gdm_set_value_bool (GDM_KEY_ALLOW_ROOT, oldAllowRoot);
-
- /* Clear message */
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, "");
-
- if G_UNLIKELY (do_restart_greeter) {
- g_free (login);
- login = NULL;
- do_restart_greeter = FALSE;
- restart_the_greeter ();
+ if (!get_root_auth (_("You must authenticate as root to run configuration."), &pwent)) {
+ if (do_timed_login)
+ break;
continue;
}
- check_notifies_now ();
-
- /* The wanker can't remember his password */
- if (login == NULL) {
- gdm_debug ("gdm_slave_wait_for_login: No login/Bad login");
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- /* Wipe the login */
- g_free (login);
- login = NULL;
-
- /* Note that this can still fall through to
- * the timed login if the user doesn't type in the
- * password fast enough and there is timed login
- * enabled */
- if (do_timed_login) {
- break;
- }
-
- /* The user is a wanker */
- if G_UNLIKELY (do_configurator) {
- do_configurator = FALSE;
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- /* Now running as root */
-
- /* Get the root pwent */
- pwent = getpwuid (0);
-
- if G_UNLIKELY (pwent == NULL) {
- /* What? No "root" ?? This is not possible
- * since we logged in, but I'm paranoid */
- gdm_slave_greeter_ctl_no_ret (GDM_RESET, "");
- continue;
- }
-
- d->logged_in = TRUE;
- logged_in_uid = 0;
- logged_in_gid = 0;
- gdm_slave_send_num (GDM_SOP_LOGGED_IN, TRUE);
- /* Note: nobody really logged in */
- gdm_slave_send_string (GDM_SOP_LOGIN, "");
-
/* Disable the login screen, we don't want people to
* log in in the meantime */
gdm_slave_greeter_ctl_no_ret (GDM_DISABLE, "");
@@ -2069,6 +2087,49 @@ gdm_slave_wait_for_login (void)
continue;
}
+ if (do_system_halt) {
+ struct passwd *pwent;
+
+ do_system_halt = FALSE;
+ g_free (login);
+ login = NULL;
+
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ continue;
+
+ if (!gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
+ get_root_auth (_("You must authenticate as root to shut down."), &pwent)) {
+ exit_code_to_use = DISPLAY_HALT;
+ term_quit ();
+ } else if (do_timed_login) {
+ break;
+ }
+
+ continue;
+ }
+
+ if (do_system_reboot) {
+ struct passwd *pwent;
+
+ do_system_reboot = FALSE;
+ g_free (login);
+ login = NULL;
+
+ if (!gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ continue;
+
+ if (!gdm_get_value_bool (GDM_KEY_SECURE_SHUTDOWN) ||
+ get_root_auth (_("You must authenticate as root to restart the computer."), &pwent)) {
+ exit_code_to_use = DISPLAY_REBOOT;
+ term_quit ();
+ } else if (do_timed_login) {
+ break;
+ }
+
+ continue;
+ }
+
+
/* The user timed out into a timed login during the
* conversation */
if (do_timed_login) {
@@ -4943,9 +5004,20 @@ check_for_interruption (const char *msg)
do_configurator = TRUE;
}
break;
+ case GDM_INTERRUPT_HALT:
+ if (d->attached) {
+ do_system_halt = TRUE;
+ }
+ break;
+ case GDM_INTERRUPT_REBOOT:
+ if (d->attached) {
+ do_system_reboot = TRUE;
+ }
+ break;
case GDM_INTERRUPT_SUSPEND:
if (d->attached &&
gdm_get_value_bool_per_display (d->name, GDM_KEY_SYSTEM_MENU) &&
+ gdm_get_value_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
! ve_string_empty (gdm_get_value_string (GDM_KEY_SUSPEND))) {
gchar *msg = g_strdup_printf ("%s %ld",
GDM_SOP_SUSPEND_MACHINE,
@@ -5358,6 +5430,8 @@ gdm_slave_action_pending (void)
{
if (do_timed_login ||
do_configurator ||
+ do_system_halt ||
+ do_system_reboot ||
do_restart_greeter ||
do_cancel)
return FALSE;
@@ -5629,6 +5703,12 @@ gdm_slave_handle_notify (const char *msg
remanage_asap = TRUE;
}
}
+ } else if (sscanf (msg, GDM_NOTIFY_ALLOW_SHUTDOWN " %d", &val) == 1) {
+ gdm_set_value_bool (GDM_KEY_ALLOW_SHUTDOWN, val);
+ if (d->greetpid > 1)
+ kill (d->greetpid, SIGHUP);
+ } else if (sscanf (msg, GDM_NOTIFY_SECURE_SHUTDOWN " %d", &val) == 1) {
+ gdm_set_value_bool (GDM_KEY_SECURE_SHUTDOWN, val);
}
}
diff -upr gdm-2.16.1-pre/gui/gdmlogin.c gdm-2.16.1-post/gui/gdmlogin.c
--- gdm-2.16.1-pre/gui/gdmlogin.c 2006-07-21 12:56:26.000000000 -0500
+++ gdm-2.16.1-post/gui/gdmlogin.c 2006-11-07 21:19:38.000000000 -0600
@@ -658,14 +658,20 @@ gdm_run_gdmconfig (GtkWidget *w, gpointe
static void
gdm_login_restart_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to restart the computer?"), "",
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
- closelog ();
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ closelog ();
- gdm_kill_thingies ();
- _exit (DISPLAY_REBOOT);
+ gdm_kill_thingies ();
+ _exit (DISPLAY_REBOOT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
+ fflush (stdout);
}
}
@@ -673,14 +679,20 @@ gdm_login_restart_handler (void)
static void
gdm_login_halt_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to Shut Down the computer?"), "",
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
- closelog ();
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ closelog ();
- gdm_kill_thingies ();
- _exit (DISPLAY_HALT);
+ gdm_kill_thingies ();
+ _exit (DISPLAY_HALT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
+ fflush (stdout);
}
}
@@ -696,11 +708,17 @@ gdm_login_use_chooser_handler (void)
static void
gdm_login_suspend_handler (void)
{
- if (gdm_wm_warn_dialog (
- _("Are you sure you want to suspend the computer?"), "",
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
- /* suspend interruption */
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ /* suspend interruption */
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
+ fflush (stdout);
+ }
+ } else {
printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
fflush (stdout);
}
@@ -2369,7 +2387,8 @@ gdm_login_gui_init (void)
got_anything = TRUE;
}
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_REBOOT))) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_REBOOT))) {
item = gtk_menu_item_new_with_mnemonic (_("_Restart"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
g_signal_connect (G_OBJECT (item), "activate",
@@ -2379,7 +2398,8 @@ gdm_login_gui_init (void)
got_anything = TRUE;
}
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_HALT))) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_HALT))) {
item = gtk_menu_item_new_with_mnemonic (_("Shut _Down"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
g_signal_connect (G_OBJECT (item), "activate",
@@ -2389,7 +2409,8 @@ gdm_login_gui_init (void)
got_anything = TRUE;
}
- if (gdm_working_command_exists (gdm_config_get_string (GDM_KEY_SUSPEND))) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) &&
+ gdm_working_command_exists (gdm_config_get_string (GDM_KEY_SUSPEND))) {
item = gtk_menu_item_new_with_mnemonic (_("_Suspend"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
g_signal_connect (G_OBJECT (item), "activate",
Only in gdm-2.16.1-post/gui: gdmlogin.c~
diff -upr gdm-2.16.1-pre/gui/gdmsetup.c gdm-2.16.1-post/gui/gdmsetup.c
--- gdm-2.16.1-pre/gui/gdmsetup.c 2006-11-07 18:31:11.000000000 -0600
+++ gdm-2.16.1-post/gui/gdmsetup.c 2006-11-07 21:23:24.000000000 -0600
@@ -1670,9 +1670,6 @@ setup_intspin (const char *name,
g_object_set_data_full (G_OBJECT (spin),
"key", g_strdup (key),
(GDestroyNotify) g_free);
- g_object_set_data_full (G_OBJECT (toggle),
- "notify_key", g_strdup (key),
- (GDestroyNotify) g_free);
gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), val);
Only in gdm-2.16.1-post/gui: gdmsetup.c~
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_item.c gdm-2.16.1-post/gui/greeter/greeter_item.c
--- gdm-2.16.1-pre/gui/greeter/greeter_item.c 2006-11-07 18:31:11.000000000 -0600
+++ gdm-2.16.1-post/gui/greeter/greeter_item.c 2006-11-07 21:28:38.000000000 -0600
@@ -196,15 +196,15 @@ greeter_item_is_visible (GreeterItemInfo
strcmp (info->show_type, "system") == 0)
return FALSE;
- if (( ! sysmenu || ! GdmHaltFound) &&
+ if (( ! sysmenu || ! GdmHaltFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
(info->show_type != NULL &&
strcmp (info->show_type, "halt") == 0))
return FALSE;
- if (( ! sysmenu || ! GdmRebootFound) &&
+ if (( ! sysmenu || ! GdmRebootFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
(info->show_type != NULL &&
strcmp (info->show_type, "reboot") == 0))
return FALSE;
- if (( ! sysmenu || ! GdmSuspendFound) &&
+ if (( ! sysmenu || ! GdmSuspendFound || !gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) &&
(info->show_type != NULL &&
strcmp (info->show_type, "suspend") == 0))
return FALSE;
Only in gdm-2.16.1-post/gui/greeter: greeter_item.c~
diff -upr gdm-2.16.1-pre/gui/greeter/greeter_system.c gdm-2.16.1-post/gui/greeter/greeter_system.c
--- gdm-2.16.1-pre/gui/greeter/greeter_system.c 2006-08-02 21:32:39.000000000 -0500
+++ gdm-2.16.1-post/gui/greeter/greeter_system.c 2006-11-07 21:26:35.000000000 -0600
@@ -68,61 +68,63 @@ bin_exists (const char *command)
* cannot depend on callback data being passed in.
*/
static void
-query_greeter_restart_handler (void)
+greeter_restart_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
- _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
- closelog ();
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
+
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to restart the computer?"), "",
+ _("_Restart"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ closelog ();
- _exit (DISPLAY_REBOOT);
+ _exit (DISPLAY_REBOOT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_REBOOT);
+ fflush (stdout);
}
}
static void
-query_greeter_halt_handler (void)
+greeter_halt_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
- _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
- closelog ();
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
- _exit (DISPLAY_HALT);
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to Shut Down the computer?"), "",
+ _("Shut _Down"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ closelog ();
+
+ _exit (DISPLAY_HALT);
+ }
+ } else {
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_HALT);
+ fflush (stdout);
}
}
static void
-query_greeter_suspend_handler (void)
+greeter_suspend_handler (void)
{
- if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
- _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
- /* suspend interruption */
+ if (!gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN))
+ return;
+
+ if (!gdm_config_get_bool (GDM_KEY_SECURE_SHUTDOWN)) {
+ if (gdm_wm_warn_dialog (_("Are you sure you want to suspend the computer?"), "",
+ _("_Suspend"), NULL, TRUE) == GTK_RESPONSE_YES) {
+ /* suspend interruption */
+ printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
+ fflush (stdout);
+ }
+ } else {
printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
fflush (stdout);
}
}
static void
-greeter_restart_handler (void)
-{
- closelog ();
- _exit (DISPLAY_REBOOT);
-}
-
-
-static void
-greeter_halt_handler (void)
-{
- closelog ();
- _exit (DISPLAY_HALT);
-}
-
-static void
-greeter_suspend_handler (void)
-{
- printf ("%c%c%c\n", STX, BEL, GDM_INTERRUPT_SUSPEND);
- fflush (stdout);
-}
-
-static void
greeter_config_handler (void)
{
greeter_item_ulist_disable ();
@@ -174,36 +176,36 @@ greeter_system_append_system_menu (GtkWi
NULL);
}
- if (GdmRebootFound || GdmHaltFound || GdmSuspendFound) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && (GdmRebootFound || GdmHaltFound || GdmSuspendFound)) {
sep = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (menu), sep);
gtk_widget_show (sep);
}
- if (GdmRebootFound) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmRebootFound) {
w = gtk_menu_item_new_with_mnemonic (_("_Restart"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
gtk_widget_show (GTK_WIDGET (w));
g_signal_connect (G_OBJECT (w), "activate",
- G_CALLBACK (query_greeter_restart_handler),
+ G_CALLBACK (greeter_restart_handler),
NULL);
}
- if (GdmHaltFound) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmHaltFound) {
w = gtk_menu_item_new_with_mnemonic (_("Shut _Down"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
gtk_widget_show (GTK_WIDGET (w));
g_signal_connect (G_OBJECT (w), "activate",
- G_CALLBACK (query_greeter_halt_handler),
+ G_CALLBACK (greeter_halt_handler),
NULL);
}
- if (GdmSuspendFound) {
+ if (gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN) && GdmSuspendFound) {
w = gtk_menu_item_new_with_mnemonic (_("Sus_pend"));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
gtk_widget_show (GTK_WIDGET (w));
g_signal_connect (G_OBJECT (w), "activate",
- G_CALLBACK (query_greeter_suspend_handler),
+ G_CALLBACK (greeter_suspend_handler),
NULL);
}
}
@@ -281,7 +283,7 @@ greeter_system_handler (GreeterItemInfo
vbox,
TRUE, TRUE, 0);
- if (GdmHaltFound) {
+ if (GdmHaltFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
halt_radio = gtk_radio_button_new_with_mnemonic (radio_group,
@@ -299,7 +301,7 @@ greeter_system_handler (GreeterItemInfo
gtk_widget_show (halt_radio);
}
- if (GdmRebootFound) {
+ if (GdmRebootFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
restart_radio = gtk_radio_button_new_with_mnemonic (radio_group,
@@ -316,7 +318,7 @@ greeter_system_handler (GreeterItemInfo
gtk_widget_show (restart_radio);
}
- if (GdmSuspendFound) {
+ if (GdmSuspendFound && gdm_config_get_bool (GDM_KEY_ALLOW_SHUTDOWN)) {
if (group_radio != NULL)
radio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (group_radio));
suspend_radio = gtk_radio_button_new_with_mnemonic (radio_group,
@@ -414,13 +416,13 @@ void
greeter_item_system_setup (void)
{
greeter_item_register_action_callback ("reboot_button",
- (ActionFunc)query_greeter_restart_handler,
+ (ActionFunc)greeter_restart_handler,
NULL);
greeter_item_register_action_callback ("halt_button",
- (ActionFunc)query_greeter_halt_handler,
+ (ActionFunc)greeter_halt_handler,
NULL);
greeter_item_register_action_callback ("suspend_button",
- (ActionFunc)query_greeter_suspend_handler,
+ (ActionFunc)greeter_suspend_handler,
NULL);
greeter_item_register_action_callback ("system_button",
(ActionFunc)greeter_system_handler,
Only in gdm-2.16.1-post/gui/greeter: greeter_system.c~

View File

@ -0,0 +1,23 @@
Index: gdm-2.8.0.7/gui/gdmflexiserver-xnest.desktop.in
================================================================================
--- gdm-2.16.1/gui/gdmflexiserver-xnest.desktop.in
+++ gdm-2.16.1/gui/gdmflexiserver-xnest.desktop.in
@@ -14,3 +14,4 @@
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gdm
X-GNOME-Bugzilla-Component=general
+OnlyShowIn=GNOME;
--- gdm-2.16.1/gui/gdmflexiserver.desktop.in
+++ gdm-2.16.1/gui/gdmflexiserver.desktop.in
@@ -11,3 +11,4 @@
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gdm
X-GNOME-Bugzilla-Component=general
+OnlyShowIn=GNOME;
--- gdm-2.16.1/gui/gdmphotosetup.desktop.in
+++ gdm-2.16.1/gui/gdmphotosetup.desktop.in
@@ -13,3 +13,4 @@
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gdm
X-GNOME-Bugzilla-Component=general
+OnlyShowIn=GNOME;

View File

@ -0,0 +1,11 @@
--- gdm-2.16.1/daemon/verify-pam.c
+++ gdm-2.16.1/daemon/verify-pam.c
@@ -595,7 +595,7 @@
break;
case PAM_TEXT_INFO:
/* PAM sent a message that should displayed to the user */
- gdm_slave_greeter_ctl_no_ret (GDM_MSG, m);
+ gdm_slave_greeter_ctl_no_ret (GDM_ERRDLG, m);
reply[replies].resp_retcode = PAM_SUCCESS;
reply[replies].resp = NULL;
break;

14
gdm-X_SERVER.patch Normal file
View File

@ -0,0 +1,14 @@
--- configure.ac
+++ configure.ac
@@ -987,6 +987,11 @@
X_SERVER="/usr/X11R6/bin/X"
GDM_USER_PATH="$GDM_USER_PATH:/usr/X11R6/bin"
X_CONFIG_OPTIONS="-audit 0"
+elif test -x /usr/bin/X; then
+ X_PATH="/usr/bin"
+ X_SERVER_PATH="/usr/bin"
+ X_SERVER="/usr/bin/X"
+ X_CONFIG_OPTIONS="-audit 0"
elif test -x /usr/bin/Xorg; then
X_PATH="/usr/bin"
X_SERVER_PATH="/usr/bin"

View File

@ -0,0 +1,22 @@
--- gui/gdmchooser.c
+++ gui/gdmchooser.c
@@ -1798,6 +1798,9 @@
gdm_config_get_bool (GDM_KEY_MULTICAST);
gdmcomm_comm_bulk_stop ();
+
+ return TRUE;
+
}
static gboolean
--- gui/greeter/greeter_action_language.c
+++ gui/greeter/greeter_action_language.c
@@ -31,6 +31,7 @@
#include "greeter_configuration.h"
#include "greeter_item_pam.h"
#include "greeter_action_language.h"
+#include "greeter_parser.h"
#define LAST_LANGUAGE "Last"
#define DEFAULT_LANGUAGE "Default"

7
gdm-autologin.pamd Normal file
View File

@ -0,0 +1,7 @@
#%PAM-1.0
auth required pam_permit.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session required pam_resmgr.so

80
gdm-bash-profile.patch Normal file
View File

@ -0,0 +1,80 @@
diff -upr gdm-2.16.1-pre/daemon/slave.c gdm-2.16.1-post/daemon/slave.c
--- gdm-2.16.1-pre/daemon/slave.c 2006-08-07 14:49:29.000000000 -0500
+++ gdm-2.16.1-post/daemon/slave.c 2006-11-07 16:54:20.000000000 -0600
@@ -3358,7 +3358,7 @@ session_child_run (struct passwd *pwent,
#ifndef HAVE_TSOL
char *argv[4];
#else
- char *argv[7];
+ char *argv[9];
#endif
#ifdef CAN_USE_SETPENV
@@ -3584,10 +3584,12 @@ session_child_run (struct passwd *pwent,
argv[1] = NULL;
argv[2] = NULL;
argv[3] = NULL;
-#ifdef HAVE_TSOL
argv[4] = NULL;
argv[5] = NULL;
+#ifdef HAVE_TSOL
argv[6] = NULL;
+ argv[7] = NULL;
+ argv[8] = NULL;
#endif
exec = NULL;
@@ -3640,11 +3642,27 @@ session_child_run (struct passwd *pwent,
argv[3] = argv[4] = argv[5] = argv[6] = NULL;
} else {
#endif
- argv[0] = basexsession;
- argv[1] = exec;
- argv[2] = NULL;
+ /* If it looks like we are using bash, then run the Xsession
+ script in a login shell and pass it 'no-fake-login' as its
+ second argument. This keeps Xsession from sourcing .profile or
+ otherwise trying to pretend to be a login shell. */
+
+ if (strlen (pwent->pw_shell) > 4
+ && ! strcmp (pwent->pw_shell + strlen (pwent->pw_shell) - 5, "/bash")
+ && g_file_test (pwent->pw_shell, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_EXECUTABLE)) {
+ argv[0] = pwent->pw_shell;
+ argv[1] = "--login";
+ argv[2] = basexsession;
+ argv[3] = exec;
+ argv[4] = "no-fake-login";
+ argv[5] = NULL;
+ } else {
+ argv[0] = basexsession;
+ argv[1] = exec;
+ argv[2] = NULL;
+ }
#ifdef HAVE_TSOL
- argv[3] = argv[4] = argv[5] = argv[6] = NULL;
+ argv [3] = argv [4] = argv[5] = argv[6] = argv[7] = argv[8] = NULL;
}
#endif
}
@@ -3793,7 +3811,6 @@ session_child_run (struct passwd *pwent,
failsafe = TRUE;
}
-#ifdef HAVE_TSOL
gdm_debug ("Running %s %s %s %s %s %s for %s on %s",
argv[0],
ve_sure_string (argv[1]),
@@ -3802,13 +3819,6 @@ session_child_run (struct passwd *pwent,
ve_sure_string (argv[4]),
ve_sure_string (argv[5]),
login, d->name);
-#else
- gdm_debug ("Running %s %s %s for %s on %s",
- argv[0],
- ve_sure_string (argv[1]),
- ve_sure_string (argv[2]),
- login, d->name);
-#endif
if ( ! ve_string_empty (pwent->pw_shell)) {
shell = pwent->pw_shell;

15
gdm-bufferoverrun.patch Normal file
View File

@ -0,0 +1,15 @@
--- gdm-2.17.3/vicious-extensions/ve-miscui.c-orig 2006-12-05 16:28:27.460459000 -0600
+++ gdm-2.17.3/vicious-extensions/ve-miscui.c 2006-12-05 16:28:38.677749000 -0600
@@ -76,10 +76,10 @@ ve_hig_dialog_new (GtkWindow *paren
GTK_DIALOG_DESTROY_WITH_PARENT,
type,
buttons,
- primary_message);
+ "%s", primary_message);
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- secondary_message);
+ "%s", secondary_message);
gtk_window_set_title (GTK_WINDOW (dialog), "");
gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);

View File

@ -0,0 +1,15 @@
--- config/gdm.conf-custom
+++ config/gdm.conf-custom
@@ -37,6 +37,12 @@
#
# NOTE: Lines that begin with "#" are considered comments.
#
+# SuSEconfig comments: Some of entries in this file are updated by SuSEconfig,
+# whenever sysconfig entry change. To edit these entries, please use sysconfig
+# (or never touch these sysconfig variables).
+# Comment for each of this entry contains related /etc/sysconfig file and
+# variable.
+#
# Have fun!
[daemon]

150
gdm-conf.patch Normal file
View File

@ -0,0 +1,150 @@
--- gdm-2.15.7/config/gdm.conf.in
+++ gdm-2.15.7/config/gdm.conf.in
@@ -61,11 +61,11 @@
# The greeter for local (non-xdmcp) logins. Change gdmlogin to gdmgreeter to
# get the new graphical greeter.
-#Greeter=@libexecdir@/gdmlogin
+Greeter=@libexecdir@/gdmgreeter
# The greeter for xdmcp logins, usually you want a less graphically intensive
# greeter here so it's better to leave this with gdmlogin
-#RemoteGreeter=@libexecdir@/gdmlogin
+RemoteGreeter=@libexecdir@/gdmgreeter
# Launch the greeter with an additional list of colon separated GTK+ modules.
# This is useful for enabling additional feature support e.g. GNOME
@@ -79,10 +79,12 @@
# This value will be overridden with the value from /etc/default/login if it
# contains "ROOT=<pathvalue>".
#DefaultPath=@GDM_USER_PATH@
+DefaultPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# Default path for root. The profile scripts will likely override this value.
# This value will be overridden with the value from /etc/default/login if it
# contains "SUROOT=<pathvalue>".
#RootPath=/sbin:/usr/sbin:@GDM_USER_PATH@
+RootPath=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/var/lib/dosemu:/usr/games:/opt/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:/opt/kde/bin:/usr/openwin/bin:/opt/cross/bin
# If you are having trouble with using a single server for a long time and want
# GDM to kill/restart the server, turn this on. On Solaris, this value is
@@ -121,6 +123,9 @@
#RebootCommand=@REBOOT_COMMAND@
#HaltCommand=@HALT_COMMAND@
#SuspendCommand=@SUSPEND_COMMAND@
+RebootCommand=/sbin/shutdown -r now
+HaltCommand=/sbin/shutdown -h now
+SuspendCommand=/usr/bin/powersave --suspend-to-disk
# Probably should not touch the below this is the standard setup.
ServAuthDir=@authdir@
# This is our standard startup script. A bit different from a normal X
@@ -131,7 +136,7 @@
# really a PATH style variable since 2.4.4.2 to allow actual interoperability
# with KDM. Note that <dmconfdir>/Sessions is there for backwards
# compatibility reasons with 2.4.4.x.
-#SessionDesktopDir=/etc/X11/sessions/:@dmconfdir@/Sessions/:@datadir@/gdm/BuiltInSessions/:@datadir@/xsessions/
+SessionDesktopDir=/usr/share/xsessions/:@EXPANDED_SYSCONFDIR@/dm/Sessions/:@EXPANDED_DATADIR@/gdm/BuiltInSessions/
# This is the default .desktop session. One of the ones in SessionDesktopDir
#DefaultSession=gnome.desktop
# Better leave this blank and HOME will be used. You can use syntax ~/ below
@@ -214,7 +219,7 @@
# example, home directories owned by some other user.
CheckDirOwner=true
# Number of seconds to wait after a failed login
-#RetryDelay=1
+RetryDelay=1
# Maximum size of a file we wish to read. This makes it hard for a user to DoS
# us by using a large file.
#UserMaxFile=65536
@@ -275,17 +280,18 @@
#PingIntervalSeconds=15
# The port. 177 is the standard port so better keep it that way.
#Port=177
-# Willing script, none is shipped and by default we'll send hostname system id.
-# But if you supply something here, the output of this script will be sent as
-# status of this host so that the chooser can display it. You could for
-# example send load, or mail details for some user, or some such.
-#Willing=@gdmconfdir@/Xwilling
+# Willing script, none is shipped, X11's one is used by default. If
+# none is present we'll send hostname system id. But if you supply
+# something here, the output of this script will be sent as status of
+# this host so that the chooser can display it. You could for example
+# send load, or mail details for some user, or some such.
+Willing=/etc/X11/xdm/Xwilling
[gui]
# The specific gtkrc file we use. It should be the full path to the gtkrc that
# we need. Unless you need a specific gtkrc that doesn't correspond to a
# specific theme, then just use the GtkTheme key.
-#GtkRC=@datadir@/themes/Default/gtk-2.0/gtkrc
+GtkRC=@datadir@/themes/Industrial/gtk-2.0/gtkrc
# The GTK+ theme to use for the GUI.
#GtkTheme=Default
@@ -312,7 +318,7 @@
#TitleBar=true
# Don't allow user to move the standard login window. Only makes sense if
# TitleBar is on.
-#LockPosition=false
+LockPosition=true
# Set a position for the standard login window rather then just centering the
# window. If you enter negative values for the position it is taken as an
# offset from the right or bottom edge.
@@ -333,7 +339,7 @@
# User ID's less than the MinimalUID value will not be included in the face
# browser or in the gdmselection list for Automatic/Timed login. They will not
# be displayed regardless of the settings for Include and Exclude.
-#MinimalUID=100
+MinimalUID=500
# Users listed in Include will be included in the face browser and in the
# gdmsetup selection list for Automatic/Timed login. Users should be separated
# by commas.
@@ -364,7 +370,7 @@
#ChooserButtonLogo=@pixmapdir@/gdm-foot-logo.png
# The standard greeter should shake if a user entered the wrong username or
# password. Kind of cool looking
-#Quiver=true
+Quiver=false
# The Actions menu (formerly system menu) is shown in the greeter, this is the
# menu that contains reboot, shutdown, suspend, config and chooser. None of
@@ -401,12 +407,12 @@
# Background settings for the standard greeter:
# Type can be 0=None, 1=Image & Color, 2=Color, 3=Image
#BackgroundType=2
-#BackgroundImage=
+BackgroundImage=0
#BackgroundScaleToFit=true
# The Standard greeter (gdmlogin) uses BackgroundColor as the background
# color, while the themed greeter (gdmgreeter) uses GraphicalThemedColor
# as the background color.
-BackgroundColor=#76848F
+BackgroundColor=#000000
GraphicalThemedColor=#76848F
# XDMCP session should only get a color, this is the sanest setting since you
# don't want to take up too much bandwidth
@@ -448,7 +454,7 @@
# list then provide a list that is delimited by /: to the GraphicalThemes
# key and set GraphicalThemeRand to true. Otherwise use GraphicalTheme
# and specify just one theme.
-#GraphicalTheme=circles
+GraphicalTheme=GDM-SuSE
#GraphicalThemes=circles/:happygnome
GraphicalThemeDir=@datadir@/gdm/themes/
GraphicalThemeRand=false
@@ -465,6 +471,7 @@
# executable (see daemon/SoundProgram) it will play that file instead of just
# beeping.
#SoundOnLogin=true
+SoundOnLogin=false
#SoundOnLoginFile=
# If SoundOnLoginSuccess, then the greeter will play a sound (as above) when a
# user successfully logs in.
@@ -552,7 +559,7 @@
# Definition of the standard X server.
[server-Standard]
name=Standard server
-command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@
+command=@X_SERVER@ @X_CONFIG_OPTIONS@ @XEVIE_OPTION@ -br
flexible=true
# Indicates that the X server should be started at a different process
# priority. Values can be any integer value accepted by the setpriority C

View File

@ -0,0 +1,10 @@
--- gui/gdmsetup.desktop.in.in
+++ gui/gdmsetup.desktop.in.in
@@ -5,6 +5,7 @@
_Comment=Configure the login window (GNOME Display Manager)
TryExec=@sbindir@/gdmsetup
Exec=gdmsetup
+X-KDE-RootOnly=true
Icon=gdm-setup
StartupNotify=true
Terminal=false

11
gdm-gdmsetup.patch Normal file
View File

@ -0,0 +1,11 @@
--- gui/gdmsetup.desktop.in.in
+++ gui/gdmsetup.desktop.in.in
@@ -3,7 +3,7 @@
_Name=Login Window
_GenericName=Login Window Preferences
_Comment=Configure the login window (GNOME Display Manager)
-TryExec=@sbindir@/gdmsetup
+TryExec=gdmsetup
Exec=gdmsetup
X-KDE-RootOnly=true
Icon=gdm-setup

View File

@ -0,0 +1,29 @@
--- gdm-2.8.0.4/gui/greeter/greeter_action_language.c
+++ gdm-2.8.0.4/gui/greeter/greeter_action_language.c
@@ -212,6 +212,7 @@
GtkWidget *swindow;
GtkWidget *label;
char *s;
+ int y_size;
dialog = gtk_dialog_new_with_buttons (_("Select a language"),
#ifdef TODO
@@ -264,9 +265,17 @@
gtk_container_add (GTK_CONTAINER (swindow), view);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
swindow, TRUE, TRUE, 0);
+
+ y_size = gdm_wm_screen.height;
+ /* If our screen has any sort of reasonable y-resolution,
+ don't make the dialog as tall as the screen. This is a
+ silly hack, but does make things a bit prettier. */
+ if (y_size > 600)
+ y_size = 8 * y_size / 10;
+
gtk_window_set_default_size (GTK_WINDOW (dialog),
MIN (400, gdm_wm_screen.width),
- MIN (600, gdm_wm_screen.height));
+ y_size);
g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))),
"changed",
(GCallback) selection_changed,

22
gdm-logdir.patch Normal file
View File

@ -0,0 +1,22 @@
--- config/Makefile.am
+++ config/Makefile.am
@@ -5,7 +5,7 @@
instsessdir = $(datadir)/xsessions
initdir = $(gdmconfdir)/Init
authdir = $(localstatedir)/gdm
-logdir = $(localstatedir)/log/gdm
+logdir = @logdir@
gnomercdir = $(gdmconfdir)
postdir = $(gdmconfdir)/PostSession
predir = $(gdmconfdir)/PreSession
--- configure.ac
+++ configure.ac
@@ -791,7 +791,7 @@
#
AC_SUBST(authdir, ${localstatedir}/gdm)
AC_SUBST(gdmlocaledir, ${gdmconfdir})
-AC_SUBST(logdir, ${localstatedir}/log/gdm)
+AC_SUBST(logdir, /var/log/gdm)
AC_SUBST(pixmapdir, ${datadir}/pixmaps)
withval=""

View File

@ -0,0 +1,11 @@
--- gdm-2.16.1/config/PreSession.in
+++ gdm-2.16.1/config/PreSession.in
@@ -6,7 +6,7 @@
#
# Note that output goes into the .xsession-errors file for easy debugging
#
-PATH="@X_PATH@:$PATH:/bin:/usr/bin"
+PATH="@X_PATH@:$PATH:/bin:/usr/bin:/opt/kde3/bin"
OLD_IFS=$IFS
gdmwhich () {

11
gdm-server-timeout.patch Normal file
View File

@ -0,0 +1,11 @@
--- daemon/gdm.h
+++ daemon/gdm.h
@@ -270,7 +270,7 @@
#define GDM_KEY_CONSOLE_CANNOT_HANDLE "daemon/ConsoleCannotHandle=am,ar,az,bn,el,fa,gu,hi,ja,ko,ml,mr,pa,ta,zh"
/* How long to wait before assuming an Xserver has timed out */
-#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=10"
+#define GDM_KEY_XSERVER_TIMEOUT "daemon/GdmXserverTimeout=30"
/* Per server definitions */
#define GDM_KEY_SERVER_PREFIX "server-"

251
gdm-xdm-sessions.patch Normal file
View File

@ -0,0 +1,251 @@
--- gdm-2.16.1/config/Xsession.in
+++ gdm-2.16.1/config/Xsession.in
@@ -1,247 +1,3 @@
#!@XSESSION_SHELL@
-#
-# This is SORT OF LIKE an X session, but not quite. You get a command as the
-# first argument (it could be multiple words, so run it with "eval"). As a
-# special case, the command can be:
-# failsafe - Run an xterm only
-# default - Run the appropriate Xclients startup (see the code below)
-# custom - Run ~/.xsession and if that's not available run 'default'
-#
-# (Note that other arguments could also follow, but only the command one is
-# right now relevant and supported)
-#
-# The output is ALREADY redirected to .xsession-errors in GDM. This way
-# .xsession-errors actually gets more output such as if the PreSession script
-# is failing. This also prevents DoS attacks if some app in the users session
-# can be prodded to dump lots of stuff on the stdout/stderr. We wish to be
-# robust don't we? In case you wish to use an existing script for other DM's,
-# you can just not redirect when GDMSESSION is set. GDMSESSION will always
-# be set from gdm.
-#
-# Also note that this is not run as a login shell, this is just executed.
-# This is why we source the profile files below.
-#
-# based on:
-# $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
-command="$@"
-
-if [ -z "$command" ] ; then
- command=failsafe
-fi
-
-# this will go into the .xsession-errors along with all other echo's
-# good for debugging where things went wrong
-echo "$0: Beginning session setup..."
-
-# First read /etc/profile and .profile
-test -f /etc/profile && . /etc/profile
-test -f "$HOME/.profile" && . "$HOME/.profile"
-# Second read /etc/xprofile and .xprofile for X specific setup
-test -f /etc/xprofile && . /etc/xprofile
-test -f "$HOME/.xprofile" && . "$HOME/.xprofile"
-
-# Translation stuff
-if [ -x "@libexecdir@/gdmtranslate" ] ; then
- gdmtranslate="@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
-}
-
-OLD_IFS=$IFS
-
-gdmwhich () {
- COMMAND="$1"
- OUTPUT=
- IFS=:
- for dir in $PATH
- do
- if test -x "$dir/$COMMAND" ; then
- if test "x$OUTPUT" = "x" ; then
- OUTPUT="$dir/$COMMAND"
- fi
- fi
- done
- IFS=$OLD_IFS
- echo "$OUTPUT"
-}
-
-zenity=`gdmwhich zenity`
-
-if [ x"$command" = xfailsafe ] ; then
- if [ -n "$zenity" ] ; then
- disptext=`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"`
- "$zenity" --info --text "$disptext"
- else
- echo "$0: Starting the failsafe xterm session."
- fi
- exec xterm -geometry 80x24+0+0
-fi
-
-# Note: ~/.xsession-errors is now done in the daemon so that it
-# works for ALL sessions (except ones named 'Failsafe')
-
-# clean up after xbanner
-freetemp=`gdmwhich freetemp`
-if [ -n "$freetemp" ] ; then
- "$freetemp"
-fi
-
-userresources="$HOME/.Xresources"
-usermodmap="$HOME/.Xmodmap"
-userxkbmap="$HOME/.Xkbmap"
-
-sysresources=/etc/X11/Xresources
-sysmodmap=/etc/X11/Xmodmap
-sysxkbmap=/etc/X11/Xkbmap
-
-rh6sysresources=/etc/X11/xinit/Xresources
-rh6sysmodmap=/etc/X11/xinit/Xmodmap
-
-
-# merge in defaults
-if [ -f "$rh6sysresources" ]; then
- xrdb -merge "$rh6sysresources"
-fi
-
-if [ -f "$sysresources" ]; then
- xrdb -merge "$sysresources"
-fi
-
-if [ -f "$userresources" ]; then
- xrdb -merge "$userresources"
-fi
-
-# merge in keymaps
-if [ -f "$sysxkbmap" ]; then
- setxkbmap `cat "$sysxkbmap"`
- XKB_IN_USE=yes
-fi
-
-if [ -f "$userxkbmap" ]; then
- setxkbmap `cat "$userxkbmap"`
- XKB_IN_USE=yes
-fi
-
-#
-# Eeek, this seems like too much magic here
-#
-if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
- if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
- xkbsymbols=`sed -n -e 's/^[ ]*XkbSymbols[ ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
- if [ -n "$xkbsymbols" ]; then
- setxkbmap -symbols "$xkbsymbols"
- XKB_IN_USE=yes
- fi
- fi
-fi
-
-# xkb and xmodmap don't play nice together
-if [ -z "$XKB_IN_USE" ]; then
- if [ -f "$rh6sysmodmap" ]; then
- xmodmap "$rh6sysmodmap"
- fi
-
- if [ -f "$sysmodmap" ]; then
- xmodmap "$sysmodmap"
- fi
-
- if [ -f "$usermodmap" ]; then
- xmodmap "$usermodmap"
- fi
-fi
-
-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"
- export LANG
-
- if [ -n "$LC_ALL" ]; then
- if [ "$LC_ALL" != "$LANG" ]; then
- LC_ALL="$LANG"
- fi
- else
- unset LC_ALL
- fi
-
- if [ -n "$LANGUAGE" ]; then
- if [ "$LANGUAGE" != "$LANG" ]; then
- LANGUAGE="$LANG"
- fi
- else
- unset LANGUAGE
- fi
-
- if [ -n "$LINGUAS" ]; then
- if [ "$LINGUAS" != "$LANG" ]; then
- LINGUAS="$LANG"
- fi
- else
- unset LINGUAS
- fi
-fi
-
-# run all system xinitrc shell scripts.
-if [ -d /etc/X11/xinit/xinitrc.d ]; then
- for i in /etc/X11/xinit/xinitrc.d/* ; do
- if [ -x "$i" ]; then
- . "$i"
- fi
- done
-fi
-
-if [ "x$command" = "xcustom" ] ; then
- if [ -x "$HOME/.xsession" ]; then
- command="$HOME/.xsession"
- else
- echo "$0: Cannot find ~/.xsession will try the default session"
- command="default"
- fi
-fi
-
-if [ "x$command" = "xdefault" ] ; then
- if [ -x "$HOME/.Xclients" ]; then
- command="$HOME/.Xclients"
- elif [ -x /etc/X11/xinit/Xclients ]; then
- command="/etc/X11/xinit/Xclients"
- elif [ -x /etc/X11/Xclients ]; then
- command="/etc/X11/Xclients"
- else
- echo "$0: Cannot find Xclients"
- # FIXME: kind of an evil failsafe
- command="xsm"
- fi
-fi
-
-# add ssh-agent if found
-sshagent="`gdmwhich ssh-agent`"
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then
- command="$sshagent -- $command"
-elif [ -z "$sshagent" ] ; then
- echo "$0: ssh-agent not found!"
-fi
-
-echo "$0: Setup done, will execute: $command"
-
-eval exec $command
-
-echo "$0: Executing $command failed, will run xterm"
-
-if [ -n "$zenity" ] ; then
- disptext=`gettextfunc "Failed to start the session, so starting a failsafe xterm session. Windows will have focus only if the mouse pointer is above them. To get out of this mode type 'exit' in the window in the upper left corner"`
- "$zenity" --info --text "$disptext"
-fi
-
-exec xterm -geometry 80x24+0+0
+exec /etc/X11/xdm/Xsession $1 $GDM_LANG

987
gdm.changes Normal file
View File

@ -0,0 +1,987 @@
-------------------------------------------------------------------
Thu Dec 28 17:42:47 CET 2006 - jhargadon@suse.de
- added klogd to Requires (#214295)
-------------------------------------------------------------------
Tue Dec 12 14:29:39 CET 2006 - sbrabec@suse.cz
- Fixed SuSEconfig typo in XDMCP Enable (#221350).
-------------------------------------------------------------------
Mon Dec 11 18:15:07 CET 2006 - maw@suse.de
- Add gdm-bufferoverrun.patch, fixing a format string exploit
(#226360).
-------------------------------------------------------------------
Thu Nov 30 19:13:34 CET 2006 - jhargadon@suse.de
- removed unneeded files from the package (#223687)
-------------------------------------------------------------------
Tue Nov 21 08:29:57 CET 2006 - jpr@suse.de
- Fix missing comment in config file (rest of #221383)
-------------------------------------------------------------------
Fri Nov 17 12:40:55 CET 2006 - jpr@suse.de
- Fix where last_domain is saved (#221543)
-------------------------------------------------------------------
Thu Nov 16 19:59:22 CET 2006 - danw@suse.de
- Remove the ssh session, which has never worked correctly on SUSE.
#220731
-------------------------------------------------------------------
Wed Nov 8 08:08:14 CET 2006 - hpj@suse.de
- Update and re-enable gdm-bash-profile.patch.
- Update and re-enable gdm-2.8.0.0-setup-no-flicker.patch.
- Drop gdm-2.8.0.0-timed-login-enact.patch (similar fix upstream).
- Update and re-enable gdm-2.8.0.7-domain-entry.patch.
- Update and re-enable gdm-2.8.0.7-hald-needs-root.patch.
- Drop gdm-2.8.0.7-user-must-own-iceauthority (upstream).
- Update gdm-autobuild-warning.patch (conflict with previous patch).
-------------------------------------------------------------------
Tue Oct 31 16:53:31 CET 2006 - sbrabec@suse.cz
- Rewritten SuSEconfig.gdm to work better with new custom.conf
(#213037).
-------------------------------------------------------------------
Fri Oct 27 17:33:35 CEST 2006 - jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943
-------------------------------------------------------------------
Mon Oct 23 22:20:32 CEST 2006 - jhargadon@suse.de
- mkdir /var/log/gdm (#213737)
-------------------------------------------------------------------
Thu Oct 12 21:52:14 CEST 2006 - danw@suse.de
- Remove some dead patches. Rename a few for consistency
- Update and re-enable gdm-server-timeout.patch
- Update and re-enable gdm-logdir.patch (#211223)
- Add gdm-X_SERVER.patch to fix Xorg/Xgl switching
-------------------------------------------------------------------
Tue Oct 3 17:57:55 CEST 2006 - jhargadon@suse.de
- update to version 2.16.1
- Use g_markup_printf_escaped so gdmsetup better handles
description strings that contains things similar to a tag
like an email address
- Fix gdmsetup so that the window manager close button works
as the Close button in the dialog
- Fix for bug #352838, avoid crashing by moving call to get
GDM_KEY_SYSTEM_MENU until after authentication check.
- Add g_type_init() to gdmflexiserver since this is needed
for -a (authentication) code to work.
- Translation updates
-------------------------------------------------------------------
Tue Sep 26 17:47:04 CEST 2006 - jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963
-------------------------------------------------------------------
Wed Sep 20 22:26:54 CEST 2006 - jhargadon@suse.de
- modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904
-------------------------------------------------------------------
Thu Sep 14 19:08:38 CEST 2006 - jhargadon@suse.de
- update to version 2.16.0
- Minor improvements to SDTLOGIN logic, used on Solaris to drop the
Xserver to user permissions for added security
- Translation updates
- 327530 - Ensure login window always has focus.
- 341619 - No longer save "Failsafe" sessions as user's default login
-------------------------------------------------------------------
Mon Sep 4 10:58:24 CEST 2006 - kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd
-------------------------------------------------------------------
Wed Aug 30 23:46:48 CEST 2006 - jhargadon@suse.de
- update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus
- Translation updates
-------------------------------------------------------------------
Thu Aug 24 18:56:28 CEST 2006 - sbrabec@suse.cz
- Include xorg-x11-server to BuildRequires to properly detect Xorg
version (#201125).
- Enabled parallel build.
- Enabled secure remote session support.
-------------------------------------------------------------------
Wed Aug 23 17:07:34 CEST 2006 - jhargadon@suse.de
- update to version 2.15.9
- Fix so that focus never leaves the user/password entry when using
the gdmgreeter Options button.
- Fix error message that gets printed when you try to run GDM
daemon as a non-root user.
- Remove calls to syslog/malloc that are called from inside signal
handlers, since they are not safe.
- Translation updates
- Fix to bugs causing gdmchooser to core dump when started.
-------------------------------------------------------------------
Thu Aug 10 19:07:00 CEST 2006 - jhargadon@suse.de
- update to version 2.15.7
- Now GDM does not save Failsafe GNOME or Failsafe Xterm as the
user's default session
- Updated GDM's slave/daemon message handling so it uses
giochannel internal buffering.
- Performance improvements to gdmsetup start-up.
- Translation updates
- Timed Login message fixed so it works when TimedLogin is set to a
piped script.
- Fix decoding of suspend command so it works.
- Make sure that focus is returned to entry after dialogs are launched
from the new Options button.
- NoHost icon updated to use official GNOME logo. New default face
image with a facelift.
- Scrolling regions in gdmsetup User tab are now scrollable
vertically, improving UI experience.
- Correction to autologin PAM service name so automatic login works.
- Fix compiler warnings that were causing core dumping issues on
some platforms
- Correction for serious security issue where the user can enter the
GDM configuration GUI with a user password when the Face Browser
is enabled.
- Fixed bug where when the "Include All" button is modified in the
Users tab, the Automatic/Timed login dropdown lists update
properly.
- Now gdmflexiserver calls gdmcomm_check with FALSE so it will not
pop up a dialog.
- Added gestures to the AccessKeyMouseEvents configuration file
so that users can access more accessibility features using
dwell gestures.
- Now Welcome message is saved in the configuration file in
UTF-8 format for better readibility.
- Improvements to Face Browser.
- Now when GTK+ style buttons are used in gdmgreeter themes,
focus always returns to the entry field after clicking on
a button.
- Now per-display configuration works for greeter/SystemMenu
and greeter/ChooserButton keys.
- "make install" no longer fails if chown fails.
- If authdir is the fallback dir. If not, and GDM cannot
access the user's $HOME directory, then try and use the
fallback directory.
- No longer use popt in favor of glib's GOption command line parsing.
- Fix bug that was causing ShowGnomeFailsafeSession and
ShowGnomeXtermSession configuration values to not work.
- Now add gdm-ssh-session to distribution tarball, and fix the
ssh-session.desktop file so that it sets the right TryExec
value even if --libexecdir isn't passed into configure.
- Fix layout of new buttons in gdmgreeter themes.
- Improvements to signal handling, fixing problem where GDM slave can
hang on read.
- Better configure support for FreeBSD.
- Fix security/AllowRemoteAutoLogin and fix SuspendCommand configuration
so it honors SystemMenu.
- Explicitly adjust the effective GID before running the child session
program to avoid remaining with high privileges.
- Now allow the PAM Stack to be specified in the GDM configuration instead
of being hardcoded to "gdm"
- Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons.
-------------------------------------------------------------------
Fri Jun 9 23:36:47 CEST 2006 - hpj@suse.de
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
-------------------------------------------------------------------
Thu Jun 1 01:06:50 CEST 2006 - hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
-------------------------------------------------------------------
Thu Jun 1 00:29:36 CEST 2006 - dreveman@suse.de
- Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847)
-------------------------------------------------------------------
Wed May 24 17:43:36 CEST 2006 - sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
-------------------------------------------------------------------
Fri May 19 03:14:51 CEST 2006 - hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
-------------------------------------------------------------------
Tue May 16 17:12:18 CEST 2006 - sbrabec@suse.cz
- Do not require exact UID 50 (it can fail, if already assigned).
- Do not fail, if group gdm already exists.
- Behave properly, if gdm.conf defines server 1 (#175829).
-------------------------------------------------------------------
Fri May 12 15:41:56 CEST 2006 - sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
-------------------------------------------------------------------
Tue May 9 04:37:58 CEST 2006 - hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
#119651.
- Made use of the tab key work like pressing enter if there is no
other entry to tab to. Part of fix for Novell bug #160879 and
#167343.
- Made use of the enter key in the domain entry work like it does
in the user/password entry. Par of fix for Novell bug #160879
and #167343.
-------------------------------------------------------------------
Wed Apr 26 20:30:17 CEST 2006 - hpj@suse.de
- Added patch to show info messages in dialog. Needed for AD,
resolves bug #162146.
-------------------------------------------------------------------
Mon Apr 10 19:30:20 CEST 2006 - hpj@suse.de
- Update .ICEauthority fixup patch, corrects serious security
problem (bug #164520).
-------------------------------------------------------------------
Fri Apr 7 14:44:49 CEST 2006 - sbrabec@suse.cz
- Use translation compendium gnome-patch-translation.
-------------------------------------------------------------------
Thu Apr 6 17:20:22 CEST 2006 - hpj@suse.de
- Add patch to fix logic for .ICEauthority permissions correction.
Fixes bug #162952.
-------------------------------------------------------------------
Fri Mar 31 20:32:14 CEST 2006 - jpr@suse.de
- Extend gdm timeout to 30 seconds, 10 seconds is too short for the
ATI driver to respond under Xgl
-------------------------------------------------------------------
Mon Mar 20 18:55:07 CET 2006 - federico@novell.com
- Fixed uninstallation of symbolic links for the earlygdm startup
service, bug #158786.
-------------------------------------------------------------------
Sat Mar 11 09:37:56 CET 2006 - coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
-------------------------------------------------------------------
Tue Mar 7 01:10:57 CET 2006 - federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
-------------------------------------------------------------------
Wed Mar 1 17:26:22 CET 2006 - sbrabec@suse.cz
- KDM_SHUTDOWN renamed to DISPLAYMANAGER_SHUTDOWN, use fillup only
in PLUS (148468#c17).
-------------------------------------------------------------------
Tue Feb 28 15:25:33 CET 2006 - sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
-------------------------------------------------------------------
Sat Feb 25 00:39:07 CET 2006 - hpj@suse.de
- Add patch to fix tab keynav.
-------------------------------------------------------------------
Fri Feb 17 22:49:27 CET 2006 - sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
-------------------------------------------------------------------
Fri Feb 17 18:45:57 CET 2006 - gekker@suse.de
- Fix background color in GDM, it should be black
-------------------------------------------------------------------
Fri Feb 17 13:26:52 CET 2006 - sbrabec@suse.cz
- Added sysconfig fillup template (148468#c15).
-------------------------------------------------------------------
Mon Feb 13 19:59:06 CET 2006 - sbrabec@suse.cz
- Implemented KDM_SHUTDOWN to SuSEconfig.gdm (#148468).
- Set AllowRemoteRoot=false in gdm.conf to follow default
sysconfig.
-------------------------------------------------------------------
Mon Feb 13 08:54:30 CET 2006 - hpj@suse.de
- Updated shutdown options patch: Whether to allow shutdown,
and whether this requires root auth, are the two new options.
- Enforce shutdown options on logout as well.
-------------------------------------------------------------------
Fri Feb 10 13:56:01 CET 2006 - coolo@suse.de
- don't show gdm desktop files in KDE
- use the new way to call preload
-------------------------------------------------------------------
Mon Feb 6 15:56:05 CET 2006 - sbrabec@suse.cz
- Implemented DISPLAYMANAGER_AD_INTEGRATION to SuSEconfig.gdm
(#139338).
-------------------------------------------------------------------
Mon Feb 6 08:03:56 CET 2006 - hpj@suse.de
- Updated domain entry patch to use --all-domains with wbinfo.
- Updated domain entry patch to show "<Local>" for local login.
- Added patch to require root auth to halt or reboot.
-------------------------------------------------------------------
Wed Jan 25 21:31:32 CET 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
-------------------------------------------------------------------
Thu Jan 19 03:10:27 CET 2006 - hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
-------------------------------------------------------------------
Tue Jan 17 00:53:36 CET 2006 - hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
-------------------------------------------------------------------
Fri Jan 13 14:20:36 CET 2006 - schwab@suse.de
- Don't strip binaries.
-------------------------------------------------------------------
Tue Jan 10 19:34:58 CET 2006 - hpj@suse.de
- Added domain logon patch for ADS.
-------------------------------------------------------------------
Mon Dec 5 19:00:47 CET 2005 - gekker@suse.de
- Updated background patch from David Reveman
-------------------------------------------------------------------
Wed Nov 30 21:46:13 CET 2005 - gekker@suse.de
- Update o version 2.8.0.7
- Remove upstream patch
- Fixup patch for background colors
-------------------------------------------------------------------
Thu Nov 10 20:42:49 CET 2005 - rml@suse.de
- Add earlygdm init script. Right now, we just preload gnome bits.
-------------------------------------------------------------------
Wed Nov 2 19:08:30 CET 2005 - gekker@suse.de
- Fix so ctrl-alt-backspacing restarts the xserver (#113718)
- Patch from upstream b.g.o (#152906)
-------------------------------------------------------------------
Mon Oct 17 18:12:52 CEST 2005 - gekker@suse.de
- Make gdm.conf %config(noreplace)
-------------------------------------------------------------------
Fri Oct 14 04:03:05 CEST 2005 - hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
-------------------------------------------------------------------
Thu Oct 13 23:31:08 CEST 2005 - gekker@suse.de
- Update to version 2.8.0.5
-------------------------------------------------------------------
Wed Oct 5 00:45:28 CEST 2005 - gekker@suse.de
- Rediff patch for background colors
-------------------------------------------------------------------
Tue Oct 4 18:32:54 CEST 2005 - gekker@suse.de
- Fix background colors to be consistent on startup
-------------------------------------------------------------------
Tue Sep 20 18:02:09 CEST 2005 - sbrabec@suse.cz
- Removed references to build directory in installed .la files.
-------------------------------------------------------------------
Thu Sep 15 22:04:29 CEST 2005 - gekker@suse.de
- Make Industrial the default Gtk+ theme (114173)
-------------------------------------------------------------------
Tue Sep 6 10:59:31 CEST 2005 - sbrabec@suse.cz
- Updated to version 2.8.0.4.
-------------------------------------------------------------------
Tue Aug 23 00:13:52 CEST 2005 - gekker@suse.de
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
-------------------------------------------------------------------
Sat Aug 20 02:32:02 CEST 2005 - hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
-------------------------------------------------------------------
Tue Aug 16 15:03:33 CEST 2005 - sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
-------------------------------------------------------------------
Fri Aug 12 23:17:00 CEST 2005 - hpj@suse.de
- Made gdm-autologin.pam not require a password.
-------------------------------------------------------------------
Fri Aug 12 14:45:24 CEST 2005 - jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option
-------------------------------------------------------------------
Thu Aug 11 22:43:50 CEST 2005 - gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
-------------------------------------------------------------------
Sun Jul 31 04:07:41 CEST 2005 - jpr@suse.de
- turn on compatibility symlink for all products
-------------------------------------------------------------------
Tue Jul 5 18:43:34 CEST 2005 - gekker@suse.de
- Update to version 2.8.0.1
- Do not use hostname in authentication cookie (82688).
- Disabling of "timed login" doesn't work (8060).
- Issues with "timed login" being set to zero (8024).
- Display flickers for every letter typed (6354).
-------------------------------------------------------------------
Fri Jun 24 16:28:36 CEST 2005 - sbrabec@suse.cz
- Added compatibility symlink %{prefix}/bin/gdm for older products.
-------------------------------------------------------------------
Wed Jun 22 18:46:39 CEST 2005 - gekker@suse.de
- Update to version 2.8.0.0
-------------------------------------------------------------------
Fri Apr 22 17:17:20 CEST 2005 - sbrabec@suse.cz
- Implemended DISPLAYMANAGER_PASSWORD_LESS_LOGIN using SuSEconfig
and PAM configuration (#74198).
-------------------------------------------------------------------
Fri Apr 22 14:52:13 CEST 2005 - sbrabec@suse.cz
- Fixed logdir (#56205).
-------------------------------------------------------------------
Mon Mar 21 17:56:58 CET 2005 - jody@suse.de
- Fix typo in upstream package that broke Shutdown
- Repaired Suspend command to actually work
-------------------------------------------------------------------
Fri Mar 18 13:02:29 CET 2005 - sbrabec@suse.cz
- Removed X-Ximian-Settings (#73047).
-------------------------------------------------------------------
Wed Mar 16 18:15:11 CET 2005 - sbrabec@suse.cz
- Fixed capplets desktop files path.
- Added X-Ximian-Settings to gdmsetup and gdmphotosetup (#73047).
-------------------------------------------------------------------
Tue Mar 15 15:16:21 CET 2005 - sbrabec@suse.cz
- Fixed X-KDE-RootOnly in gdmsetup.desktop (#66693).
-------------------------------------------------------------------
Wed Mar 9 18:00:50 CET 2005 - gekker@suse.de
- Update to version 2.6.0.8 (GNOME 2.10).
-------------------------------------------------------------------
Fri Feb 18 14:17:47 CET 2005 - sbrabec@suse.cz
- Remove gdm_sysconfig.conf before update to force gdm.conf configuration.
-------------------------------------------------------------------
Fri Feb 11 14:20:37 CET 2005 - sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch.
-------------------------------------------------------------------
Thu Feb 10 23:41:34 CET 2005 - gekker@suse.de
- Update to version 2.6.0.7
-------------------------------------------------------------------
Wed Feb 9 17:44:01 CET 2005 - sbrabec@suse.cz
- Cleaned-up configuration and patches.
- Prepared moving of session files to windowmanager packages.
-------------------------------------------------------------------
Tue Feb 8 19:54:09 CET 2005 - gekker@suse.de
- Add patch back to fix Xsession file
-------------------------------------------------------------------
Mon Jan 24 13:49:37 CET 2005 - meissner@suse.de
- added missing NULL in a g_strconcat.
-------------------------------------------------------------------
Thu Jan 20 18:37:53 CET 2005 - gekker@suse.de
- Update to version 2.6.0.6
-------------------------------------------------------------------
Wed Nov 17 11:48:08 CET 2004 - hhetter@suse.de
- add X-KDE-RootOnly to gdmsetup.desktop (#45807)
-------------------------------------------------------------------
Mon Nov 15 14:32:03 CET 2004 - kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin
-------------------------------------------------------------------
Tue Oct 26 22:31:11 CEST 2004 - mmj@suse.de
- Locale rename no to nb
-------------------------------------------------------------------
Fri Oct 15 15:54:08 CEST 2004 - sbrabec@suse.cz
- Implemented sysconfig displaymanager support.
------------------------------------------------------------------
Fri Sep 24 09:42:35 CEST 2004 - hhetter@suse.de
- gdm must require gnome-themes, to ensure availability of
the industrial theme (#44330)
-------------------------------------------------------------------
Wed Aug 25 08:03:50 CEST 2004 - clahey@suse.de
- Cache gdm help and show gdm in khelpcenter.
-------------------------------------------------------------------
Mon Aug 16 23:32:05 CEST 2004 - ro@suse.de
- fixed specfile
-------------------------------------------------------------------
Mon Aug 16 07:03:59 CEST 2004 - shprasad@suse.de
- Fixes bug #60020
Invalid username/passwd input doen't bring the password dialog
for timed login user.
-------------------------------------------------------------------
Fri Jul 30 11:54:42 CEST 2004 - ro@suse.de
- fix spec file, list gdm-session-startkde.diff as patch
-------------------------------------------------------------------
Fri Jul 30 05:39:33 CEST 2004 - shprasad@suse.de
- Fixes bug #60867.
Shows the 'KDE' option when the user clicks on 'Session' at the
time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %install section)
-------------------------------------------------------------------
Thu Jun 24 00:03:24 CEST 2004 - dave@suse.de
- Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path
-------------------------------------------------------------------
Fri Jun 11 23:31:01 CEST 2004 - clahey@suse.de
- Added gdm-support-gdmctl.patch.
-------------------------------------------------------------------
Wed Jun 2 21:26:45 CEST 2004 - mibarra@suse.de
- Fixed gdm.conf to use the correct group
-------------------------------------------------------------------
Wed Jun 2 16:43:29 CEST 2004 - clahey@suse.de
- Set theme to industrial (as well as a few other small changes.)
-------------------------------------------------------------------
Fri May 7 15:33:13 CEST 2004 - hhetter@suse.de
- updated to version 2.6.0.0 [GNOME2.6]
-------------------------------------------------------------------
Wed Mar 31 13:44:10 CEST 2004 - hhetter@suse.de
- startup in graphical theme (#37668)
- Require gnome2-SuSE for the Default Theme (#37707)
- honor xdm scripts (#37852)
-------------------------------------------------------------------
Tue Mar 23 13:43:10 CET 2004 - sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu.
-------------------------------------------------------------------
Mon Mar 22 22:09:39 CET 2004 - hhetter@suse.de
- remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267)
-------------------------------------------------------------------
Mon Mar 15 14:35:34 CET 2004 - sbrabec@suse.cz
- FHS 2.3 fix (mandir, infodir, #35821).
-------------------------------------------------------------------
Wed Mar 10 10:34:27 CET 2004 - sbrabec@suse.cz
- Fixed %doc attributes (#33163).
-------------------------------------------------------------------
Tue Mar 9 15:37:48 CET 2004 - hhetter@suse.de
- include desktop files for sessions
-------------------------------------------------------------------
Tue Mar 2 10:18:38 CET 2004 - hhetter@suse.de
- updated to version 2.4.4.7 [GNOME 2.4.2]
- applied adapted bash-login-shell patch
- adapted desktop file patch
- adapted configuration file (use tools from powersave)
-------------------------------------------------------------------
Thu Feb 26 09:49:01 CET 2004 - hhetter@suse.de
- attached patch: gdm-2.4.1.6-bash-login-shell.patch,
make sure a login shell is available when using
bash
-------------------------------------------------------------------
Fri Feb 20 14:08:05 CET 2004 - sbrabec@suse.cz
- Package renamed to gdm.
-------------------------------------------------------------------
Fri Jan 16 13:08:32 CET 2004 - kukuk@suse.de
- Add pam-devel to neededforbuild
-------------------------------------------------------------------
Sat Jan 10 15:01:34 CET 2004 - adrian@suse.de
- add %defattr
-------------------------------------------------------------------
Thu Sep 18 18:31:26 CEST 2003 - adrian@suse.de
- add Categories
- show entries only in Gnome (#31287)
-------------------------------------------------------------------
Fri Sep 5 09:55:00 CEST 2003 - hhetter@suse.de
- added Obsoletes: gdm
-------------------------------------------------------------------
Tue Aug 19 15:25:30 CEST 2003 - sbrabec@suse.cz
- Updated neededforbuild (rename of librsvg2, eel2).
-------------------------------------------------------------------
Tue Aug 12 14:37:38 CEST 2003 - hhetter@suse.de
- updated to version 2.4.1.6
-------------------------------------------------------------------
Mon Jul 28 09:09:58 CEST 2003 - kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
-------------------------------------------------------------------
Fri Jul 25 01:49:59 CEST 2003 - hhetter@suse.de
- move capplets to correct position
- fix build
-------------------------------------------------------------------
Wed Jul 16 12:53:49 CEST 2003 - sbrabec@suse.cz
- Fixed prefix in configuration files.
-------------------------------------------------------------------
Mon Jul 14 14:24:54 CEST 2003 - sbrabec@suse.cz
- GNOME prefix change to /opt/gnome.
-------------------------------------------------------------------
Wed Jun 25 19:07:07 CEST 2003 - sbrabec@suse.cz
- Updated to version 2.4.1.4.
- Fixed default path to Xwilling.
- Updated neededforbuild.
- Use %find_lang.
- Prefix clash fix (capplets).
-------------------------------------------------------------------
Wed May 28 00:56:41 CEST 2003 - ro@suse.de
- remove unpackaged files from buildroot
-------------------------------------------------------------------
Mon May 26 18:48:33 CEST 2003 - sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales.
-------------------------------------------------------------------
Sun Mar 16 19:19:16 CET 2003 - adrian@suse.de
- add resmgr support to pam
-------------------------------------------------------------------
Mon Mar 10 11:29:12 CET 2003 - hhetter@suse.de
- use LC_MESSAGES instead of LC_ALL for setlocale
( Bug Id#24889 )
-------------------------------------------------------------------
Thu Feb 27 14:34:09 CET 2003 - sbrabec@suse.cz
- Removed gdm wrapper (fixes problems with default language and init
script - bug #23875).
-------------------------------------------------------------------
Tue Feb 25 17:09:22 CET 2003 - sbrabec@suse.cz
- Don't offer UTF-8 locales.
-------------------------------------------------------------------
Mon Feb 24 12:10:44 CET 2003 - hhetter@suse.de
- use graphical greeter by default
-------------------------------------------------------------------
Thu Feb 20 15:52:52 CET 2003 - sbrabec@suse.cz
- Use system language for GDM login from /etc/sysconfig/language.
-------------------------------------------------------------------
Tue Feb 18 17:58:13 CET 2003 - sbrabec@suse.cz
- Updated default config and locale aliases (UTF-8 locales).
-------------------------------------------------------------------
Fri Feb 7 13:39:25 CET 2003 - hhetter@suse.de
- updated to 2.4.1.3 [GNOME 2.2.0]
-------------------------------------------------------------------
Fri Feb 7 11:31:37 CET 2003 - kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
-------------------------------------------------------------------
Thu Jan 16 00:33:18 CET 2003 - ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
-------------------------------------------------------------------
Tue Jan 07 15:26:36 CET 2003 - sbrabec@suse.cz
- Update to version 2.4.1.0.
- Make Default session file executable.
- Added UTF-8 as alternative for all locales.
- Turned on TCP wrappers support.
-------------------------------------------------------------------
Mon Jan 06 16:48:09 CET 2003 - sbrabec@suse.cz
- Install SuSE specific PAM configuration (from xdm), fix its install
place.
- Removed sox from neededforbuild.
-------------------------------------------------------------------
Thu Nov 28 14:35:02 CET 2002 - hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3]
-------------------------------------------------------------------
Mon Nov 11 23:49:53 CET 2002 - ro@suse.de
- changed neededforbuild <xf86 xdevel> to <x-devel-packages>
-------------------------------------------------------------------
Sun Nov 3 15:24:01 CET 2002 - mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names
in /etc/opt/gnome2/gdm/locale.alias. de_DE.utf8 was used
instead of de_DE.UTF-8 etc., but de_DE.UTF-8 is not supported
by X11, although de_DE.utf8 and de_DE.UTF-8 is the same
as far as glibc is concerned, the correct spelling is important
for X11.
- Bug Id #21408: When using gdm2 the usual intialization file
of an X session, i.e. ~/.xinitrc, ~/.xsession, ~/.Xmodmap
~/.xim etc. were not read. Because of this, inputservers for CJK
languages did not start automatically and other default
settings were not correct either.
I fixed this by improving /etc/opt/gnome2/gdm/Sessions/Default
to use 'exec /etc/X11/xdm/Xsession $WINDOWMANGER $GDM_LANG'.
This makes the default behaviour when using gdm2 the same
as when using kdm or xdm.
-------------------------------------------------------------------
Tue Sep 24 16:11:25 CEST 2002 - sbrabec@suse.cz
- Added alsa-devel to neededforbuild, because esound-devel can require it.
-------------------------------------------------------------------
Thu Sep 19 10:54:28 CEST 2002 - sbrabec@suse.cz
- Added alsa to neededforbuild, because esound can depend on it.
-------------------------------------------------------------------
Thu Sep 5 08:36:52 CEST 2002 - hhetter@suse.de
- updated to version 2.4.0.11, fixing a security issue
(no longer open the logging file descriptor as root in
slave.c ) ( Bug Id #18908 )
-------------------------------------------------------------------
Mon Sep 2 13:54:12 CEST 2002 - hhetter@suse.de
- if no session was chosen or previously saved, choose
the gnome session ( Bug Id #18729)
-------------------------------------------------------------------
Fri Aug 30 09:28:16 CEST 2002 - hhetter@suse.de
- fix default script and session linking (Bug Id#18602)
-------------------------------------------------------------------
Thu Aug 22 12:40:32 CEST 2002 - hhetter@suse.de
- parse correct Session directory (Bug Id#18181)
-------------------------------------------------------------------
Tue Aug 20 09:39:08 CEST 2002 - hhetter@suse.de
- fix prereq
-------------------------------------------------------------------
Mon Aug 12 15:35:26 CEST 2002 - hhetter@suse.de
- updated to version 2.4.0.7
- fix neddedforbuild
-------------------------------------------------------------------
Wed Aug 7 08:45:36 CEST 2002 - hhetter@suse.de
- updated to version 2.4.0.5
- fix typo in SuSEconfig script (#17438)
- fix linking of sessions
-------------------------------------------------------------------
Wed Jul 17 08:29:51 CEST 2002 - hhetter@suse.de
- updated to version 2.4.0.2
* busy cursor when start X
* 'System Default' language choice
* fix unresponsive behaviour when first asking for
username in graphical greeter #83187 (bugzilla.gnome.org)
* 'Last' language choice in graphical greeter
* 24 hour clock setting in graphical greeter
* Happy Gnome Theme Update
* more languages supported #84290 (bugzilla.gnome.org)
* Translation updates
-------------------------------------------------------------------
Thu Jul 11 09:21:58 CEST 2002 - hhetter@suse.de
- fix default session
- activate graphical gdmgreeter for local logins by default
-------------------------------------------------------------------
Wed Jul 10 08:29:10 CEST 2002 - hhetter@suse.de
- updated to version 2.4.0.1, bugfix release
- SuSEconfig.gdm2 to manage the GDM sessions
-------------------------------------------------------------------
Tue Jul 9 08:44:52 CEST 2002 - hhetter@suse.de
- initial SuSE package
- create gdm user

7
gdm.pamd Normal file
View File

@ -0,0 +1,7 @@
#%PAM-1.0
auth include common-auth
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session required pam_resmgr.so

759
gdm.spec Normal file
View File

@ -0,0 +1,759 @@
#
# spec file for package gdm (Version 2.16.1)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: gdm
BuildRequires: gnome-common gnome-doc-utils-devel gnome-patch-translation gnutls-devel intltool kdelibs3-doc libglade2-devel libgnomeprintui-devel libgnomeui-devel librsvg-devel libwnck-devel mDNSResponder-devel pam-devel perl-XML-Parser scrollkeeper tcpd-devel update-desktop-files xorg-x11-server zenity
%define prefix /opt/gnome
%define sysconfdir /etc%{prefix}
PreReq: /usr/sbin/groupadd
PreReq: /usr/sbin/useradd
PreReq: /usr/sbin/usermod
PreReq: %fillup_prereq
License: GNU General Public License (GPL)
Group: System/GUI/GNOME
Autoreqprov: on
Version: 2.16.1
Release: 44
Summary: The GNOME 2.x Display Manager
Source: %{name}-%{version}.tar.bz2
Source1: gdm.pamd
Source2: gdm-autologin.pamd
Source3: SuSEconfig.gdm
Source4: init.earlygdm
Source5: sysconfig.displaymanager-gdm
Patch: gdm-conf.patch
Patch2: gdm-bash-profile.patch
Patch3: gdm-language-dialog-size.patch
Patch4: gdm-logdir.patch
Patch5: gdm-xdm-sessions.patch
Patch9: gdm-presession-kde-path.patch
Patch12: gdm-gdmsetup-rootonly.patch
Patch13: gdm-2.8.0.0-any-hostname-auth.patch
Patch14: gdm-2.8.0.0-list-users.patch
Patch15: gdm-2.8.0.0-setup-no-flicker.patch
Patch19: gdm-2.8.0.7-bg-4.patch
Patch20: gdm-2.8.0.7-domain-entry.patch
Patch21: gdm-2.8.0.7-halt-needs-root.patch
Patch22: gdm-2.8.0.7-onlyshow-in-gnome.diff
Patch24: gdm-server-timeout.patch
Patch26: gdm-2.8.0.7-some-info-in-dialog.patch
Patch27: gdm-autobuild-warning.patch
Patch28: gdm-X_SERVER.patch
Patch29: gdm-gdmsetup.patch
Patch30: gdm-conf-custom-sysconfig.patch
Patch31: gdm-bufferoverrun.patch
URL: http://www.gnome.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Docdir: %{_defaultdocdir}
Provides: gdm2
Obsoletes: gdm2
Requires: gnome2-SuSE gnome-themes klogd xorg-x11-Xnest
%description
This version of GDM, the GNOME display manager, is based on GTK2 and is
suited for the GNOME 2.x Desktop. GDM is a flexible X Window System
display manager that has many options, is usable for remote login, and
provides a good looking graphical interface.
Authors:
--------
George (Jiri) Lebl <jirka@5z.com>
Martin K. Petersen <mkp@mkp.net>
Alex Larsson <alexl@redhat.com>
%prep
%setup
gnome-patch-translation-prepare
%patch -p1
%patch2 -p1
%patch3 -p1
%patch4
%patch5 -p1
%patch9 -p1
%patch12
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch19 -p1
%if %suse_version > 1000
%patch20 -p1
%patch21 -p1
%endif
%patch22 -p1
%patch24
%patch26 -p1
%patch27
%patch28
%patch29
%patch30
%patch31 -p1
gnome-patch-translation-update
%build
libtoolize --force
aclocal -I .
automake --add-missing -c
autoreconf
export ac_aux_dir=$RPM_BUILD_DIR/gdm-%{version}
CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing " \
LDFLAGS=-L/usr/%_lib \
./configure \
--prefix=%prefix \
--libdir=%prefix/%_lib \
--sysconfdir=%sysconfdir \
--mandir=%prefix/share/man \
--localstatedir=/var/lib \
--enable-ipv6 \
--libexecdir=/opt/gnome/%_lib/gdm \
--enable-secureremote
make %{?jobs:-j %jobs}
%install
export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
make -i install DESTDIR=$RPM_BUILD_ROOT
unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
# Remove wrapper, it is not needed.
mv $RPM_BUILD_ROOT%{prefix}/sbin/gdm-binary $RPM_BUILD_ROOT%{prefix}/sbin/gdm
# Install PAM files and remove examples.
mkdir -p $RPM_BUILD_ROOT/etc/pam.d
cp %{S:1} $RPM_BUILD_ROOT/etc/pam.d/gdm
cp %{S:2} $RPM_BUILD_ROOT/etc/pam.d/gdm-autologin
rm -f $RPM_BUILD_ROOT/etc/opt/gnome/pam.d/gdm
rm -f $RPM_BUILD_ROOT/etc/opt/gnome/pam.d/gdm-autologin
rmdir $RPM_BUILD_ROOT/etc/opt/gnome/pam.d
# Install earlygdm init script.
install -D -m 0744 %SOURCE4 $RPM_BUILD_ROOT/etc/init.d/earlygdm
# Install PostLogin script.
mv $RPM_BUILD_ROOT/etc/opt/gnome/gdm/PostLogin/Default.sample $RPM_BUILD_ROOT/etc/opt/gnome/gdm/PostLogin/Default
# Install SuSEconfig script.
mkdir -p $RPM_BUILD_ROOT/sbin/conf.d
cp %{S:3} $RPM_BUILD_ROOT/sbin/conf.d
chmod +x $RPM_BUILD_ROOT/sbin/conf.d/SuSEconfig.gdm
%if %suse_version <1010
mkdir -p $RPM_BUILD_ROOT/var/adm/fillup-templates
cp %{S:5} $RPM_BUILD_ROOT/var/adm/fillup-templates
%endif
touch $RPM_BUILD_ROOT/etc/opt/gnome/gdm/gdm_sysconfig.conf
# gnome.desktop should be in gnome-session, ssh.desktop doesn't work
rm $RPM_BUILD_ROOT%{prefix}/share/xsessions/ssh.desktop
rm $RPM_BUILD_ROOT%{prefix}/share/xsessions/gnome.desktop
mkdir -p $RPM_BUILD_ROOT/usr/share
mv $RPM_BUILD_ROOT%{prefix}/share/xsessions $RPM_BUILD_ROOT/usr/share/
rmdir $RPM_BUILD_ROOT/etc%{prefix}/dm
gzip -9nf $RPM_BUILD_ROOT%{prefix}/share/man/man?/*.?
for xml in $RPM_BUILD_ROOT%{prefix}/share/gnome/help/gdm/*/gdm.xml; do
meinproc --check --cache `echo $xml | sed 's/xml$/cache.bz2/'` $xml || :
done
%suse_update_desktop_file gdmsetup SystemSetup
%suse_update_desktop_file -G "" gdmphotosetup SystemSetup
%suse_update_desktop_file -G "" gdmflexiserver RemoteAccess
%suse_update_desktop_file -G "" gdmflexiserver-xnest RemoteAccess
echo DocPath=gdm >> $RPM_BUILD_ROOT%{prefix}/share/applications/gdmsetup.desktop
echo DocPath=gdm >> $RPM_BUILD_ROOT%{prefix}/share/applications/gdmphotosetup.desktop
mkdir -p $RPM_BUILD_ROOT/var/log/gdm
%find_lang %{name}
ln -s ../sbin/gdm $RPM_BUILD_ROOT%{prefix}/bin/gdm
rm $RPM_BUILD_ROOT%{prefix}/%_lib/gtk-2.0/modules/libdwellmouselistener.a
rm $RPM_BUILD_ROOT%{prefix}/%_lib/gtk-2.0/modules/libdwellmouselistener.la
rm $RPM_BUILD_ROOT%{prefix}/%_lib/gtk-2.0/modules/libkeymouselistener.a
rm $RPM_BUILD_ROOT%{prefix}/%_lib/gtk-2.0/modules/libkeymouselistener.la
%clean
rm -rf $RPM_BUILD_ROOT
%pre
# Remove old logs (#56205).
rm -f var/lib/gdm/*.log*
# Remove old gdm_sysconfig.conf to update custom.conf from sysconfig settings.
rm -f etc/opt/gnome/gdm/gdm_sysconfig.conf
/usr/sbin/groupadd -r gdm 2> /dev/null || :
/usr/sbin/useradd -r -o -g gdm -s /bin/false \
-c "Gnome Display Manager daemon" -d /var/lib/gdm gdm 2> /dev/null || :
/usr/sbin/usermod -g gdm -G gdm -s /bin/false gdm 2> /dev/null
%if %suse_version <1010
%post
%{fillup_only -n displaymanager -s gdm}
%{fillup_and_insserv -npY displaymanager earlygdm}
%postun
%insserv_cleanup
%endif
%files -f %files -f %{name}.lang
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog NEWS README TODO
%dir %config /etc/opt/gnome/gdm
%dir %{prefix}/share/omf/gdm
/opt/gnome/share/locale/si
/opt/gnome/share/locale/si/LC_MESSAGES
%config /etc/%{prefix}/gdm/[IPXl]*
#%config(noreplace) /etc/%{prefix}/gdm/gdm.conf
%config(noreplace) /etc/%{prefix}/gdm/custom.conf
#/etc/%{prefix}/gdm/factory-gdm.conf
#/etc/%{prefix}/gdm/custom.conf
/etc/%{prefix}/gdm/Xsession
%ghost /etc/%{prefix}/gdm/gdm_sysconfig.conf
%dir %config /etc/%{prefix}/gdm/modules
%config /etc/%{prefix}/gdm/modules/A*
/etc/%{prefix}/gdm/modules/factory*
/etc/init.d/earlygdm
%{prefix}/share/omf/gdm/gdm-*.omf
%{prefix}/sbin/*
%{prefix}/bin/*
%{prefix}/share/gdm
%{prefix}/share/applications/*.desktop
%{prefix}/share/pixmaps/*.png
%{prefix}/share/icons/*
%{prefix}/%_lib/gtk-2.0/modules/*
%dir %{prefix}/%_lib/gdm
%{prefix}/%_lib/gdm/*
%doc %{prefix}/share/man/man1/*.*
%attr(750,gdm,gdm) %dir /var/lib/gdm
%attr(750,gdm,gdm) %dir /var/log/gdm
%config /etc/pam.d/*
/sbin/conf.d/SuSEconfig.gdm
%{prefix}/share/pixmaps/faces
%if %suse_version <1010
/var/adm/fillup-templates/*
%endif
# FIXME: Should be moved to filesystem:
%dir /usr/share/xsessions
%changelog -n gdm
* Thu Dec 28 2006 - jhargadon@suse.de
- added klogd to Requires (#214295)
* Tue Dec 12 2006 - sbrabec@suse.cz
- Fixed SuSEconfig typo in XDMCP Enable (#221350).
* Mon Dec 11 2006 - maw@suse.de
- Add gdm-bufferoverrun.patch, fixing a format string exploit
(#226360).
* Thu Nov 30 2006 - jhargadon@suse.de
- removed unneeded files from the package (#223687)
* Tue Nov 21 2006 - jpr@suse.de
- Fix missing comment in config file (rest of #221383)
* Fri Nov 17 2006 - jpr@suse.de
- Fix where last_domain is saved (#221543)
* Thu Nov 16 2006 - danw@suse.de
- Remove the ssh session, which has never worked correctly on SUSE.
[#220731]
* Wed Nov 08 2006 - hpj@suse.de
- Update and re-enable gdm-bash-profile.patch.
- Update and re-enable gdm-2.8.0.0-setup-no-flicker.patch.
- Drop gdm-2.8.0.0-timed-login-enact.patch (similar fix upstream).
- Update and re-enable gdm-2.8.0.7-domain-entry.patch.
- Update and re-enable gdm-2.8.0.7-hald-needs-root.patch.
- Drop gdm-2.8.0.7-user-must-own-iceauthority (upstream).
- Update gdm-autobuild-warning.patch (conflict with previous patch).
* Tue Oct 31 2006 - sbrabec@suse.cz
- Rewritten SuSEconfig.gdm to work better with new custom.conf
(#213037).
* Fri Oct 27 2006 - jhargadon@suse.de
- changed TryExec to be the same as Exec in gdmsetup.desktop to
resolve bug #210943
* Mon Oct 23 2006 - jhargadon@suse.de
- mkdir /var/log/gdm (#213737)
* Thu Oct 12 2006 - danw@suse.de
- Remove some dead patches. Rename a few for consistency
- Update and re-enable gdm-server-timeout.patch
- Update and re-enable gdm-logdir.patch (#211223)
- Add gdm-X_SERVER.patch to fix Xorg/Xgl switching
* Tue Oct 03 2006 - jhargadon@suse.de
- update to version 2.16.1
- Use g_markup_printf_escaped so gdmsetup better handles
description strings that contains things similar to a tag
like an email address
- Fix gdmsetup so that the window manager close button works
as the Close button in the dialog
- Fix for bug #352838, avoid crashing by moving call to get
GDM_KEY_SYSTEM_MENU until after authentication check.
- Add g_type_init() to gdmflexiserver since this is needed
for -a (authentication) code to work.
- Translation updates
* Tue Sep 26 2006 - jhargadon@suse.de
- removed am_devperm.so from gdm.pamd and gdm-autologin.pamd
to resolve bug #206963
* Wed Sep 20 2006 - jhargadon@suse.de
- modified SuSEconfig.gdm to reflect the name change of gdm.conf
to custom.conf. bug #206904
* Thu Sep 14 2006 - jhargadon@suse.de
- update to version 2.16.0
- Minor improvements to SDTLOGIN logic, used on Solaris to drop the
Xserver to user permissions for added security
- Translation updates
- 327530 - Ensure login window always has focus.
- 341619 - No longer save "Failsafe" sessions as user's default login
* Mon Sep 04 2006 - kukuk@suse.de
- Add pam_loginuid.so to gdm.pamd and gdm-autologin.pamd
* Wed Aug 30 2006 - jhargadon@suse.de
- update to version 2.15.10
- Now gdmlogin centers cursor in the GUI to ensure that the login
window always has focus
- Translation updates
* Thu Aug 24 2006 - sbrabec@suse.cz
- Include xorg-x11-server to BuildRequires to properly detect Xorg
version (#201125).
- Enabled parallel build.
- Enabled secure remote session support.
* Wed Aug 23 2006 - jhargadon@suse.de
- update to version 2.15.9
- Fix so that focus never leaves the user/password entry when using
the gdmgreeter Options button.
- Fix error message that gets printed when you try to run GDM
daemon as a non-root user.
- Remove calls to syslog/malloc that are called from inside signal
handlers, since they are not safe.
- Translation updates
- Fix to bugs causing gdmchooser to core dump when started.
* Thu Aug 10 2006 - jhargadon@suse.de
- update to version 2.15.7
- Now GDM does not save Failsafe GNOME or Failsafe Xterm as the
user's default session
- Updated GDM's slave/daemon message handling so it uses
giochannel internal buffering.
- Performance improvements to gdmsetup start-up.
- Translation updates
- Timed Login message fixed so it works when TimedLogin is set to a
piped script.
- Fix decoding of suspend command so it works.
- Make sure that focus is returned to entry after dialogs are launched
from the new Options button.
- NoHost icon updated to use official GNOME logo. New default face
image with a facelift.
- Scrolling regions in gdmsetup User tab are now scrollable
vertically, improving UI experience.
- Correction to autologin PAM service name so automatic login works.
- Fix compiler warnings that were causing core dumping issues on
some platforms
- Correction for serious security issue where the user can enter the
GDM configuration GUI with a user password when the Face Browser
is enabled.
- Fixed bug where when the "Include All" button is modified in the
Users tab, the Automatic/Timed login dropdown lists update
properly.
- Now gdmflexiserver calls gdmcomm_check with FALSE so it will not
pop up a dialog.
- Added gestures to the AccessKeyMouseEvents configuration file
so that users can access more accessibility features using
dwell gestures.
- Now Welcome message is saved in the configuration file in
UTF-8 format for better readibility.
- Improvements to Face Browser.
- Now when GTK+ style buttons are used in gdmgreeter themes,
focus always returns to the entry field after clicking on
a button.
- Now per-display configuration works for greeter/SystemMenu
and greeter/ChooserButton keys.
- "make install" no longer fails if chown fails.
- If authdir is the fallback dir. If not, and GDM cannot
access the user's $HOME directory, then try and use the
fallback directory.
- No longer use popt in favor of glib's GOption command line parsing.
- Fix bug that was causing ShowGnomeFailsafeSession and
ShowGnomeXtermSession configuration values to not work.
- Now add gdm-ssh-session to distribution tarball, and fix the
ssh-session.desktop file so that it sets the right TryExec
value even if --libexecdir isn't passed into configure.
- Fix layout of new buttons in gdmgreeter themes.
- Improvements to signal handling, fixing problem where GDM slave can
hang on read.
- Better configure support for FreeBSD.
- Fix security/AllowRemoteAutoLogin and fix SuspendCommand configuration
so it honors SystemMenu.
- Explicitly adjust the effective GID before running the child session
program to avoid remaining with high privileges.
- Now allow the PAM Stack to be specified in the GDM configuration instead
of being hardcoded to "gdm"
- Per-display configuration is now supported.
- Greeter themes now support real GTK+ button types, making gdmgreeter
better support a11y and allow GTK themeable buttons.
* Fri Jun 09 2006 - hpj@suse.de
- Update domain entry patch to default to the currently joined
Active Directory domain if there was no stored preference. Fixes
Novell bug #167344.
* Thu Jun 01 2006 - hpj@suse.de
- Don't let any user configure GDM from the login screen if a
theme with user list is in effect. Fixes Novell bug #180219.
* Thu Jun 01 2006 - dreveman@suse.de
- Fix bg patch and change gdm.conf patch so we pass -br to X
server for black root window. (bnc 179847)
* Wed May 24 2006 - sbrabec@suse.cz
- Do not display Japanese string in terminal, which doesn't support
it (#168736).
- Disabled beep on start (#174786).
* Fri May 19 2006 - hpj@suse.de
- Made GDM use the more graphically intensive, but prettier,
gdmgreeter for remote logins. Fixes Novell bug #176661.
* Tue May 16 2006 - sbrabec@suse.cz
- Do not require exact UID 50 (it can fail, if already assigned).
- Do not fail, if group gdm already exists.
- Behave properly, if gdm.conf defines server 1 (#175829).
* Fri May 12 2006 - sbrabec@suse.cz
- Store value of PERMISSION_SECURITY by SuSEconfig in
gdm_sysconfig.conf (169639#c20).
* Tue May 09 2006 - hpj@suse.de
- Made GDM use the "gdm" group instead of shadow. Fixes Novell bug
[#119651].
- Made use of the tab key work like pressing enter if there is no
other entry to tab to. Part of fix for Novell bug #160879 and
[#167343].
- Made use of the enter key in the domain entry work like it does
in the user/password entry. Par of fix for Novell bug #160879
and #167343.
* Wed Apr 26 2006 - hpj@suse.de
- Added patch to show info messages in dialog. Needed for AD,
resolves bug #162146.
* Mon Apr 10 2006 - hpj@suse.de
- Update .ICEauthority fixup patch, corrects serious security
problem (bug #164520).
* Fri Apr 07 2006 - sbrabec@suse.cz
- Use translation compendium gnome-patch-translation.
* Thu Apr 06 2006 - hpj@suse.de
- Add patch to fix logic for .ICEauthority permissions correction.
Fixes bug #162952.
* Fri Mar 31 2006 - jpr@suse.de
- Extend gdm timeout to 30 seconds, 10 seconds is too short for the
ATI driver to respond under Xgl
* Mon Mar 20 2006 - federico@novell.com
- Fixed uninstallation of symbolic links for the earlygdm startup
service, bug #158786.
* Sat Mar 11 2006 - coolo@suse.de
- fix the only-show-in-gnome patch to patch the .desktop.in
* Tue Mar 07 2006 - federico@novell.com
- Fix installation of the earlygdm service; we were not calling
fillup_and_insserv with "displaymanager" for the configuration
filename.
* Wed Mar 01 2006 - sbrabec@suse.cz
- KDM_SHUTDOWN renamed to DISPLAYMANAGER_SHUTDOWN, use fillup only
in PLUS (148468#c17).
* Tue Feb 28 2006 - sbrabec@suse.cz
- Use kdelibs3-doc in BuildRequires for meinproc (#153635#c14).
* Sat Feb 25 2006 - hpj@suse.de
- Add patch to fix tab keynav.
* Fri Feb 17 2006 - sreeves@suse.de
- Update .desktop file (Name, GenericName, Comment, DocPath)
* Fri Feb 17 2006 - gekker@suse.de
- Fix background color in GDM, it should be black
* Fri Feb 17 2006 - sbrabec@suse.cz
- Added sysconfig fillup template (148468#c15).
* Mon Feb 13 2006 - sbrabec@suse.cz
- Implemented KDM_SHUTDOWN to SuSEconfig.gdm (#148468).
- Set AllowRemoteRoot=false in gdm.conf to follow default
sysconfig.
* Mon Feb 13 2006 - hpj@suse.de
- Updated shutdown options patch: Whether to allow shutdown,
and whether this requires root auth, are the two new options.
- Enforce shutdown options on logout as well.
* Fri Feb 10 2006 - coolo@suse.de
- don't show gdm desktop files in KDE
- use the new way to call preload
* Mon Feb 06 2006 - sbrabec@suse.cz
- Implemented DISPLAYMANAGER_AD_INTEGRATION to SuSEconfig.gdm
(#139338).
* Mon Feb 06 2006 - hpj@suse.de
- Updated domain entry patch to use --all-domains with wbinfo.
- Updated domain entry patch to show "<Local>" for local login.
- Added patch to require root auth to halt or reboot.
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Thu Jan 19 2006 - hpj@suse.de
- Updated the domain logon patch with numerous new features and
cosmetic fixes.
* Tue Jan 17 2006 - hpj@suse.de
- Fixed a bug in logon code that prevented domain logons from
working. Updated domain logon patch.
* Fri Jan 13 2006 - schwab@suse.de
- Don't strip binaries.
* Tue Jan 10 2006 - hpj@suse.de
- Added domain logon patch for ADS.
* Mon Dec 05 2005 - gekker@suse.de
- Updated background patch from David Reveman
* Wed Nov 30 2005 - gekker@suse.de
- Update o version 2.8.0.7
- Remove upstream patch
- Fixup patch for background colors
* Thu Nov 10 2005 - rml@suse.de
- Add earlygdm init script. Right now, we just preload gnome bits.
* Wed Nov 02 2005 - gekker@suse.de
- Fix so ctrl-alt-backspacing restarts the xserver (#113718)
- Patch from upstream b.g.o (#152906)
* Mon Oct 17 2005 - gekker@suse.de
- Make gdm.conf %%config(noreplace)
* Fri Oct 14 2005 - hpj@suse.de
- Updated xauthority-across-hostname-changes patch to use
XAUTHLOCALHOSTNAME environment variable.
* Thu Oct 13 2005 - gekker@suse.de
- Update to version 2.8.0.5
* Wed Oct 05 2005 - gekker@suse.de
- Rediff patch for background colors
* Tue Oct 04 2005 - gekker@suse.de
- Fix background colors to be consistent on startup
* Tue Sep 20 2005 - sbrabec@suse.cz
- Removed references to build directory in installed .la files.
* Thu Sep 15 2005 - gekker@suse.de
- Make Industrial the default Gtk+ theme (114173)
* Tue Sep 06 2005 - sbrabec@suse.cz
- Updated to version 2.8.0.4.
* Tue Aug 23 2005 - gekker@suse.de
- Update to version 2.8.0.3
- Remove upstreamed autologin patch
- Now installs .desktop files in correct location no need to move
* Sat Aug 20 2005 - hpj@suse.de
- Make the default session option work on autologin; we now get GNOME.
* Tue Aug 16 2005 - sbrabec@suse.cz
- Use gnome-screensaver instead of xscreensaver.
* Fri Aug 12 2005 - hpj@suse.de
- Made gdm-autologin.pam not require a password.
* Fri Aug 12 2005 - jpr@suse.de
- require xorg-x11-xnest for the gdmflexiserver -n option
* Thu Aug 11 2005 - gekker@suse.de
- Update to version 2.8.0.2
- Make 64bit clean
* Sun Jul 31 2005 - jpr@suse.de
- turn on compatibility symlink for all products
* Tue Jul 05 2005 - gekker@suse.de
- Update to version 2.8.0.1
- Do not use hostname in authentication cookie (82688).
- Disabling of "timed login" doesn't work (8060).
- Issues with "timed login" being set to zero (8024).
- Display flickers for every letter typed (6354).
* Fri Jun 24 2005 - sbrabec@suse.cz
- Added compatibility symlink %%{prefix}/bin/gdm for older products.
* Wed Jun 22 2005 - gekker@suse.de
- Update to version 2.8.0.0
* Fri Apr 22 2005 - sbrabec@suse.cz
- Implemended DISPLAYMANAGER_PASSWORD_LESS_LOGIN using SuSEconfig
and PAM configuration (#74198).
* Fri Apr 22 2005 - sbrabec@suse.cz
- Fixed logdir (#56205).
* Mon Mar 21 2005 - jody@suse.de
- Fix typo in upstream package that broke Shutdown
- Repaired Suspend command to actually work
* Fri Mar 18 2005 - sbrabec@suse.cz
- Removed X-Ximian-Settings (#73047).
* Wed Mar 16 2005 - sbrabec@suse.cz
- Fixed capplets desktop files path.
- Added X-Ximian-Settings to gdmsetup and gdmphotosetup (#73047).
* Tue Mar 15 2005 - sbrabec@suse.cz
- Fixed X-KDE-RootOnly in gdmsetup.desktop (#66693).
* Wed Mar 09 2005 - gekker@suse.de
- Update to version 2.6.0.8 (GNOME 2.10).
* Fri Feb 18 2005 - sbrabec@suse.cz
- Remove gdm_sysconfig.conf before update to force gdm.conf configuration.
* Fri Feb 11 2005 - sbrabec@suse.cz
- Resource only /usr/share/xsessions for session desktop files.
- Fixed tcp_wrappers support on bi-arch.
* Thu Feb 10 2005 - gekker@suse.de
- Update to version 2.6.0.7
* Wed Feb 09 2005 - sbrabec@suse.cz
- Cleaned-up configuration and patches.
- Prepared moving of session files to windowmanager packages.
* Tue Feb 08 2005 - gekker@suse.de
- Add patch back to fix Xsession file
* Mon Jan 24 2005 - meissner@suse.de
- added missing NULL in a g_strconcat.
* Thu Jan 20 2005 - gekker@suse.de
- Update to version 2.6.0.6
* Wed Nov 17 2004 - hhetter@suse.de
- add X-KDE-RootOnly to gdmsetup.desktop (#45807)
* Mon Nov 15 2004 - kukuk@suse.de
- Use common-* PAM config files for gdm and gdm-autologin
* Tue Oct 26 2004 - mmj@suse.de
- Locale rename no to nb
* Fri Oct 15 2004 - sbrabec@suse.cz
- Implemented sysconfig displaymanager support.
* Fri Sep 24 2004 - hhetter@suse.de
- gdm must require gnome-themes, to ensure availability of
the industrial theme (#44330)
* Wed Aug 25 2004 - clahey@suse.de
- Cache gdm help and show gdm in khelpcenter.
* Mon Aug 16 2004 - ro@suse.de
- fixed specfile
* Mon Aug 16 2004 - shprasad@suse.de
- Fixes bug #60020
Invalid username/passwd input doen't bring the password dialog
for timed login user.
* Fri Jul 30 2004 - ro@suse.de
- fix spec file, list gdm-session-startkde.diff as patch
* Fri Jul 30 2004 - shprasad@suse.de
- Fixes bug #60867.
Shows the 'KDE' option when the user clicks on 'Session' at the
time of login.
(In the spec file, the diff file, gdm-session-startkde.diff, is
applied at the %%install section)
* Thu Jun 24 2004 - dave@suse.de
- Added gdm-presession-kde-path.patch, adds /opt/kde3/bin to the
gdm path
* Fri Jun 11 2004 - clahey@suse.de
- Added gdm-support-gdmctl.patch.
* Wed Jun 02 2004 - mibarra@suse.de
- Fixed gdm.conf to use the correct group
* Wed Jun 02 2004 - clahey@suse.de
- Set theme to industrial (as well as a few other small changes.)
* Fri May 07 2004 - hhetter@suse.de
- updated to version 2.6.0.0 [GNOME2.6]
* Wed Mar 31 2004 - hhetter@suse.de
- startup in graphical theme (#37668)
- Require gnome2-SuSE for the Default Theme (#37707)
- honor xdm scripts (#37852)
* Tue Mar 23 2004 - sbrabec@suse.cz
- Non-UTF-8 locales removed from language menu.
* Mon Mar 22 2004 - hhetter@suse.de
- remove SuSEconfig.gdm; it's no longer needed to manage
the available sessions for gdm, as it is now using desktop
files to define it's sessions (#36267)
* Mon Mar 15 2004 - sbrabec@suse.cz
- FHS 2.3 fix (mandir, infodir, #35821).
* Wed Mar 10 2004 - sbrabec@suse.cz
- Fixed %%doc attributes (#33163).
* Tue Mar 09 2004 - hhetter@suse.de
- include desktop files for sessions
* Tue Mar 02 2004 - hhetter@suse.de
- updated to version 2.4.4.7 [GNOME 2.4.2]
- applied adapted bash-login-shell patch
- adapted desktop file patch
- adapted configuration file (use tools from powersave)
* Thu Feb 26 2004 - hhetter@suse.de
- attached patch: gdm-2.4.1.6-bash-login-shell.patch,
make sure a login shell is available when using
bash
* Fri Feb 20 2004 - sbrabec@suse.cz
- Package renamed to gdm.
* Fri Jan 16 2004 - kukuk@suse.de
- Add pam-devel to neededforbuild
* Sat Jan 10 2004 - adrian@suse.de
- add %%defattr
* Thu Sep 18 2003 - adrian@suse.de
- add Categories
- show entries only in Gnome (#31287)
* Fri Sep 05 2003 - hhetter@suse.de
- added Obsoletes: gdm
* Tue Aug 19 2003 - sbrabec@suse.cz
- Updated neededforbuild (rename of librsvg2, eel2).
* Tue Aug 12 2003 - hhetter@suse.de
- updated to version 2.4.1.6
* Mon Jul 28 2003 - kukuk@suse.de
- Make sure /var/lib/gdm has correct permissions
* Fri Jul 25 2003 - hhetter@suse.de
- move capplets to correct position
- fix build
* Wed Jul 16 2003 - sbrabec@suse.cz
- Fixed prefix in configuration files.
* Mon Jul 14 2003 - sbrabec@suse.cz
- GNOME prefix change to /opt/gnome.
* Wed Jun 25 2003 - sbrabec@suse.cz
- Updated to version 2.4.1.4.
- Fixed default path to Xwilling.
- Updated neededforbuild.
- Use %%find_lang.
- Prefix clash fix (capplets).
* Wed May 28 2003 - ro@suse.de
- remove unpackaged files from buildroot
* Mon May 26 2003 - sbrabec@suse.cz
- Re-enabled UTF-8 alternatives for all locales.
* Sun Mar 16 2003 - adrian@suse.de
- add resmgr support to pam
* Mon Mar 10 2003 - hhetter@suse.de
- use LC_MESSAGES instead of LC_ALL for setlocale
( Bug Id#24889 )
* Thu Feb 27 2003 - sbrabec@suse.cz
- Removed gdm wrapper (fixes problems with default language and init
script - bug #23875).
* Tue Feb 25 2003 - sbrabec@suse.cz
- Don't offer UTF-8 locales.
* Mon Feb 24 2003 - hhetter@suse.de
- use graphical greeter by default
* Thu Feb 20 2003 - sbrabec@suse.cz
- Use system language for GDM login from /etc/sysconfig/language.
* Tue Feb 18 2003 - sbrabec@suse.cz
- Updated default config and locale aliases (UTF-8 locales).
* Fri Feb 07 2003 - hhetter@suse.de
- updated to 2.4.1.3 [GNOME 2.2.0]
* Fri Feb 07 2003 - kukuk@suse.de
- Use pam_unix2.so instead of pam_unix.so
* Thu Jan 16 2003 - ro@suse.de
- use gtk2-devel-packages and libjpeg in neededforbuild
* Tue Jan 07 2003 - sbrabec@suse.cz
- Update to version 2.4.1.0.
- Make Default session file executable.
- Added UTF-8 as alternative for all locales.
- Turned on TCP wrappers support.
* Mon Jan 06 2003 - sbrabec@suse.cz
- Install SuSE specific PAM configuration (from xdm), fix its install
place.
- Removed sox from neededforbuild.
* Thu Nov 28 2002 - hhetter@suse.de
- updated to version 2.4.0.12 [GNOME 2.0.3]
* Mon Nov 11 2002 - ro@suse.de
- changed neededforbuild <xf86 xdevel> to <x-devel-packages>
* Sun Nov 03 2002 - mfabian@suse.de
- Bug Id #21407: correct wrong spelling of UTF-8 locale names
in /etc/opt/gnome2/gdm/locale.alias. de_DE.utf8 was used
instead of de_DE.UTF-8 etc., but de_DE.UTF-8 is not supported
by X11, although de_DE.utf8 and de_DE.UTF-8 is the same
as far as glibc is concerned, the correct spelling is important
for X11.
- Bug Id #21408: When using gdm2 the usual intialization file
of an X session, i.e. ~/.xinitrc, ~/.xsession, ~/.Xmodmap
~/.xim etc. were not read. Because of this, inputservers for CJK
languages did not start automatically and other default
settings were not correct either.
I fixed this by improving /etc/opt/gnome2/gdm/Sessions/Default
to use 'exec /etc/X11/xdm/Xsession $WINDOWMANGER $GDM_LANG'.
This makes the default behaviour when using gdm2 the same
as when using kdm or xdm.
* Tue Sep 24 2002 - sbrabec@suse.cz
- Added alsa-devel to neededforbuild, because esound-devel can require it.
* Thu Sep 19 2002 - sbrabec@suse.cz
- Added alsa to neededforbuild, because esound can depend on it.
* Thu Sep 05 2002 - hhetter@suse.de
- updated to version 2.4.0.11, fixing a security issue
(no longer open the logging file descriptor as root in
slave.c ) ( Bug Id #18908 )
* Mon Sep 02 2002 - hhetter@suse.de
- if no session was chosen or previously saved, choose
the gnome session ( Bug Id #18729)
* Fri Aug 30 2002 - hhetter@suse.de
- fix default script and session linking (Bug Id#18602)
* Thu Aug 22 2002 - hhetter@suse.de
- parse correct Session directory (Bug Id#18181)
* Tue Aug 20 2002 - hhetter@suse.de
- fix prereq
* Mon Aug 12 2002 - hhetter@suse.de
- updated to version 2.4.0.7
- fix neddedforbuild
* Wed Aug 07 2002 - hhetter@suse.de
- updated to version 2.4.0.5
- fix typo in SuSEconfig script (#17438)
- fix linking of sessions
* Wed Jul 17 2002 - hhetter@suse.de
- updated to version 2.4.0.2
* busy cursor when start X
* 'System Default' language choice
* fix unresponsive behaviour when first asking for
username in graphical greeter #83187 (bugzilla.gnome.org)
* 'Last' language choice in graphical greeter
* 24 hour clock setting in graphical greeter
* Happy Gnome Theme Update
* more languages supported #84290 (bugzilla.gnome.org)
* Translation updates
* Thu Jul 11 2002 - hhetter@suse.de
- fix default session
- activate graphical gdmgreeter for local logins by default
* Wed Jul 10 2002 - hhetter@suse.de
- updated to version 2.4.0.1, bugfix release
- SuSEconfig.gdm2 to manage the GDM sessions
* Tue Jul 09 2002 - hhetter@suse.de
- initial SuSE package
- create gdm user

121
init.earlygdm Normal file
View File

@ -0,0 +1,121 @@
#! /bin/sh
# Copyright (c) 2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Werner Fink <werner@suse.de>, 2004
# Stephan Kulow <coolo@suse.de>, 2004
# Robert Love, 2005
#
# Please send feedback to http://www.suse.de/feedback
#
# /etc/init.d/earlygdm
#
### BEGIN INIT INFO
# Provides: earlygdm
# Required-Start: earlysyslog earlykbd $local_fs
# Should-Start: gpm firstboot resmgr
# Required-Stop:
# Default-Start: 5
# Default-Stop:
# Description: Quick X Display Manager
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/displaymanager
check_nfs()
{
# Check if important mount point is NFS mounted
while read where what type options rest ; do
test "$type" = "nfs" || continue
case "$where" in
\#*|"") ;;
*) case "$options" in
*noauto*) ;;
*) case "$where" in
/usr*|/opt*|/home*) return 1 ;;
esac
esac
esac
done < /etc/fstab
return 0 # False - default
}
check_remote_autologin()
{
if test -n "$DISPLAYMANAGER_AUTOLOGIN"; then
grep -q "^$DISPLAYMANAGER_AUTOLOGIN:" /etc/passwd || return 1
fi
return 0
}
check_kbd()
{
test -s /var/run/keymap
return
}
check_syslog()
{
. /etc/sysconfig/syslog
case "$SYSLOG_DAEMON" in
syslog-ng)
config=/etc/syslog-ng/syslog-ng.conf
;;
*)
config=/etc/syslog.conf
;;
esac
case "$SYSLOG_DAEMON" in
syslog-ng)
while read line ; do
case "$line" in
\#*|"") continue ;;
*udp\ *|*udp\(*) return 1 ;;
*tcp\ *|*tcp\(*) return 1 ;;
esac
done < ${config}
;;
*)
while read select action ; do
case "$select" in \#*|"") continue ;; esac
case "$action" in *@*) return 1 ;; esac
done < ${config}
;;
esac
return 0
}
check()
{
check_nfs || return 1
check_kbd || return 1
check_syslog || return 1
check_remote_autologin || return 1
# ...
return 0
}
# default
if test -z "$DISPLAYMANAGER" && test -x /opt/gnome/bin/gdm; then
DISPLAYMANAGER=gdm
fi
case "$DISPLAYMANAGER" in
gdm|gnome|GDM|GNOME) ;;
*) exit 0;;
esac
case "$1" in
start)
if test -x /sbin/preload && test -f /etc/preload.d/gdm; then
/sbin/preload /etc/preload.d/gdm
echo i!
fi
;;
*) ;;
esac

0
ready Normal file
View File

View File

@ -0,0 +1,48 @@
## Path: Desktop/Display manager
## Description: settings to generate a proper displaymanager config
## Config: gdm
## Type: yesno
## Default: no
#
# Allow remote access of the user root to your display manager. Note
# that root can never login if DISPLAYMANAGER_SHUTDOWN is "auto" and
# System/Security/Permissions/PERMISSION_SECURITY is "paranoid"
#
DISPLAYMANAGER_ROOT_LOGIN_REMOTE="no"
## Type: string
## Default:
#
# Define the user whom should get logged in without request. If string
# is empty, display standard login dialog.
#
DISPLAYMANAGER_AUTOLOGIN=""
## Type: yesno
## Default: no
#
# Allow all users to login without password, but ask for the user, if
# DISPLAYMANAGER_AUTOLOGIN is empty.
#
DISPLAYMANAGER_PASSWORD_LESS_LOGIN="no"
## Type: yesno
## Default: no
#
# Display a combobox for Active Directory domains.
#
DISPLAYMANAGER_AD_INTEGRATION="no"
## Type: list(root,all,none,auto)
## Default: auto
#
# Determine who will be able to shutdown or reboot the system in kdm
# and gdm. Valid values are: "root" (only root can shutdown), "all"
# (everybody can shutdown), "none" (nobody can shutdown from
# displaymanager), "auto" (follow
# System/Security/Permissions/PERMISSION_SECURITY to decide: "easy
# local" is equal to "all", everything else is equal to "root") Note
# that remote user can never shutdown in GDM.
#
DISPLAYMANAGER_SHUTDOWN="auto"