#!/bin/bash
# Switch to/from SpaceFM and Labwc desktop managers

export TEXTDOMAIN=spacefm2labwc
export OUTPUT_CHARSET=UTF-8

[ -f $HOME/.config/autostart/zzzfm.desktop ] && DTOP=SpaceFM || DTOP=Labwc

[ -f /usr/local/lib/X11/pixmaps/info.xpm ] && ICON="/usr/local/lib/X11/pixmaps/question.xpm" || ICON=""

pidof conky && CONKY_ACTIVE=yes

conkyrefresh(){
  [ -n "$(pidof conky 2>/dev/null)" ] && killall conky &
  sleep 5
  conky -c "$HOME/.config/conky-gtk/conkyrc" 2>/dev/null &
}
export -f conkyrefresh

if [ "$DTOP" = "SpaceFM" ]; then # switch to Labwc
  Xdialog --stdout --title "$(gettext 'Desktop Switcher')" \
  --backtitle "$(gettext 'Current Desktop'): $DTOP" \
  --icon "$ICON" \
  --screen-center \
  --buttons-style text \
  --cancel-label "$(gettext 'Cancel')" \
  --ok-label "$(gettext 'Switch')" \
  --yesno "$(gettext 'Switch to Labwc desktop ?')" 7 42

  case $? in
    0)
        gtkdialog-splash -close never -timeout 2 -margin 10 -placement center -fontsize large -bg goldenrod -text " $(gettext 'Switching to Labwc desktop !')"
        rm -f /usr/share/applications/desktop-settings.desktop
        rm -f $HOME/.config/autostart/zzzfm.desktop
        if [[ $(ls $HOME/Desktop/*.desktop) ]]; then
            mkdir -p /usr/local/share/zzzfm/deskicons
            rm -f /usr/local/share/zzzfm/deskicons/*.desktop
            cp -f $HOME/Desktop/*.desktop /usr/local/share/zzzfm/deskicons/
            rm -f /usr/local/share/zzzfm/deskicons/particon-*.desktop
            rm -f $HOME/Desktop/*
            cp -f ~/.config/zzzfm/desktop0 /usr/local/share/zzzfm/desktop0.bak
            chattr -i ~/.config/zzzfm/desktop0 # unlock desktop icons
            rm -f ~/.config/zzzfm/desktop0l
            chattr +i ~/.config/zzzfm/desktop0 # lock desktop icons
        fi
        wallp=$(cat "$HOME/.config/wallpaper/bg_img")
        set_bg $wallp
        [ "$CONKY_ACTIVE" = "yes" ] && conkyrefresh &
        zzzfmPID=$(pgrep -f 'zzzfm') # PID of 'zzzfm --desktop' daemon is not sufficient, must kill all zzzFM PIDs
        [ -n "$zzzfmPID" ] && killall zzzfm
        ;;
    1)
        exit
        ;;
    255)
        exit
        ;;
  esac
else # switch to SpaceFM/zzzFM
  Xdialog --stdout --title "$(gettext 'Desktop Switcher')" \
  --backtitle "$(gettext 'Current Desktop'): $DTOP" \
  --icon "$ICON" \
  --screen-center \
  --buttons-style text \
  --cancel-label "$(gettext 'Cancel')" \
  --ok-label "$(gettext 'Switch')" \
  --yesno "$(gettext 'Switch to SpaceFM desktop ?')" 7 42

  case $? in
    0)
        gtkdialog-splash -close never -timeout 2 -margin 10 -placement center -fontsize large -bg goldenrod -text " $(gettext 'Switching to SpaceFM desktop !')" 
        echo '[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=Desktop settings
Exec=zzzfm --show-pref=1
Icon=/usr/share/icons/hicolor/48x48/apps/spacefm-48-pyramid-blue.png
Terminal=false
GenericName=zzzzFM desktop preferences
Categories=X-Desktop;
Comment=Desktop preferences' > /usr/share/applications/desktop-settings.desktop
        echo '[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=zzzFM
Exec=zzzfm --desktop
Icon=/usr/share/icons/hicolor/48x48/apps/spacefm.png' > $HOME/.config/autostart/zzzfm.desktop

        if [[ $(ls /usr/local/share/zzzfm/deskicons/*.desktop) ]]; then
            cp -f /usr/local/share/zzzfm/deskicons/*.desktop ~/Desktop
            chattr -i ~/.config/zzzfm/desktop0 # unlock desktop icons
            cp -f /usr/local/share/zzzfm/desktop0.bak ~/.config/zzzfm/desktop0            
            chattr + ~/.config/zzzfm/desktop0 # lock desktop icons
        fi
        particons
        zzzfm --desktop &
        [ "$CONKY_ACTIVE" = "yes" ] && conkyrefresh &
        ;;
    1)
        exit
        ;;
    255)
        exit
        ;;
  esac
fi

exit 0
