#!/bin/bash

#call it from /etc/X11/fly-dm/Xsession to force kiosk env

if [ -d /etc/fly-kiosk/$USER ]; then

    export BASH=/bin/rbash
    export SHELL=${BASH}

    session="fly-wm"
    if [ "$DESKTOP_SESSION" = "fly-tablet" ]; then
      export DESKTOP_SESSION="fly-tablet-kiosk"
    else
      export DESKTOP_SESSION="fly-kiosk"
    fi

    grep -qi "EditableTheme=true" "/etc/fly-kiosk/$USER/fly-kiosk.conf"
    if [ $? -ne "0" ]; then
      if [ -f "/usr/share/fly-wm/fly-wmrc.$DESKTOP_SESSION" ]; then
        export FLY_RC_FILE="/usr/share/fly-wm/fly-wmrc.$DESKTOP_SESSION"
      fi
    fi
    grep -qi "EditableDesktop=true" "/etc/fly-kiosk/$USER/fly-kiosk.conf"
    if [ $? -ne "0" ]; then
      if [ -d /etc/fly-kiosk/$USER/desktop ]; then
        export FLY_KIOSK_DESKTOP_DIR="/etc/fly-kiosk/$USER/desktop"
      fi
      if [ -d /etc/fly-kiosk/$USER/toolbar ]; then
        export FLY_KIOSK_TOOLBAR_DIR="/etc/fly-kiosk/$USER/toolbar"
      fi
    fi


    if [ ! -z "$FLY_KIOSK_DESKTOP_DIR" ]; then

      echo desktop readonly kiosk mode due to FLY_KIOSK_DESKTOP_DIR=$FLY_KIOSK_DESKTOP_DIR RC=$FLY_RC_FILE

      #how to save/restore breezerc, Trolltech.conf?
      #if [ -f $HOME/.fly/paletterc ]; then mv -f $HOME/.fly/paletterc $HOME/.fly/paletterc.saved-by-kiosk; fi
      if [ -f $HOME/.config/breezerc ]; then mv -f $HOME/.config/breezerc $HOME/.config/breezerc.saved-by-kiosk; fi
      if [ -f $HOME/.config/Trolltech.conf ]; then mv -f $HOME/.config/Trolltech.conf $HOME/.config/Trolltech.conf.saved-by-kiosk; fi

    else

      echo desktop writable kiosk mode due to FLY_KIOSK_DESKTOP_DIR undefined

      #how to save/restore breezerc, Trolltech.conf?
      #if [ -f $HOME/.fly/paletterc.saved-by-kiosk ]; then mv -f $HOME/.fly/paletterc.saved-by-kiosk $HOME/.fly/paletterc; fi
      if [ -f $HOME/.config/breezerc.saved-by-kiosk ]; then mv -f $HOME/.config/breezerc.saved-by-kiosk $HOME/.config/breezerc; fi
      if [ -f $HOME/.config/Trolltech.conf.saved-by-kiosk ]; then mv -f $HOME/.config/Trolltech.conf.saved-by-kiosk $HOME/.config/Trolltech.conf; fi

      #check and create desktop and toolbar dirs
      DESKTOP_DIR=`xdg-user-dir DESKTOP`
      if [ ! -d "$DESKTOP_DIR" ]; then
        if [ -x /usr/bin/xdg-user-dirs-update ]; then /usr/bin/xdg-user-dirs-update; fi
        DESKTOP_DIR=`/usr/bin/xdg-user-dir DESKTOP`
        if [ ! -d "$DESKTOP_DIR" ]; then mkdir -p "$DESKTOP_DIR"; fi
      fi
      TOOLBAR_DIR=$HOME/.fly/toolbar
      if [ ! -d "$TOOLBAR_DIR" ]; then mkdir -p "$TOOLBAR_DIR"; fi

      cd "$DESKTOP_DIR"
      find . -name \*\-kiosk.desktop -print0 -exec rm {} \;
      cd "$TOOLBAR_DIR"
      find . -name \*\-kiosk.desktop -print0 -exec rm {} \;
      cd "$HOME"

      #copy desktop and toolbar entries to home and dont forget to set OnlyShowIn=fly-kiosk;fly-tablet-kiosk in copied entries
      if [ -d /etc/fly-kiosk/$USER/desktop ]; then
      for FILE_PATH in `find /etc/fly-kiosk/$USER/desktop/ -name *.desktop`; do
        FILE_NAME=$(basename "$FILE_PATH")
        grep -q "\-kiosk" "$FILE_PATH"
        if [ $? -eq "0" ]; then
          cp "$FILE_PATH" "$DESKTOP_DIR"
        else
          grep -q "OnlyShowIn" "$FILE_PATH"
          if [ $? -eq "0" ]; then
            grep -q "OnlyShowIn=fly-tablet" "$FILE_PATH"
            if [ $? -eq "0" ]; then
              cat $FILE_PATH | sed 's/OnlyShowIn[ \t]*[\=]*.*$/OnlyShowIn=fly-tablet-kiosk/'  > "$DESKTOP_DIR/${FILE_NAME%.*}-kiosk.desktop"
            else
              cat $FILE_PATH | sed 's/OnlyShowIn[ \t]*[\=]*.*$/OnlyShowIn=fly-kiosk/'  > "$DESKTOP_DIR/${FILE_NAME%.*}-kiosk.desktop"
            fi
          else
              cat $FILE_PATH | sed 's/\[Desktop Entry\]/\[Desktop Entry\]\nOnlyShowIn=fly-kiosk/'  > "$DESKTOP_DIR/${FILE_NAME%.*}-kiosk.desktop"
          fi
        fi
      done
      fi

      if [ -d /etc/fly-kiosk/$USER/toolbar ]; then
      for FILE_PATH in `find /etc/fly-kiosk/$USER/toolbar/ -name *.desktop`; do
        FILE_NAME=$(basename "$FILE_PATH")
        grep -q "\-kiosk" "$FILE_PATH"
        if [ $? -eq "0" ]; then
          cp "$FILE_PATH" "$TOOLBAR_DIR"
        else
          grep -q "OnlyShowIn" "$FILE_PATH"
          if [ $? -eq "0" ]; then
            grep -q "OnlyShowIn=fly-tablet" "$FILE_PATH"
            if [ $? -eq "0" ]; then
              cat $FILE_PATH | sed 's/OnlyShowIn[ \t]*[\=]*.*$/OnlyShowIn=fly-tablet-kiosk/'  > "$TOOLBAR_DIR/${FILE_NAME%.*}-kiosk.desktop"
            else
              cat $FILE_PATH | sed 's/OnlyShowIn[ \t]*[\=]*.*$/OnlyShowIn=fly-kiosk/'  > "$TOOLBAR_DIR/${FILE_NAME%.*}-kiosk.desktop"
            fi
          else
              cat $FILE_PATH | sed 's/\[Desktop Entry\]/\[Desktop Entry\]\nOnlyShowIn=fly-kiosk/'  > "$TOOLBAR_DIR/${FILE_NAME%.*}-kiosk.desktop"
          fi
        fi
      done
      fi

    fi

    #if desktop entry on desktop is one only set FLY_EXEC_ONLY_PROG to inform fly-wm about only one exec
    #FLY_EXEC_PROG may be set to autostart some prog
    DNUM=`ls -l /etc/fly-kiosk/$USER/desktop/*.desktop | wc -l`
    #echo num=$DNUM
    if [ "$DNUM" -eq "1" ]; then
      export FLY_EXEC_ONLY_PROG=`ls /etc/fly-kiosk/$USER/desktop/*.desktop`
      export FLY_KIOSK_FULLSCREEN_MODE=1
    fi
    #echo $DNUM,$FLY_EXEC_ONLY_PROG

else

    #how to save/restore breezerc, Trolltech.conf?
    #if [ -f $HOME/.fly/paletterc.saved-by-kiosk ]; then mv -f $HOME/.fly/paletterc.saved-by-kiosk $HOME/.fly/paletterc; fi
    if [ -f $HOME/.config/breezerc.saved-by-kiosk ]; then mv -f $HOME/.config/breezerc.saved-by-kiosk $HOME/.config/breezerc; fi
    if [ -f $HOME/.config/Trolltech.conf.saved-by-kiosk ]; then mv -f $HOME/.config/Trolltech.conf.saved-by-kiosk $HOME/.config/Trolltech.conf; fi

fi
