X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=quickconfig%2F030-wm.sh;h=2a9dd693df38460b9e4e0ac3780c270290606605;hb=HEAD;hp=81a05543de146f55b965a4c7bd50fd18564510f9;hpb=11b700099c2fb83648dee619f62e5b8a43123f36;p=grml-quickconfig.git diff --git a/quickconfig/030-wm.sh b/quickconfig/030-wm.sh index 81a0554..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 @@ -41,10 +47,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 @@ -54,6 +61,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" @@ -71,6 +79,17 @@ wm_heading() { # print windowm manager loop {{{ wm_menu() { + if [ $AVAILABLE_WM_COUNT == 1 ]; then + 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 for line in ${output} ; do @@ -82,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 } @@ -91,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