Release new version 0.21
[grml-quickconfig.git] / quickconfig / 030-wm.sh
index 6a12e12..2a9dd69 100644 (file)
@@ -5,10 +5,16 @@ FUNCTION='wm_menu'
 
 display_entry() {
     . /etc/grml/script-functions
-    check4progs grml-x >/dev/null
+    check4progs grml-x >/dev/null 2>&1
     return $?
 }
 
+if [ "$(cat /proc/1/comm 2>/dev/null)" = "systemd" ] ; then
+  SYSTEMD=true
+else
+  SYSTEMD=false
+fi
+
 # variable definition {{{
 typeset -A wms
 typeset -A available
@@ -45,7 +51,7 @@ print_available_wm() {
   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
@@ -74,8 +80,15 @@ wm_heading() {
 # print windowm manager loop {{{
 wm_menu() {
   if [ $AVAILABLE_WM_COUNT == 1 ]; then
-    run su grml -c "grml-x"
-    return
+    if $SYSTEMD ; then
+      chvt 7
+      return
+    else
+      chgrp tty "$TTY"
+      chmod g+rw "$TTY"
+      run sudo -u grml grml-x
+      return
+    fi
   fi
   echo
   wm_heading
@@ -88,7 +101,15 @@ wm_menu() {
   get_key INPUT
   case $INPUT in
     [${(k)available}])
-    run su grml -c "grml-x ${available[$INPUT]}"
+    if $SYSTEMD ; then
+      mkdir -p /var/run/grml-x/
+      echo "${available[$INPUT]}" > /var/run/grml-x/window-manager
+      chvt 7
+    else
+      chgrp tty "$TTY"
+      chmod g+rw "$TTY"
+      run sudo -u grml -c "grml-x ${available[$INPUT]}"
+    fi
     ;;
   esac
 }
@@ -97,4 +118,4 @@ wm_menu() {
 print_available_wm
 
 ## END OF FILE #################################################################
-# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=3
+# vim:foldmethod=marker expandtab ai ft=zsh shiftwidth=2