#!/bin/bash
#MXFB-Look is a tool to save and restore desktop setups in MX-Linux Fluxbox
#V.1.0 by Melber and MX Devs 26 September 2022
#License: GPL-3.0+
#mxcr-icon based on yad icon from papirus icon set

##Changelog##
#added gettext localization, fixed rofi

# add locale
TEXTDOMAINDIR=/usr/share/locale 
export TEXTDOMAIN="mxfb-accessories"
source gettext.sh

#define some variables

TITLE="$(gettext 'MXFB-Look')"
CLASS="mxfblook"
MXLKPATH="$HOME/.config/MX-Linux/mxfb-look"
ICONPATH="/usr/share/pixmaps/mxcr-icon.png"


#delete stylelist and tempclr after use
trap "rm -r "$MXLKPATH/tempdir" " EXIT

#create path
if [ ! -d $MXLKPATH ]; then

mkdir $MXLKPATH

fi

#create looks folder

if [ ! -d $MXLKPATH/looks ]; then

  mkdir -p $MXLKPATH/looks

fi


#create tempdir

if [ ! -d $MXLKPATH/tempdir ]; then

  mkdir -p $MXLKPATH/tempdir

fi

#make Default look file

if [ ! -f $MXLKPATH/looks/MXFB-default.look ]; then

printf "gtk-theme-name=mx-comfort\ngtk-icon-theme-name=Papirus-mxblue-darkpanes\ngtk-font-name=Sans 11\ngtk-theme-name=\"mx-comfort\"\ngtk-icon-theme-name=\"Papirus-mxblue-darkpanes\"\ngtk-font-name=\"Sans 11\"\nsession.styleFile: ~/.fluxbox/styles/MX-comfort\n1\n$\HOME/.config/tint2/tint2rc\nNone\n@theme \"$HOME/.config/rofi/themes/MX-comfort.rasi\"\nfile=/usr/share/backgrounds/Honesty.jpg\ncd \"/home/\$USER/.conky/MX-CowonBlue\"\nconky -c \"/home/\$USER/.conky/MX-CowonPink/MX-Cowon_pink_roboto\" &\nHidden=false" > $MXLKPATH/looks/MXFB-default.look

fi

#copy image for Default look

if [ ! -f $MXLKPATH/looks/MXFB-default.png ]; then

cp /usr/share/pixmaps/MXFB-default.png $MXLKPATH/looks/

fi

#################################
#fix rasi

cd $HOME/.config/rofi

ROFICHECK1="$(grep "@import" config.rasi)"

if [ "$ROFICHECK1" = "" ]; then

sed -i "s/@import/@theme/g" config.rasi

fi

ROFICHECK2="$(grep "//width" config.rasi)"

if [ "$ROFICHECK2" = "" ]; then

sed -i 's/width\:/\/\/width\:/g' config.rasi
sed -i 's/lines\:/\/\/lines\:/g' config.rasi
sed -i 's/fake-transparency\:/\/\/fake-transparency\:/g' config.rasi

fi

#################################
# function save look

save_look() {
#define some variables

TITLE="$(gettext 'MXFB-Look')"
CLASS="mxfblook"
MXLKPATH="$HOME/.config/MX-Linux/mxfb-look"
ICONPATH="/usr/share/pixmaps/mxcr-icon.png"

source gettext.sh

#read current look components

#theme and icons
LKTHEME="$(grep "gtk-theme-name" $HOME/.config/gtk-3.0/settings.ini)"
LKICON="$(grep "gtk-icon-theme-name" $HOME/.config/gtk-3.0/settings.ini)"
LKFONT="$(grep "gtk-font-name" $HOME/.config/gtk-3.0/settings.ini)"
LKTHEME2="$(grep "gtk-theme-name" $HOME/.gtkrc-2.0)"
LKICON2="$(grep "gtk-icon-theme-name" $HOME/.gtkrc-2.0)"
LKFONT2="$(grep "gtk-font-name" $HOME/.gtkrc-2.0)"

#fluxbox style
LKFLUXSTYLE="$(grep "styles" $HOME/.fluxbox/init)"

#tint2
TINTNUM="$(wc -l < $HOME/.config/tint2/tint2-sessionfile)"
LKTINT1="$(grep "tint2" $HOME/.config/tint2/tint2-sessionfile | sed -n 1p)"
LKTINT1=$(echo "${LKTINT1}" | sed -e 's/$HOME/\$HOME/g' )
LKTINT2="$(grep "tint2" $HOME/.config/tint2/tint2-sessionfile | sed -n 2p)"
LKTINT2=$(echo "${LKTINT2}" | sed -e 's/$HOME/\$HOME/g' )

if [ $TINTNUM = 0 ]; then
LKTINT1="None"
LKTINT2="None"
fi

if [ $TINTNUM = 1 ]; then
LKTINT2="None"
fi

#rofi
LKROFI="$(grep '@theme' $HOME/.config/rofi/config.rasi | tail -1)"

#background
CHECKFEH=$(grep '#nitrogen' $HOME/.fluxbox/startup)

if [ -z "$CHECKFEH" ]; then

LKBACK="$(grep "file=" $HOME/.config/nitrogen/bg-saved.cfg | sed -n 2p)"

if [ -z "$LKBACK" ]; then
LKBACK="$(grep "file=" $HOME/.config/nitrogen/bg-saved.cfg)"
fi

else

LKBACK=$(grep "feh" $HOME/.fehbg)
LKBACK=$(echo "${LKBACK}" | sed -e "s/'/|/g")
LKBACK=$(echo "$LKBACK"  | cut -d '|' -f 2)
LKBACK="file="$LKBACK""

fi




#conky
LKCONK1="$(grep "conky" $HOME/.conky/conky-startup.sh | sed -n 2p)"
LKCONK2="$(grep "conky" $HOME/.conky/conky-startup.sh | sed -n 3p)"
CONKYSTATE="$(grep "Hidden" "$HOME/.config/autostart/conky.desktop")"

#make temp file
echo ""$LKTHEME"|"$LKICON"|"$LKFONT"|"$LKTHEME2"|"$LKICON2"|"$LKFONT2"|"$LKFLUXSTYLE"|"$TINTNUM"|"$LKTINT1"|"$LKTINT2"|"$LKROFI"|"$LKBACK"|"$LKCONK1"|"$LKCONK2"|"$CONKYSTATE"" > $MXLKPATH/tempdir/looktmp.txt


#amend temp
cd $MXLKPATH/tempdir

sed -i "s/gtk-theme-name\=/ /g" looktmp.txt
sed -i "s/gtk-icon-theme-name\=/ /g" looktmp.txt
sed -i "s/gtk-font-name\=/ /g" looktmp.txt
sed -i "s/session\.styleFile\:/ /g" looktmp.txt
sed -i "s/\$HOME\/\.config\/tint2\// /g" looktmp.txt
sed -i "s/\@theme//g" looktmp.txt
sed -i "s/file\=/ /g" looktmp.txt
sed -i "s/\"//g" looktmp.txt
sed -i "s/cd //g" looktmp.txt


#read temp

OLDIFS="$IFS"
IFS="|"

read -r -a YADFILL < looktmp.txt

LKTH="${YADFILL[0]}"
LKIC="${YADFILL[1]}"
LKFO="${YADFILL[2]}"
LKFS="${YADFILL[6]}"
LKTI1="${YADFILL[8]}"
LKTI2="${YADFILL[9]}"
LKRO="${YADFILL[10]}"
LKBG="${YADFILL[11]}"
LKCO1="${YADFILL[12]}"
LKCO2="${YADFILL[13]}"
LKCOST="${YADFILL[14]}"

LKRO=$(echo "${LKRO}" | sed -e "s/ //g" )
LKCOSTSV=$(echo "${LKCOST}" | sed -e 's/Hidden=//g' | sed -e "s/\ //g" )

if [ -z "$LKCO1" ]; then
LKCO1="$(gettext 'None')"
fi

if [ $LKCOSTSV = "false" ]; then
LKCOSTSV="$(gettext 'toggled on')"
else
LKCOSTSV="$(gettext 'toggled off')"
fi


#MAIN

TEXTMAIN0="$(gettext 'Current Settings')"
TEXTMAIN1="$(gettext 'GTK Theme')"
TEXTMAIN2="$(gettext 'GTK Icons')"
TEXTMAIN3="$(gettext 'GTK Font')"
TEXTMAIN4="$(gettext 'Fluxbox Style')"
TEXTMAIN5="$(gettext '1st Tint2 Panel')"
TEXTMAIN6="$(gettext '2nd Tint2 Panel')"
TEXTMAIN7="$(gettext 'Rofi Theme')"
TEXTMAIN8="$(gettext 'Wallpaper')"
TEXTMAIN9="$(gettext 'Conky')"
TEXTMAIN10="$(gettext 'Conky State')"


MAIN=(yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --borders=20 --center --width=600 --height=400 --fixed --form --columns=1 --align=left --separator="" --button="gtk-quit":1 --button="$(gettext 'Save Look')":0 \
--text=$"\n<b>"$TEXTMAIN0".\n</b>\n
"$TEXTMAIN1": <b>"$LKTH"</b>\n
"$TEXTMAIN2": <b>"$LKIC"</b>\n
"$TEXTMAIN3": <b>"$LKFO"</b>\n
"$TEXTMAIN4": <b>"$LKFS"</b>\n
"$TEXTMAIN5": <b>"$LKTI1"</b>\n
"$TEXTMAIN6": <b>"$LKTI2"</b>\n
"$TEXTMAIN7": <b>"$LKRO"</b>\n
"$TEXTMAIN8": <b>"$LKBG"</b>\n
"$TEXTMAIN9": <b>"$LKCO1"</b>\n
"$TEXTMAIN10": <b>"$LKCOSTSV"</b>\n"
--field="$(eval_gettext 'Save Look as')" $"New-Look-Name"\
)
NEWNAME=$("${MAIN[@]}")
(($?==0)) && echo "$NEWNAME" > $MXLKPATH/tempdir/tempname.txt

GETOUT=$(echo "$?")

if [ "$GETOUT" != 0 ]; then

  exit

elif [ "$GETOUT" = 0 ]; then

read NEWNAME < $MXLKPATH/tempdir/tempname.txt
unset IFS

fi

NEWNAME=$(echo "$NEWNAME" | sed -e 's/ /-/g')


#check new Look name is not empty and forbid MXFB-default overwrite

while [ -z "$NEWNAME" -o "$NEWNAME" = 'MXFB-default' ]; do

  NEWNAME=$(yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --width=400 --height=200 --fixed --text="$(eval_gettext 'Look name $NEWNAME is protected. Choose another name.')" --form --center --borders=20 --separator="" \
  --field="$(gettext '<b>Name for new style</b>')":LBL " " \
  --field=$" " "$NEWNAME-new" )

    GETOUT=$(echo "$?")

    if [ "$GETOUT" != 0 ]; then

    exit

    fi

done


#check if new Look name exists, if yes ask if overwrite or different name

cd $MXLKPATH/looks

while [ -f $NEWNAME.look ]; do
message="$(eval_gettext 'A Look with this name already exists.\n\nDo you want to overwrite $NEWNAME or save as a new name?\n')"
yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --width=400 --fixed --text="$message" --button="$(eval_gettext 'Overwrite $NEWNAME')":2 --button="$(gettext 'Save as different name')":3 --text-align=center --center --borders=20\

case $? in

2) rm -r $MXLKPATH/looks/$NEWNAME.look ;;

3) NEWNAME=$(yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --width=400 --height=200 --fixed --form --center --borders=20 --separator="" \
--field="$(gettext '<b>Name for New Look</b>')":LBL " " \
--field=$" " "$NEWNAME-new" )    ;;

252) exit 0    ;;

esac
done

##################################
#make look file

echo ""$LKTHEME"
"$LKICON"
"$LKFONT"
"$LKTHEME2"
"$LKICON2"
"$LKFONT2"
session.styleFile: "$LKFS"
"$TINTNUM"
"$LKTINT1"
"$LKTINT2"
@theme \""$LKRO"\"
"$LKBACK"
"$LKCONK1"
"$LKCONK2"
"$LKCOST"" > $MXLKPATH/looks/"$NEWNAME".look


#make preview image

WINLIST=$(wmctrl -l | grep -v tint2 | grep -v conky | awk '{ print$1 }')

for i in $WINLIST;
do
WINNUM=$i
wmctrl -i -r "$i" -b add,hidden
done

sleep 0.5
scrot $MXLKPATH/looks/"$NEWNAME".png -b -o -t 20
rm $MXLKPATH/looks/"$NEWNAME".png
mv $MXLKPATH/looks/"$NEWNAME"-thumb.png $MXLKPATH/looks/"$NEWNAME".png
sleep 0.5


for i in $WINLIST;
do
WINNUM=$i
wmctrl -i -r "$i" -b toggle,hidden
done


#all done
ALLDONE="$(eval_gettext 'All done!\n\nLook has been saved as <b>$NEWNAME</b>')"

  yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --width=400 --height=250 --fixed --center --borders=20 --text="$ALLDONE" --text-align=center --button="gtk-ok" \

exit
}



############################################################
#function restore look

restore_look() {
#define some variables

TITLE="$(gettext 'MXFB-Look')"
CLASS="mxfblook"
MXLKPATH="$HOME/.config/MX-Linux/mxfb-look"
ICONPATH="/usr/share/pixmaps/mxcr-icon.png"

source gettext.sh

#read saved looks
cd $MXLKPATH/looks
ls -f *.look > $MXLKPATH/tempdir/looklist.txt


#select look to restore

while [ -z "$LOOKRESTORE" ]; do

LOOKRESTORE=$( yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --text="$(gettext '\n<b> Choose which look to restore</b>\n')" --center --width=400 --height=300 --center --list --no-headers --column=Style --separator="" < $MXLKPATH/tempdir/looklist.txt )

GETOUT=$(echo "$?")

if [ "$GETOUT" != 0 ]; then

  exit

fi

if [ -z "$LOOKRESTORE" ]; then

  yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --text="$(gettext '\n<b> You need to select a look !</b>\n')" --center  --width=400 --height=300 

fi

done

#read Settings for new look

cd $MXLKPATH/looks

mapfile LKRE < $LOOKRESTORE

LKTHEMENEW="${LKRE[0]}"
LKICONNEW="${LKRE[1]}"
LKFONTNEW="${LKRE[2]}"
LKTHEMENEW2="${LKRE[3]}"
LKICONNEW2="${LKRE[4]}"
LKFONTNEW2="${LKRE[5]}"
LKFSNEW="${LKRE[6]}"
TINTNUMNEW="${LKRE[7]}"
LKTINT1NEW="${LKRE[8]}"
LKTINT2NEW="${LKRE[9]}"
LKROFINEW1="${LKRE[10]}"
LKROFINEW2=$LKROFINEW1
LKBACKNEW="${LKRE[11]}"
LKCONK1NEW="${LKRE[12]}"
LKCONK2NEW="${LKRE[13]}"
LKCOSTNEW="${LKRE[14]}"

LKTHEMENEW=$(echo "${LKTHEMENEW}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKICONNEW=$(echo "${LKICONNEW}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFONTNEW=$(echo "${LKFONTNEW}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKTHEMENEW2=$(echo "${LKTHEMENEW2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKICONNEW2=$(echo "${LKICONNEW2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFONTNEW2=$(echo "${LKFONTNEW2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFSNEW=$(echo "${LKFSNEW}" | sed -e 's/[]$\/*[\^]/\\&/g' )
LKTINT1NEW=$(echo "${LKTINT1NEW}" | sed -e 's/$HOME/\$HOME/g' )
LKTINT2NEW=$(echo "${LKTINT2NEW}" | sed -e 's/$HOME/\$HOME/g' )
LKROFINEW1=$(echo "${LKROFINEW1}" | sed -e 's/[]$\/*[\^]/\\&/g' )
LKBACKNEW=$(echo "${LKBACKNEW}" | sed -e 's/[]$ \/*[\^]/\\&/g' )

#read current look components

#theme and icons
LKTHEMEOLD="$(grep "gtk-theme-name" $HOME/.config/gtk-3.0/settings.ini)"
LKICONOLD="$(grep "gtk-icon-theme-name" $HOME/.config/gtk-3.0/settings.ini)"
LKFONTOLD="$(grep "gtk-font-name" $HOME/.config/gtk-3.0/settings.ini)"
LKTHEMEOLD2="$(grep "gtk-theme-name" $HOME/.gtkrc-2.0)"
LKICONOLD2="$(grep "gtk-icon-theme-name" $HOME/.gtkrc-2.0)"
LKFONTOLD2="$(grep "gtk-font-name" $HOME/.gtkrc-2.0)"

#fluxbox style
LKFSOLD="$(grep "styles" $HOME/.fluxbox/init)"

#tint2
LKTINT1OLD="$(grep "tint2" $HOME/.config/tint2/tint2-sessionfile | sed -n 1p)"
LKTINT2OLD="$(grep "tint2" $HOME/.config/tint2/tint2-sessionfile | sed -n 2p)"

#rofi
LKROFIOLD="$(grep '@theme' $HOME/.config/rofi/config.rasi | tail -1)"

#background
CHECKFEH=$(grep '#nitrogen' $HOME/.fluxbox/startup)

if [ -z "$CHECKFEH" ]; then

LKBACKOLD="$(grep "file=" $HOME/.config/nitrogen/bg-saved.cfg | sed -n 2p)"

    if [ -z "$LKBACKOLD" ]; then
    LKBACKOLD="$(grep "file=" $HOME/.config/nitrogen/bg-saved.cfg)"
    fi
fi

LKTHEMEOLD=$(echo "${LKTHEMEOLD}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKICONOLD=$(echo "${LKICONOLD}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFONTOLD=$(echo "${LKFONTOLD}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKTHEMEOLD2=$(echo "${LKTHEMEOLD2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKICONOLD2=$(echo "${LKICONOLD2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFONTOLD2=$(echo "${LKFONTOLD2}" | sed -e 's/[]$ .*[\^]/\\&/g' )
LKFSOLD=$(echo "${LKFSOLD}" | sed -e 's/[]$\/*[\^]/\\&/g' )
#LKTINTOLD=$(echo "${LKTINTOLD}" | sed -e 's/[]$\/*[\^]/\\&/g' )
#LKROFIOLD=$(echo "${LKROFIOLD}" | sed -e 's/[]$\/*[\^]/\\&/g' )
LKBACKOLD=$(echo "${LKBACKOLD}" | sed -e 's/[]$\/*[\^]/\\&/g' )

#conky
LKCOSTOLD="$(grep "Hidden" "$HOME/.config/autostart/conky.desktop")"


#make temp file
echo ""$LKTHEMENEW"|"$LKICONNEW"|"$LKFONTNEW"|"$LKTHEMENEW2"|"$LKICONNEW2"|"$LKFONTNEW2"|"$LKFSNEW"|"$TINTNUMNEW"|"$LKTINT1NEW"|"$LKTINT2NEW"|"$LKROFINEW1"|"$LKBACKNEW"|"$LKCONK1NEW"|"$LKCONK2NEW"|"$LKCOSTNEW"" > $MXLKPATH/tempdir/looktmp-new.txt

#amend temp
cd $MXLKPATH/tempdir

sed -i "s/gtk-theme-name\=/ /g" looktmp-new.txt
sed -i "s/gtk-icon-theme-name\=/ /g" looktmp-new.txt
sed -i "s/gtk-font-name\=/ /g" looktmp-new.txt
sed -i "s/session\.styleFile\:/ /g" looktmp-new.txt
sed -i "s/\$HOME\/\.config\/tint2\// /g" looktmp-new.txt
sed -i "s/\@theme/ /g" looktmp-new.txt
sed -i "s/file\=//g" looktmp-new.txt
sed -i "s/\"/ /g" looktmp-new.txt
sed -i "s/cd //g" looktmp-new.txt
#sed -i "s/hidden=//g" looktmp-new.txt

#read temp

OLDIFS="$IFS"
IFS="|"

read -r -a NEWFILL < looktmp-new.txt

NLKTH="${NEWFILL[0]}"
NLKIC="${NEWFILL[1]}"
NLKFO="${NEWFILL[2]}"
NLKFS="${NEWFILL[6]}"
NTINU="${NEWFILL[7]}"
NLKTI1="${NEWFILL[8]}"
NLKTI2="${NEWFILL[9]}"
NLKRO="${NEWFILL[10]}"
NLKBG="${NEWFILL[11]}"
NLKCO1="${NEWFILL[12]}"
NLKCO2="${NEWFILL[13]}"
NLKCOST="${NEWFILL[14]}"


#fix conky state

if [ $NLKCO1 = " " ]; then
NLKCO1="None"
fi

if [ $NLKCOST != LKCOSTOLD ]; then
sed -i "s/$LKCOSTOLD/$NLKCOST/g" $HOME/.config/autostart/conky.desktop
fi

NLKCOST=$(echo "${NLKCOST}" | sed -e 's/Hidden=//g' | sed -e "s/\ //g" )

if [ $NLKCOST = "false" ]; then
COST="$(gettext 'toggled on')"
else
COST="$(gettext 'toggled off')"
fi

PREVIEW="$MXLKPATH/looks/$LOOKRESTORE"
PREVIEW=$(echo "${PREVIEW}" | sed -e "s/\.look/\.png/g" )

#RESTOREMAIN

TEXTRESTORE0="$(eval_gettext '<b>$LOOKRESTORE</b>\n')"
TEXTRESTORE1="$(gettext 'GTK Theme')"
TEXTRESTORE2="$(gettext 'GTK Icons')"
TEXTRESTORE3="$(gettext 'GTK Font')"
TEXTRESTORE4="$(gettext 'Fluxbox Style')"
TEXTRESTORE5="$(gettext '1st Tint2 Panel')"
TEXTRESTORE6="$(gettext '2nd Tint2 Panel')"
TEXTRESTORE7="$(gettext 'Rofi Theme')"
TEXTRESTORE8="$(gettext 'Wallpaper')"
TEXTRESTORE9="$(gettext 'Conky')"
TEXTRESTORE10="$(gettext 'Conky State')"
TEXTRESTORE11="$(gettext 'Wait 10 seconds for the conky to restart')"

yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --borders=20 --center --width=600 --height=400 --fixed --image="$PREVIEW" --button="gtk-quit":1 --button=$"Restore Look":0 \
--text=$"<b>   "$TEXTRESTORE0"</b>\n
   "$TEXTRESTORE1": <b>"$NLKTH"</b>\n
   "$TEXTRESTORE2": <b>"$NLKIC"</b>\n
   "$TEXTRESTORE3": <b>"$NLKFO"</b>\n
   "$TEXTRESTORE4": <b>"$NLKFS"</b>\n
   "$TEXTRESTORE5": <b>"$NLKTI1"</b>\n
   "$TEXTRESTORE6": <b>"$NLKTI2"</b>\n
   "$TEXTRESTORE7": <b>"$NLKRO"</b>\n
   "$TEXTRESTORE8": <b>"$NLKBG"</b>\n
   "$TEXTRESTORE9": <b>"$NLKCO1"</b>\n
   "$TEXTRESTORE10": <b>"$COST"</b>\n
   ("$TEXTRESTORE11")\n"\

GETOUT=$(echo "$?")

if [ "$GETOUT" != 0 ]; then

  exit

elif [ "$GETOUT" = 0 ]; then

unset IFS

#Edit Config files

#gtk
cd ~/.config/gtk-3.0
sed -i -e "s/${LKTHEMEOLD}/${LKTHEMENEW}/g" settings.ini
sed -i -e "s/${LKICONOLD}/${LKICONNEW}/g" settings.ini
sed -i -e "s/${LKFONTOLD}/${LKFONTNEW}/g" settings.ini

cd ~
sed -i -e "s/${LKTHEMEOLD2}/${LKTHEMENEW2}/g" .gtkrc-2.0
sed -i -e "s/${LKICONOLD2}/${LKICONNEW2}/g" .gtkrc-2.0
sed -i -e "s/${LKFONTOLD2}/${LKFONTNEW2}/g" .gtkrc-2.0

#gtk bash
function reload_gtk_theme() {
  theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
  gsettings set org.gnome.desktop.interface gtk-theme ''
  sleep 1
  gsettings set org.gnome.desktop.interface gtk-theme $theme
}

reload_gtk_theme


#fluxbox
cd ~/.fluxbox
sed -i -e "s/${LKFSOLD}/${LKFSNEW}/g"  ~/.fluxbox/init
fluxbox-remote restart

#tint
cd ~/.config/tint2

if [ $TINTNUMNEW = 2 ]; then

rm tint2-sessionfile
killall tint2
LKTINTNEWA=$(basename "$LKTINT1NEW")
LKTINTNEWB=$(basename "$LKTINT2NEW")
echo "$LKTINT1NEW
$LKTINT2NEW" >> ~/.config/tint2/tint2-sessionfile
tint2 -c $HOME/.config/tint2/$LKTINTNEWA >/dev/null 2>&1 &  disown
tint2 -c $HOME/.config/tint2/$LKTINTNEWB >/dev/null 2>&1 &  disown

fi

if  [ $TINTNUMNEW = 1 ]; then

rm tint2-sessionfile
killall tint2
LKTINTNEWA=$(basename "$LKTINT1NEW")
echo "$HOME/.config/tint2/$LKTINTNEWA" >> ~/.config/tint2/tint2-sessionfile
tint2 -c $HOME/.config/tint2/$LKTINTNEWA >/dev/null 2>&1 &  disown

fi

if  [ $TINTNUMNEW = 0 ]; then

rm tint2-sessionfile
killall tint2
echo "" >> ~/.config/tint2/tint2-sessionfile

fi


#rofi
cd $HOME/.config/rofi/

ROFIOLDCOMMENT="//$LKROFIOLD"
LKROFIOLD=$(echo "${LKROFIOLD}" | sed -e 's/[]$\/*[\^]/\\&/g' )
ROFIOLDCOMMENT=$(echo "${ROFIOLDCOMMENT}" | sed -e 's/[]$\/*[\^]/\\&/g' )

sed -i "s/$LKROFIOLD/$ROFIOLDCOMMENT/g" config.rasi

LKROFINEW2=$(echo "${LKROFINEW2}" | sed -e 's/@import/@theme/g' )

sed -i 's/\/\/\/\/@/\/\/@/g' config.rasi

echo $LKROFINEW2 >> config.rasi

#background

CHECKFEH=$(grep '#nitrogen' $HOME/.fluxbox/startup)

if [ -z "$CHECKFEH" ]; then

cd $HOME/.config/nitrogen
sed -i -e "s/${LKBACKOLD}/${LKBACKNEW}/g" bg-saved.cfg
cd $MXLKPATH/tempdir
echo "$LKBACKNEW" > nitrotemp.txt
sed -i "s/file\=//g" nitrotemp.txt
read LKNITRO < nitrotemp.txt
nitrogen --set-zoom-fill --save "$LKNITRO"

else

NLKBG=$(echo "${NLKBG}" | sed -e 's/\\//g')
NLKBG=$(echo "${NLKBG}" | sed -e "s/'/|/g")
NLKBG=$(echo "$NLKBG"  | cut -d '|' -f 2)

feh --bg-scale "$NLKBG"

fi

#conky
cd ~/.conky

printf "#!/bin/sh
if [ x\"\${DESKTOP_SESSION##*/}\" = x\"lightdm-xsession\" ]; then
sleep 10s
killall conky
$LKCONK1NEW
$LKCONK2NEW
exit 0
fi" > conky-startup.sh

if [ $NLKCOST = "false" ]; then

echo | sh conky-startup.sh
exit
exit

else

killall conky

fi

fi

exit

}

export -f save_look restore_look

TEXTMAIN="$(gettext '<b>You can save the current look or restore a saved look</b>\n\nA look is comprised of the following elements\n- Gtk-Theme\n- Gtk-Icon\n- Gtk-Font\n- Fluxbox Style\n- up to two Tint2 Panels\n- Rofi Theme\n- Wallpaper\n- One Conky\n\n')"

yad --title="$TITLE" --class="$CLASS" --window-icon="$ICONPATH" --width=400 --height=200 --fixed --center --borders=20 --text-align=center --text="$TEXTMAIN" --button="gtk-close" --button="$(gettext 'Restore Look')":"bash -c restore_look" --button="$(gettext 'Save Current Look')":"bash -c save_look" \
