diff -ru kdm.orig/kfrontend/kgreeter.cpp kdm/kfrontend/kgreeter.cpp
--- kdm.orig/kfrontend/kgreeter.cpp	Mon Jul 30 03:27:19 2001
+++ kdm/kfrontend/kgreeter.cpp	Tue Mar 12 18:02:31 2002
@@ -62,6 +62,7 @@
 
 #include <sys/param.h>
 #include <pwd.h>
+#include <grp.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -165,13 +166,28 @@
 	endpwent();
     } else {
 	QStringList::ConstIterator it = kdmcfg->_users.begin();
+	const char *grp_name;
 	for( ; it != kdmcfg->_users.end(); ++it) {
-	    QPixmap p( locate("user_pic",
-			      *it + QString::fromLatin1(".png")));
-	    if( p.isNull())
-		p = default_pix;
-	    QIconViewItem *item = new QIconViewItem( iconview, *it, p);
-	    item->setDragEnabled(false);
+	     grp_name = (*it).ascii();
+	     if (grp_name && grp_name[0] == '@') {
+		  group *grp;
+		  grp = getgrnam(grp_name+1);
+		  if (grp) {
+		       while (*(grp->gr_mem)) {
+			    kdmcfg->_users.append(QString::fromUtf8(*(grp->gr_mem)));
+			    grp->gr_mem++;
+		       }
+		       // free(grp);
+		  }
+		  free((void *)grp_name);
+	     } else {
+		  QPixmap p( locate("user_pic",
+				    *it + QString::fromLatin1(".png")));
+		  if( p.isNull())
+		       p = default_pix;
+		  QIconViewItem *item = new QIconViewItem( iconview, *it, p);
+		  item->setDragEnabled(false);
+	     }
 	}
     }
     if( kdmcfg->_sortUsers)

