package kdebase tags 174226 +patch thanks Hi,
This patch fixes the problem by making kdm also read in a list called "DebianSessionTypes". kdm-update-menu now leaves the real SessionTypes alone, and messes only with DebianSessionTypes, which are marked as "Don't Edit !". Warning: untested. cheers domi
diff -u -Nur kdebase-3.1.4/debian/patches/07_kdm_debian_session_types.diff kdebase-3.1.4.mod/debian/patches/07_kdm_debian_session_types.diff --- kdebase-3.1.4/debian/patches/07_kdm_debian_session_types.diff 1970-01-01 01:00:00.000000000 +0100 +++ kdebase-3.1.4.mod/debian/patches/07_kdm_debian_session_types.diff 2004-01-06 14:31:37.000000000 +0100 @@ -0,0 +1,52 @@ +diff -u -ur kdebase-3.1.4/kdm/kfrontend/genkdmconf.c kdebase-3.1.4.mod/kdm/kfrontend/genkdmconf.c +--- kdebase-3.1.4/kdm/kfrontend/genkdmconf.c 2004-01-06 14:06:18.000000000 +0100 ++++ kdebase-3.1.4.mod/kdm/kfrontend/genkdmconf.c 2004-01-06 14:09:33.000000000 +0100 +@@ -1901,6 +1901,8 @@ + "# Session types the users can select. It is advisable to have \"default\" and\n" + "# \"failsafe\" listed herein, which is also the default.\n" + "# Note, that the meaning of this value is entirely up to your Session program.\n" }, ++{ "DebianSessionTypes", 0, 0, ++ "# Session types automatically added by the Debian packages. Do not edit.\n" }, + { "GUIStyle", 0, upd_guistyle, + "# Widget style of the greeter. \"\" means the built-in default which currently\n" + "# is \"Keramik\". Default is \"\"\n" }, +@@ -2146,6 +2148,7 @@ + + static DEnt dEntsAnyGreeter[] = { + { "SessionTypes", "default,kde3,failsafe", 1 }, ++{ "DebianSessionTypes", "", 1 }, + { "GUIStyle", "Windows", 0 }, + { "ColorScheme", "Pumpkin", 0 }, + { "LogoArea", "Clock", 1 }, +diff -u -ur kdebase-3.1.4/kdm/kfrontend/kdm_config.c kdebase-3.1.4.mod/kdm/kfrontend/kdm_config.c +--- kdebase-3.1.4/kdm/kfrontend/kdm_config.c 2003-09-04 18:34:37.000000000 +0200 ++++ kdebase-3.1.4.mod/kdm/kfrontend/kdm_config.c 2004-01-06 14:06:38.000000000 +0100 +@@ -529,6 +529,7 @@ + + Ent entsGreeter[] = { + { "SessionTypes", C_SessionTypes, 0, "default,failsafe" }, ++{ "DebianSessionTypes", C_DebianSessionTypes, 0, "" }, + { "GUIStyle", C_GUIStyle, 0, "" }, + { "ColorScheme", C_ColorScheme, 0, "" }, + { "LogoArea", C_LogoArea | C_ENUM, logoarea, "Logo" }, +diff -u -ur kdebase-3.1.4/kdm/kfrontend/kdmconfig.cpp kdebase-3.1.4.mod/kdm/kfrontend/kdmconfig.cpp +--- kdebase-3.1.4/kdm/kfrontend/kdmconfig.cpp 2003-08-26 15:03:25.000000000 +0200 ++++ kdebase-3.1.4.mod/kdm/kfrontend/kdmconfig.cpp 2004-01-06 14:06:38.000000000 +0100 +@@ -160,6 +160,7 @@ + _faceSource = GetCfgInt (C_FaceSource); + + _sessionTypes = GetCfgQStrList (C_SessionTypes); ++ _sessionTypes += GetCfgQStrList( C_DebianSessionTypes ); + + _echoMode = GetCfgInt (C_EchoMode); + +diff -u -ur kdebase-3.1.4/kdm/kfrontend/kdm_config.h kdebase-3.1.4.mod/kdm/kfrontend/kdm_config.h +--- kdebase-3.1.4/kdm/kfrontend/kdm_config.h 2003-08-26 15:03:25.000000000 +0200 ++++ kdebase-3.1.4.mod/kdm/kfrontend/kdm_config.h 2004-01-06 14:06:38.000000000 +0100 +@@ -82,5 +82,6 @@ + # define FACE_USER_ONLY 3 + #define C_ColorScheme (C_TYPE_STR | 0x102c) + #define C_ForgingSeed (C_TYPE_INT | 0x102d) ++#define C_DebianSessionTypes (C_TYPE_ARGV| 0x102e) + + #endif /* _KDM_CONFIG_H_ */ diff -u -Nur kdebase-3.1.4/debian/patches/kdm/kdm-update-menu.sh kdebase-3.1.4.mod/debian/patches/kdm/kdm-update-menu.sh --- kdebase-3.1.4/debian/patches/kdm/kdm-update-menu.sh 2003-03-08 08:07:47.000000000 +0100 +++ kdebase-3.1.4.mod/debian/patches/kdm/kdm-update-menu.sh 2004-01-06 14:40:40.000000000 +0100 @@ -1,17 +1,19 @@ #!/bin/sh +# This script updates KDM's sessiontypes from the list of +# window-manager alternatives in Debian. + # Don't regenerate the SessionTypes list if the admin doesn't want them # generated +if ! grep -qs ^generate-sessiontypes /etc/kde3/debian/kdm.options; then exit 0; fi -if grep -qs ^generate-sessiontypes /etc/kde3/debian/kdm.options; then - WMS=$(cat /var/lib/dpkg/alternatives/x-window-manager | grep bin | grep -v x-window-manager | sed -e 's#/usr/bin/##' | sed -e 's#/usr/X11R6/bin/##' | sed -e 's#X11/##' | tr '\n' ',') - WMS1=$(cat /var/lib/dpkg/alternatives/x-session-manager | grep bin | grep -v x-session-manager | sed -e 's#/usr/bin/##' | sed -e 's#/usr/X11R6/bin/##' | sed -e 's#X11/##' | tr '\n' ',') +WMS=$(cat /var/lib/dpkg/alternatives/x-window-manager | grep bin | grep -v x-window-manager | sed -e 's#/usr/bin/##' | sed -e 's#/usr/X11R6/bin/##' | sed -e 's#X11/##' | tr '\n' ',') +WMS1=$(cat /var/lib/dpkg/alternatives/x-session-manager | grep bin | grep -v x-session-manager | sed -e 's#/usr/bin/##' | sed -e 's#/usr/X11R6/bin/##' | sed -e 's#X11/##' | tr '\n' ',') - if grep -qs ^SessionTypes /etc/kde3/kdm/kdmrc; then - cp /etc/kde3/kdm/kdmrc /etc/kde3/kdm/kdmrc.backup - sed -e "s#SessionTypes=.*\$#SessionTypes=default,${WMS}${WMS1}failsafe#" < /etc/kde3/kdm/kdmrc >/etc/kde3/kdm/kdmrc.new - if grep -qs ^SessionTypes /etc/kde3/kdm/kdmrc.new; then - mv /etc/kde3/kdm/kdmrc.new /etc/kde3/kdm/kdmrc - fi +if grep -qs ^SessionTypes /etc/kde3/kdm/kdmrc; then + cp /etc/kde3/kdm/kdmrc /etc/kde3/kdm/kdmrc.backup + sed -e "s#DebianSessionTypes=.*\$#DebianSessionTypes=${WMS}${WMS1}#" < /etc/kde3/kdm/kdmrc >/etc/kde3/kdm/kdmrc.new + if grep -qs ^DebianSessionTypes /etc/kde3/kdm/kdmrc.new; then + mv /etc/kde3/kdm/kdmrc.new /etc/kde3/kdm/kdmrc fi fi