#!/bin/bash set -euo pipefail #ANY CHANGES TO THE INSTALLATION PROCEDURE SHOULD BE MADE HERE # function to select theme function func_seltheme { cmd=(dialog --separate-output --checklist "Select theme (Only select one)" 22 76 16) options=(1 "Nyarch" off # any option can be set to default to "on" 2 "Spaceengine Pink" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) clear for choice in $choices do case $choice in 1) echo "nyarch" > "$HOME/.seltheme" ;; 2) echo "space-pink" > "$HOME/.seltheme" ;; esac done } # check if user is root if [ "$EUID" -ne 0 ]; then sudo -l > /dev/null fi #change to home (does not show in terminal) cd "$HOME" #remove old installs rm -rf ~/config #clone this repo git clone https://gitlab.com/RealStickman-arch/config.git && # make sure to use master branch cd config git checkout master cd .. # check if the install scripts are the same # NOTE Arguments get passed automatically now if ! cmp --silent "$HOME/scripts/arch-config.sh" "$HOME/config/scripts/arch-config.sh" ; then echo Removed old config file and launched new one. rm "$HOME/scripts/arch-config.sh" && cp "$HOME/config/scripts/arch-config.sh" "$HOME/scripts/" && bash ~/scripts/arch-config.sh "$@" fi # if no seltheme file exists, ask to select a theme if [[ ! -f "$HOME/.seltheme" ]]; then func_seltheme fi ############################## ##### arguments ##### ############################## # handle arguments if [[ "$#" -eq 1 ]]; then # -t/--theme to change theme if [[ "$1" == "-t" || "$1" == "--theme" ]]; then func_seltheme elif [[ "$1" == "-h" || "$1" == "--help" ]]; then echo "-h, --help Show help menu" echo "-t, --theme Show theme selection screen" fi elif [[ "$#" -gt 1 ]]; then echo "Too many arguments" exit 1 fi #delete previous backups echo Removing old backup if [[ -d ~/old_dat ]]; then rm -rf ~/old_dat fi # make new backup echo Creating backup mkdir -p ~/old_dat/.config || echo Directory already exists mkdir -p ~/old_dat/.doom.d || echo Directory already exists mkdir -p ~/old_dat/.easystroke || echo Directory already exists mkdir -p ~/old_dat/.mozilla || echo Directory already exists mkdir -p ~/old_dat/scripts || echo Directory already exists # make subdirectories mkdir -p ~/old_dat/.local/share || echo Directory already exists ############################## # back stuff up ############################## #config folders if [[ -d ~/.config/MangoHud ]]; then rsync -ah ~/.config/MangoHud ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/fish ]]; then rsync -ah ~/.config/fish ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/gtk-3.0 ]]; then rsync -ah ~/.config/gtk-3.0 ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/i3 ]]; then rsync -ah ~/.config/i3 ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/neofetch ]]; then rsync -ah ~/.config/neofetch ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/openbox ]]; then rsync -ah ~/.config/openbox ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/polybar ]]; then rsync -ah ~/.config/polybar ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/termite ]]; then rsync -ah ~/.config/termite ~/old_dat/.config/ || echo Directory does not exist fi if [[ -d ~/.config/variety ]]; then rsync -ah ~/.config/variety ~/old_dat/.config/ || echo Directory does not exist fi # doom.d folder if [[ -d ~/.doom.d ]]; then rsync -ah ~/.doom.d ~/old_dat/ || echo Directory does not exist fi # easystroke if [[ -d ~/.easystroke ]]; then rsync -ah ~/.easystroke ~/old_dat/ || echo Directory does not exist fi # local folder if [[ -d ~/.local/share/applications ]]; then rsync -ah ~/.local/share/applications/ ~/old_dat/.local/share/ || echo Directory does not exist fi # mozilla if [[ -d ~/.mozilla ]]; then rsync -ah ~/.mozilla ~/old_dat/ || echo Directory does not exist fi # scripts if [[ -d ~/scripts ]]; then rsync -ah ~/scripts ~/old_dat/ || echo Directory does not exist fi echo Made backups # remove old templates if [[ -d ~/.config/Vorlagen ]]; then rm -r ~/.config/Vorlagen fi #copy folders cp -r ~/config/.config/ ~/ && cp -r ~/config/.local/ ~/ && #cp -r ~/config/Dokumente ~/ && cp -r ~/config/.mozilla ~/ && cp -r ~/config/.easystroke ~/ && cp -r ~/config/.doom.d ~/ && echo Copied folders #copy single files cp -r ~/config/.bashrc ~/ && cp -r ~/config/.face ~/ && cp -r ~/config/.gtkrc-2.0 ~/ && cp -r ~/config/.gitconfig ~/ && #cp -r ~/config/.fehbg ~/ && cp -r ~/config/.tmux.conf ~/ && cp -r ~/config/.xinitrc ~/ && echo Copied files # make .xinitrc executable chmod +x ~/.xinitrc #copy scripts cp -r ~/config/scripts/ ~/ # copy cache cp -r ~/config/.cache ~/ #copy stuff to /etc sudo cp -r ~/config/etc / #sudo rsync --exclude=default/grub ~/config/etc /etc/ #read -r -p "Do you want to overwrite the grub config? [y/N] " response #if [[ "$response" =~ ^([yY][eE][sS][jJ]|[yY])$ ]] #then # copy config # sudo cp ~/config/etc/default/grub /etc/default/ # update grub # sudo grub-mkconfig -o /boot/grub/grub.cfg #fi # NOTE Distro specific stuff distro=$(cat /etc/*-release | grep "^ID=") if [ "$distro" == "ID=arcolinux" ]; then sudo mv /etc/arco-pacman.conf /etc/pacman.conf fi if [ "$distro" == "ID=arch" ]; then sudo mv /etc/arch-pacman.conf /etc/pacman.conf fi #copy old lightdm themes (and maybe other stuff, idk) sudo cp -r ~/config/var / #copy usr stuff sudo cp -r ~/config/usr / # copy xresources cp ~/config/.Xresources ~/ # remove old themes folder rm -rf ./themes # install theme selected in themes file git clone https://gitlab.com/RealStickman-arch/themes.git seltheme="$(cat "$HOME/.seltheme")" if [[ "$seltheme" == "nyarch" ]]; then #cp -r "./themes/nyarch/i3" "$HOME/.config/" cat "./themes/nyarch/i3/color" >> "$HOME/.config/i3/config" cp -r "./themes/nyarch/polybar" "$HOME/.config/" cp -r "./themes/nyarch/neofetch/lowpoly_flamegirl_blue.txt" "$HOME/.config/neofetch/lowpoly_flamegirl.txt" cp "./themes/.fehbg-nyarch" "$HOME/.fehbg" #sed -i 's/^NAME=".*"/NAME="Rawrch Linyux"/' /etc/os-release elif [[ "$seltheme" == "space-pink" ]]; then #cp -r "./themes/space-pink/i3" "$HOME/.config/" cat "./themes/space-pink/i3/color" >> "$HOME/.config/i3/config" cp -r "./themes/space-pink/polybar" "$HOME/.config/" cp -r "./themes/space-pink/neofetch/lowpoly_flamegirl_orange.txt" "$HOME/.config/neofetch/lowpoly_flamegirl.txt" cp "./themes/.fehbg-space-pink" "$HOME/.fehbg" fi rm -rf ./themes # make fehbg executable chmod +x ~/.fehbg # download cat as cat git clone https://github.com/RealStickman/bash-cat-with-cat.git cp ./bash-cat-with-cat/cat.sh "$HOME/scripts/pieces/cat.sh" rm -rf ./bash-cat-with-cat #gimp plugins #mkdir ~/.config/GIMP/ || echo Not creating directory #mkdir ~/.config/GIMP/2.10/ || echo Not creating directory mkdir -p ~/.config/GIMP/2.10/plug-ins/ || echo Not creating directory rsync -ah ~/config/gimp-plugins/* ~/.config/GIMP/2.10/plug-ins/ # set systemd stuff for vmware (only if installed) if [[ $(pacman -Q | grep vmware-workstation) ]]; then sudo systemctl enable --now vmware-networks-server.service fi #unzip gimp plugins echo Unzipping gimp plugins unzip -o ~/.config/GIMP/2.10/plug-ins/export_layers-3.3.1.zip -d ~/.config/GIMP/2.10/plug-ins/ > /dev/null rm ~/.config/GIMP/2.10/plug-ins/export_layers-3.3.1.zip > /dev/null echo Unzipped gimp plugins # xfce settings # disable screensaver & locker /usr/bin/xfconf-query -c xfce4-session -n -t bool -p /startup/screensaver/enabled -s false #make bash scripts executable chmod +x -R ~/.config/polybar/ chmod +x -R ~/.config/i3/scripts chmod +x -R ~/scripts # make applications executable chmod +x -R ~/.local/share/applications #remove downloaded folder rm -rf ~/config # reload applications update-desktop-database ~/.local/share/applications/ #sync doom-emacs ~/.emacs.d/bin/doom sync # reload systemd user scripts systemctl --user daemon-reload # reload .Xresources if [[ -f "$HOME/.Xresources" ]]; then xrdb ~/.Xresources fi # execute feh "$HOME/.fehbg" #restart i3 in place, but only if i3 is running if [[ "$(ps aux | grep "\si3\$")" ]]; then i3 restart fi #output echo Finished updating everything! echo Launching new shell! # reload fish exec fish exit 0