#!/bin/bash D_CONF="${HOME}/.config" D_HYPRLAND_CONF="${D_CONF}/hypr" D_WAYBAR_CONF="${D_CONF}/waybar" D_NWGBAR_CONF="${D_CONF}/nwg-bar" D_KITTY_CONF="${D_CONF}/kitty" D_FUZZEL_CONF="${D_CONF}/fuzzel" initial_checks() { case ${1} in 0) echo "Valid index";; 1) echo "Valid index";; 2) echo "Valid index";; 3) echo "Valid index";; 4) echo "Valid index";; *) echo "Invalid index, quitting now. Goodbye." && exit 1;; esac } reload_all() { hyprctl reload for sock in /tmp/kitty-*; do [ -S "$sock" ] || continue echo "Reloading config for $sock" kitty @ --to "unix:$sock" load-config done if pgrep -x "waybar" > /dev/null; then killall waybar sleep 0.5 nohup waybar >/dev/null 2>&1 & else nohup waybar >/dev/null 2>&1 & fi } update_symlinks() { echo "Updating symlinks for hyprland..." readlink ${D_HYPRLAND_CONF}/theme.conf F_THEMEFILE="${D_HYPRLAND_CONF}/theme.conf" case ${1} in 0) F_THEME="${D_HYPRLAND_CONF}/t_base16.conf" ;; 1) F_THEME="${D_HYPRLAND_CONF}/t_everforest.conf" ;; 2) F_THEME="${D_HYPRLAND_CONF}/t_gruvbox.conf" ;; 3) F_THEME="${D_HYPRLAND_CONF}/t_monokai-pro.conf" ;; 4) F_THEME="${D_HYPRLAND_CONF}/t_nord.conf" ;; esac ln -snvf ${F_THEME} ${F_THEMEFILE} echo "Updating symlinks for waybar..." readlink ${D_WAYBAR_CONF}/style.css F_THEMEFILE="${D_WAYBAR_CONF}/style.css" case ${1} in 0) F_THEME="${D_WAYBAR_CONF}/t_base16.css" ;; 1) F_THEME="${D_WAYBAR_CONF}/t_everforest.css" ;; 2) F_THEME="${D_WAYBAR_CONF}/t_gruvbox.css" ;; 3) F_THEME="${D_WAYBAR_CONF}/t_monokai-pro.css" ;; 4) F_THEME="${D_WAYBAR_CONF}/t_nord.css" ;; esac ln -snvf ${F_THEME} ${F_THEMEFILE} echo "Updating symlinks for nwg-bar..." readlink ${D_NWGBAR_CONF}/style.css F_THEMEFILE="${D_NWGBAR_CONF}/style.css" case ${1} in 0) F_THEME="${D_NWGBAR_CONF}/t_base16.css" ;; 1) F_THEME="${D_NWGBAR_CONF}/t_everforest.css" ;; 2) F_THEME="${D_NWGBAR_CONF}/t_gruvbox.css" ;; 3) F_THEME="${D_NWGBAR_CONF}/t_monokai-pro.css" ;; 4) F_THEME="${D_NWGBAR_CONF}/t_nord.css" ;; esac ln -snvf ${F_THEME} ${F_THEMEFILE} echo "Updating symlinks for kitty..." readlink ${D_KITTY_CONF}/current_theme.conf F_THEMEFILE="${D_KITTY_CONF}/current_theme.conf" case ${1} in 0) F_THEME="${D_KITTY_CONF}/t_base16.conf" ;; 1) F_THEME="${D_KITTY_CONF}/t_everforest.conf" ;; 2) F_THEME="${D_KITTY_CONF}/t_gruvbox.conf" ;; 3) F_THEME="${D_KITTY_CONF}/t_monokai-pro.conf" ;; 4) F_THEME="${D_KITTY_CONF}/t_nord.conf" ;; esac ln -snvf ${F_THEME} ${F_THEMEFILE} echo "Updating symlinks for fuzzel..." readlink ${D_FUZZEL_CONF}/fuzzel.ini F_THEMEFILE="${D_FUZZEL_CONF}/fuzzel.ini" case ${1} in 0) F_THEME="${D_FUZZEL_CONF}/t_base16.ini" ;; 1) F_THEME="${D_FUZZEL_CONF}/t_everforest.ini" ;; 2) F_THEME="${D_FUZZEL_CONF}/t_gruvbox.ini" ;; 3) F_THEME="${D_FUZZEL_CONF}/t_monokai-pro.ini" ;; 4) F_THEME="${D_FUZZEL_CONF}/t_nord.ini" ;; esac ln -snvf ${F_THEME} ${F_THEMEFILE} echo "Symlinks updated successfully!" } update_nvim() { case ${1} in 0) export NVIM_THEME=base16 ;; 1) export NVIM_THEME="everforest" ;; 2) export NVIM_THEME="gruvbox" ;; 3) export NVIM_THEME="monokai-pro" ;; 4) export NVIM_THEME="nord" ;; esac echo "neovim theme updated" echo "These changes may not apply until neovim is restarted" } update_gtk() { case ${1} in 0) GTK_THEME="BlackAndWhite" ICO_THEME="Slot-Blue-Dark-Icons" ;; 1) GTK_THEME="Everforest-Dark" ICO_THEME="Everforest-Dark" ;; 2) GTK_THEME="Gruvbox-Dark-Medium" ICO_THEME="Gruvbox-Plus-Dark" ;; 3) GTK_THEME="Monokai-GTK" ICO_THEME="Everforest-Dark" ;; 4) GTK_THEME="Nordic" ICO_THEME="Nordzy-dark" ;; *) echo "Invalid theme index" return 1 ;; esac echo "Applying GTK theme: ${GTK_THEME}" gsettings set org.gnome.desktop.interface gtk-theme "${GTK_THEME}" gsettings set org.gnome.desktop.wm.preferences theme "${GTK_THEME}" gsettings set org.gnome.desktop.interface icon-theme "${ICO_THEME}" echo "GTK theme applied successfully" } update_wallpaper() { WALL_DIR="${HOME}/Wallpapers" case ${1} in 0) FOLDER="${WALL_DIR}/base16" ;; 1) FOLDER="${WALL_DIR}/everforest" ;; 2) FOLDER="${WALL_DIR}/gruvbox" ;; 3) FOLDER="${WALL_DIR}/monokai-pro" ;; 4) FOLDER="${WALL_DIR}/nord" ;; *) echo "Invalid theme index" return 1 ;; esac if [ -d "$FOLDER" ]; then echo "Setting random wallpaper from: $FOLDER" RANDOM_WALLPAPER=$(find "$FOLDER" -type f \( -iname "*.jpg" -o -iname "*.png" -o -iname "*.jpeg" -o -iname "*.webp" \) | shuf -n 1) if [ -n "$RANDOM_WALLPAPER" ]; then hyprctl hyprpaper unload all hyprctl hyprpaper preload "$RANDOM_WALLPAPER" hyprctl hyprpaper wallpaper ",$RANDOM_WALLPAPER" echo "Wallpaper set to: $RANDOM_WALLPAPER" else echo "No wallpaper files found in: $FOLDER" fi else echo "Wallpaper folder not found: $FOLDER" fi } initial_checks "$@" update_symlinks "$@" update_nvim "$@" update_gtk "$@" update_wallpaper "$@" reload_all