#! /bin/bash
data=/usr/share/tromjaro-layout-switcher
icons=$data/icons
profiles=$data/profiles

enable-top-bar-integration() {
    # Enable global menus
    pacman -Qq vala-panel-appmenu-registrar ||
        zensu SKIP_AUTOSNAP= pacman -S --noconfirm vala-panel-appmenu-registrar ||
        { notify-send 'Error' 'Failed installing vala-panel-appmenu-registrar !\nmake sure that you typed the password correctly or that you are not currently installing or updating your system\nEnabling the internet connection might solve the issue'; exit; }
    pacman -Qq vala-panel-appmenu-registrar || exit

    # Hide window borders when maximized
    xfconf-query -c xfwm4 -p /general/borderless_maximize -n -t bool -s true
    # Hide top bar of windows when maximized
    xfconf-query -c xfwm4 -p /general/titleless_maximize -n -t bool -s true
    # Put window buttons on left side
    xfconf-query -c xfwm4 -p /general/button_layout -n -t string -s "CMH|"
}

disable-top-bar-integration() {
    # Disable global menus
    ! pacman -Qq vala-panel-appmenu-registrar ||
        zensu SKIP_AUTOSNAP= pacman -R --noconfirm vala-panel-appmenu-registrar ||
        { notify-send 'Error' 'Failed removing vala-panel-appmenu-registrar !\nmake sure that you typed the password correctly or that you are not currently installing or updating your system'; exit; }
    pacman -Qq vala-panel-appmenu-registrar && exit
    killall appmenu-registrar

    # Hide window borders when maximized
    xfconf-query -c xfwm4 -p /general/borderless_maximize -n -t bool -s true
    # Don't hide top bar of windows when maximized
    xfconf-query -c xfwm4 -p /general/titleless_maximize -n -t bool -s false
    # Put window buttons on right side
    xfconf-query -c xfwm4 -p /general/button_layout -n -t string -s "|HMC"
}

choice=$(
yad --no-buttons --center --keep-icon-size --separator='' --use-interp --title 'TROMjaro Layout Switcher' --text-align=center --text ' Please use the Panel Profiles to save your current configuration in case you did any manual changes, else you may lose them. 
Changing to or from any layout that has global menus, will require your admin password.' --form --columns 3 \
--field=!"$icons/windows.png"!'Windows-Like (default)':BTN "kill -USR1 \$YAD_PID; echo -n 'Windows-Like'" \
--field=!"$icons/macos.png"!'MacOS-Like (experimental)':BTN "kill -USR1 \$YAD_PID; echo -n 'MacOS-Like'" \
--field=!"$icons/mx.png"!'MX-Like':BTN "kill -USR1 \$YAD_PID; echo -n 'MX-Like'" \
--field=!"$icons/gnome.png"!'Gnome-Like':BTN "kill -USR1 \$YAD_PID; echo -n 'Gnome-Like'" \
--field=!"$icons/unity.png"!'Unity-Like (experimental)':BTN "kill -USR1 \$YAD_PID; echo -n 'Unity-Like'" \
--field=!"$icons/topx.png"!'TopX-Like':BTN "kill -USR1 \$YAD_PID; echo -n 'TopX-Like'"
)

case "$choice" in
    'Windows-Like'|'MX-Like'|'Gnome-Like'|'TopX-Like')
        disable-top-bar-integration ;;
    'Unity-Like'|'MacOS-Like')
        enable-top-bar-integration ;;
    *) exit ;;
esac

# Apply the XFCE panel profiles for the chosen layout
xfce4-panel-profiles load "$profiles/$choice.tar.bz2"
killall mate-hud && setsid -f /usr/lib/mate-hud/mate-hud

sleep 2.5 && notify-send "$choice layout was enabled"