#!/bin/bash

cut () {
    clip="$(cat "$1")"
    l=$(echo "$clip" | tr "\n" " " | sed 's/‖/\n/g' | wc -l); ((l++))
    for ((k=0; k<l-n; k++)); do clip="${clip%‖*}"; done
    echo "$clip" > "$1"
}


. /etc/environment
. $HOME/.config/openbox/environment
. $HOME/.profile
! pgrep -x language > /dev/null && language || ( while pgrep -x language > /dev/null; do sleep 1; done && get-devs && . $HOME/.profile && appmenu-refresh && obamenu-refresh && pgrep -f systray-item-edit | xargs kill && $HOME/.config/autostart/Predef Cmds To Systray.desktop )
[ "$(expr "$(ps -e | grep $PPID)" : '.* \(.*\)')" = "su" ] && wake_up=true || wake_up=false

if ! $wake_up; then
    mouse-actions-gui start &
    xbindkeys &
    cd
    old_user=$(cat .config/yad.conf | grep 'output-uri')
    old_user="${old_user#*home/}"
    old_user="${old_user%%/*}"
    if [ "$USER" != "$old_user" ]; then
	! id "$old_user" >/dev/null 2>&1 && [ -e "/usr/share/sddm/faces/$old_user.face.icon" ] && rm /usr/share/sddm/faces/$old_user.face.icon
	[ ! -e "~/.face.icon" ] && cp /usr/share/sddm/faces/root.face.icon ~/.face.icon && setfacl -m u:sddm:x ~/ && setfacl -m u:sddm:r ~/.face.icon
	! id "$old_user" >/dev/null 2>&1 && rm -r "/media/$old_user" && rm -r "/mnt/$old_user"
	[ ! -d "/media/$USER" ] && mkdir "/media/$USER"
	[ ! -d "/mnt/$USER" ] && mkdir "/mnt/$USER"
	find . -type f -not -name "*:*" | xargs file --mime-type "*" | grep 'text/' | sed -E 's|(.*):.*|\1|' | xargs grep -l $old_user | xargs sed -i "s/$old_user/$USER/g"
	find . -type l | while read -r line; do ln -sfn $(readlink "$line" | sed "s/$old_user/$USER/g") "$line"; done
    fi
    [ -e "dconf.txt" ] && dconf reset -f / && dconf load / < dconf.txt && rm dconf.txt
    if [[ "$(less /proc/cpuinfo | grep 'model name' | head -n 1)" =~ "QEMU Virtual CPU" ]]; then set-resol 1280x1024; else set-resol $resolution; fi
    [ ! -d /tmp/hsperfdata_root ] && mkdir /tmp/hsperfdata_root && chmod a+w /tmp/hsperfdata_root
    [ ! -d /tmp/hsperfdata_root/ROX-Filer ] && mkdir /tmp/hsperfdata_root/ROX-Filer && chmod a+w /tmp/hsperfdata_root/ROX-Filer
    ln -sfn $HOME/.icons /tmp/hsperfdata_root/icons
    ln -sfn $HOME/.config/Control_Center /tmp/hsperfdata_root/Control_Center
    ln -sfn $HOME/.config/menus /tmp/hsperfdata_root/menus
    ln -sfn $HOME/.config/mimeapps.list /tmp/hsperfdata_root/mimeapps.list
    ln -sfn $HOME/.config/openbox /tmp/hsperfdata_root/openbox
    ln -sfn $HOME/.config/rox.sourceforge.net/MIME-icons /tmp/hsperfdata_root/MIME-icons
    ln -sfn $HOME/.config/rox.sourceforge.net/MIME-types /tmp/hsperfdata_root/MIME-types
    ln -sfn $HOME/.config/rox.sourceforge.net/SendTo /tmp/hsperfdata_root/SendTo
    ln -sfn $HOME/.config/tint2 /tmp/hsperfdata_root/tint2
    ln -sfn $HOME/.config/rox.sourceforge.net/ROX-Filer/globicons /tmp/hsperfdata_root/ROX-Filer/globicons
    ln -sfn $HOME/.local/share/applications /tmp/hsperfdata_root/applications
    ln -sfn $HOME/.local/share/desktop-directories /tmp/hsperfdata_root/desktop-directories
    killall tint2
    tint2 &
    xset dpms 0 0 0
    IFS=$'\n'
    bm=.config/gtk-3.0/bookmarks
    for l in $(cat $bm); do path="$(echo "${l:7}" | sed -E 's|(.*) .*|\1|')"; [ ! -d "$path" ] && sed -i "/${l//\//\\/}/d" $bm; done
    bm=.config/rox.sourceforge.net/ROX-Filer/Bookmarks.xml
    for l in $(cat $bm); do path="$(echo "${l#*>}" | sed -E 's|(.*)<.*|\1|')"; [[ "$path" = */* ]] && [ ! -d "$path" ] && sed -i "/${l//\//\\/}/d" $bm; done
    center-windows &
    [ "$LANGUAGE" != "en" ] && lang="$LANGUAGE" || lang="gb"
    setxkbmap $lang &
    n=$max_clip_start
    cut .local/share/clipboard/primary
    cut .local/share/clipboard/secondary
    cut .local/share/clipboard/tertiary
    for d in $(ls -l ~/.local/share/applications/*.desktop | grep -E rw-r.-r.- | sed -E 's~.* ([^ ]*)$~\1~'); do chmod a+x $d; done
    notify-upgradables.desktop &
    watch-ports &
    if $(sudoer $(whoami)); then
	upgrade root &
    fi
else
    mouse-actions-gui start &
fi

if [ ! -d "/run/live" ]; then
    while pgrep -f "get-devs" > /dev/null; do sleep 0.1; done
    calendar &
fi

