Release new version 0.17
[grml-quickconfig.git] / quickconfig / 030-wm.sh
index af89083..b9f460c 100644 (file)
@@ -4,7 +4,9 @@ KEY=(x)
 FUNCTION='wm_menu'
 
 display_entry() {
-    return 0
+    . /etc/grml/script-functions
+    check4progs grml-x >/dev/null 2>&1
+    return $?
 }
 
 # variable definition {{{
@@ -39,10 +41,11 @@ wms=(
 print_available_wm() {
   . /etc/grml/script-functions
   LEN=0
+  AVAILABLE_WM_COUNT=0
   local line
 
   for key value in ${(kv)wms} ; do
-    if check4progs $value >/dev/null ; then
+    if check4progs $value >/dev/null 2>&1 ; then
       available[$key]=$value
       # test if word could be added to current line
       if [ $((${(c)#value} + $LEN)) -ge $(($MAXLEN-9)) ] ; then
@@ -52,6 +55,7 @@ print_available_wm() {
       fi
       line+="$(highlight_char $value $key) "
       LEN=$((${(c)#value} + $LEN))
+      AVAILABLE_WM_COUNT=$(($AVAILABLE_WM_COUNT + 1))
     fi
   done
   output+="$line"
@@ -69,6 +73,12 @@ wm_heading() {
 
 # print windowm manager loop {{{
 wm_menu() {
+  if [ $AVAILABLE_WM_COUNT == 1 ]; then
+    chgrp tty "$TTY"
+    chmod g+rw "$TTY"
+    run sudo -u grml grml-x
+    return
+  fi
   echo
   wm_heading
   for line in ${output} ; do
@@ -80,7 +90,9 @@ wm_menu() {
   get_key INPUT
   case $INPUT in
     [${(k)available}])
-    run su grml -c "grml-x ${available[$INPUT]}"
+    chgrp tty "$TTY"
+    chmod g+rw "$TTY"
+    run sudo -u grml -c "grml-x ${available[$INPUT]}"
     ;;
   esac
 }