X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=quickconfig%2F030-wm.sh;h=2a9dd693df38460b9e4e0ac3780c270290606605;hb=2b1f8ed4feed9efd548663247e3ecab8512fa204;hp=6a12e1297c4fab1dd4a635f417d661f8b7781230;hpb=3ef1e7fd9126c891b81c1c3190133ca2bbe8a527;p=grml-quickconfig.git diff --git a/quickconfig/030-wm.sh b/quickconfig/030-wm.sh index 6a12e12..2a9dd69 100644 --- a/quickconfig/030-wm.sh +++ b/quickconfig/030-wm.sh @@ -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