#!/bin/bash

dims="$@"

IFS=$'\n'
conn=($(xrandr | grep " connected"))
mm=(${conn[@]##*x })
if [ ${#mm[@]} -gt 1 ]; then
  if [ "${mm[0]: -5:4}" = "axis" ] || [ ${mm[0]::-2} -lt ${mm[1]::-2} ]; then
    conn=${conn[1]%% *}
  else
    conn=${conn[0]%% *}
  fi
else
  conn=${conn[0]%% *}
fi

unset IFS

dims_opt="$(xrandr)"
dims_opt="${dims_opt#*$conn}"
dims_opt="${dims_opt#*mm$'\n'}"
dims_opt="${dims_opt%%+*}"
dims_opt="${dims_opt::-1}"
dims_opt="${dims_opt% *}"
dims_opt=$(echo $dims_opt)

if [ -z "$dims" ]; then
  dims="$dims_opt"
fi

dim_x=${dims%%x*}
dim_y=${dims#*x}

xrandr --output LVDS1 --off --output HDMI1 --off --output HDMI2 --off --output DP1 --off  --output DP2 --off --output $conn --mode $dims --pos 0x0 --rotate normal

IFS=$'\n'
if [ -f "$HOME/.screenlayout/last_resol" ]; then
  dims_old=$(cat $HOME/.screenlayout/last_resol)
else
  dims_old="$dims_opt"
fi
dim_old_x=${dims_old%%x*}
dim_old_y=${dims_old#*x}
str_x=$(echo $dim_x / $dim_old_x | bc -l)
str_y=$(echo $dim_y / $dim_old_y | bc -l)
sleep 0.1
echo "$dims" > $HOME/.screenlayout/last_resol
pb_file=$HOME/.config/rox.sourceforge.net/ROX-Filer/pb_starbuntu
pb=($(cat $pb_file))
l=${#pb[@]}
for ((k=2; k<l; k++)); do
    if [[ "${pb[$k]}" =~ "<icon" ]]; then
      x_old=${pb[$k]#*x=\"}
      x_old=${x_old%%\"*}
      x=$(echo $x_old*$str_x | bc -l)
      x=${x%%.*}
      y_old=${pb[$k]#*y=\"}
      y_old=${y_old%%\"*}
      y=$(echo $y_old*$str_y | bc -l)
      y=${y%%.*}
      post="${pb[$k]#*label=}"
      pb[$k]="  <icon x=\"$x\" y=\"$y\" label=$post"
    fi
    sleep 0.1
done
rm $pb_file
echo "${pb[*]}" > $pb_file
xmllint --format "$pb_file" > /dev/null  2> /dev/null
[ $? -eq 0 ] && [ -n "$(grep '</backdrop>' $pb_file)" ] && cp $pb_file ${pb_file}.bak
sed -i '/dev_/d' ${pb_file}.bak
pgrep -x 'rox' && kill $(pgrep -x 'rox') && init=false || init=true
pgrep -x 'center-windows' && cw=true && killall center-windows || cw=false

! $init && get-devs
$cw && center-windows &
