#!/bin/bash

user=$(whoami)
if $(sudoer $user); then
  own=$(df -P /)
  own=${own##*\/dev\/}
  own=${own%%\ *}
  mnt="automount"
else
  own="$(lsblk -o KNAME,TYPE,TRAN | grep disk | grep -v usb | cut -d\  -f1)"
  mnt="udcmount 2"
fi

IFS=$'\n'
partprobe

line=$(lsblk -o KNAME,TYPE,LABEL,FSTYPE)
line="${line%%$'\n'*}"
p_knm=0
p_typ=$(echo "$line" | grep -b -o " TYPE"); p_typ=${p_typ%%:*}; ((p_typ++))
p_lbl=$(echo "$line" | grep -b -o LABEL); p_lbl=${p_lbl%%:*}
p_fst=$(echo "$line" | grep -b -o FSTYPE); p_fst=${p_fst%%:*}

devs=($(lsblk -o KNAME,TYPE,LABEL,FSTYPE | grep -E "part"\|"rom" | grep -Ev "swap|suspend" | grep -v $own))
n_devs=${#devs[*]}; ((n_devs--))
dims=$(echo $(dims)); dims=${dims%% *}; h_dim=${dims%|*}; v_dim=${dims#*|}
panel_pos="$(cat $HOME/.config/tint2/tint2rc | grep '^panel_position')"
[[ "$panel_pos" =~ "horizontal" ]] && horiz=true || horiz=false
$horiz && v_dist=96 || v_dist=0
! $horiz && h_dist=160 || h_dist=0

pgrep -f "variety-rox" > /dev/null && init=false || init=true
rm $HOME/$(get-text Desktop)/dev_*

eval $(grep "export LANG=" ~/.profile)
eval $(grep "export LANGUAGE=" ~/.profile)
sed -i '/XDG_/d' $HOME/.config/user-dirs.dirs
$(grep 'XDG_' $HOME/.config/openbox/environment > /dev/null) && env_file="$HOME/.config/openbox/environment" || env_file="/etc/environment"
pfade=($(grep 'XDG_' $env_file | sed 's/export //g'))
for p in ${pfade[@]}; do eval echo "$p" >> $HOME/.config/user-dirs.dirs; done
pbfile=($(cat $HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu | grep -Ev "Bureau/dev_|Desktop/dev_|Escritorio/dev_"))

rm $HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu

n=${#pbfile[*]}
((n--))
for ((k=0; k<n; ++k)); do echo "${pbfile[k]}" >> $HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu; done
v_start=$(((v_dim-n_devs*v_dist)/2-v_dist/3))
h_start=$(((h_dim+30-n_devs*h_dist)/2+h_dist/3))
if $horiz; then
  y=$v_start; x=64
else
  x=$h_start; y=$((v_dim-56))
fi

for d in ${devs[@]}; do
  icon=""; typ=""
  dev=${d:0:$p_typ}; dev=${dev// /}
  if [ "${dev::2}" = "sr" ] || [[ "$d" =~ "iso9660"  ]]; then icon="media-cdrom"; fi
  v_id=$(udevadm info --query=all -n /dev/$dev | grep VENDOR_ID)
  m_id=$(udevadm info --query=all -n /dev/$dev | grep MODEL_ID)
  vm_id="${v_id#*ID=}:${m_id#*ID=}"
  [ "$vm_id" != ":" ] && typ="$(lsusb | grep "$vm_id")"
  [ -z "$typ$icon" ] && icon="harddrive"
  if [ -z "$icon" ]; then
    case "$typ" in
      *[Ff]lash*|*Jumpdrive*)	icon="usb-stick" ;;
      *External*|*IDE*)		icon="gnome-dev-removable-usb" ;;
      *card*)			icon="/usr/share/icons/gnome/48x48/devices/media-flash.png" ;;
    esac
    [ -z "$icon" ] && icon="gnome-dev-removable-usb"
  fi
  name=${d:$p_lbl:(($p_fst-$p_lbl))}; name=${name// /}
  fs=${d:$p_fst}
  fs=${fs// /}
  if [ -n "$fs" ]; then
    echo "[Desktop Entry]" > "$HOME/$(get-text Desktop)/dev_$dev"
    echo "Exec=$mnt /dev/$dev" >> "$HOME/$(get-text Desktop)/dev_$dev"
    echo "Icon=$icon" >> "$HOME/$(get-text Desktop)/dev_$dev"
    echo "  <icon x=\"$x\" y=\""$y"\" label=\""$dev"&#10;"$name" ("$fs")\">$HOME/$(get-text Desktop)/dev_"$dev"</icon>" >> $HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu
    $horiz && ((y=y+$v_dist)) || ((x=x+$h_dist))
    if $horiz; then
      [ $y -gt $((v_dim-$v_dist)) ] && y=$v_start && ((x=x+$h_dist))
    else
      [ $x -gt $((h_dim-$h_dist)) ] && x=$h_start && ((y=y-$v_dist))
    fi
  fi
done

echo "${pbfile[$n]}" >> $HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu
. $HOME/.config/openbox/environment
killall xbindkeys; xbindkeys &

if $init; then
    variety-rox "$wallpaper" $duration $mode &
else
    variety-rox "$(readlink $HOME/.wallpaper)" $(cat /tmp/hsperfdata_$USER/vr-duration) $(cat /tmp/hsperfdata_$USER/vr-mode) &
fi
