diff --git a/config/scripts/.local/scripts/config-switch b/config/scripts/.local/scripts/config-switch index cd95ac1..198ecbf 100755 --- a/config/scripts/.local/scripts/config-switch +++ b/config/scripts/.local/scripts/config-switch @@ -7,24 +7,29 @@ set -euo pipefail desktop=${1:-${XDG_CURRENT_DESKTOP:-default}} -for item in "kitty" "wlogout"; do - if [ ! -L "$HOME/.config/$item" ] && [ -e "$HOME/.config/$item" ]; then - echo "Error: $HOME/.config/$item exists and is not a symlink." >&2 - exit 1 - elif [ -L "$HOME/.config/$item" ]; then - rm -f "$HOME/.config/$item" || { - echo "Error: Failed to remove existing symlink $HOME/.config/$item." >&2 - exit 1 - } - fi +alt() { + local item profile + item=$1 + profile=$2 + if [[ -e $HOME/.config/.alt/${item}-${profile} ]]; then + ln -svf ".alt/${item}-${profile}" "$HOME/.config/$item" + elif [[ -e $HOME/.config/.alt/${item}-default ]]; then + ln -svf ".alt/${item}-default" "$HOME/.config/$item" + fi +} - if [ "$desktop" = "niri" ] || [ "$desktop" = "GNOME" ]; then - if [ -e "$HOME/.config/.alt/${item}-niri" ]; then - ln -svf ".alt/${item}-niri" "$HOME/.config/$item" - elif [ -e "$HOME/.config/.alt/${item}-default" ]; then - ln -svf ".alt/${item}-default" "$HOME/.config/$item" - fi - else - [ -e "$HOME/.config/.alt/${item}-default" ] && ln -svf ".alt/${item}-default" "$HOME/.config/$item" - fi +for item in "kitty" "wlogout"; do + if [[ ! -L $HOME/.config/$item ]] && [[ -e $HOME/.config/$item ]]; then + echo "Error: $HOME/.config/$item exists and is not a symlink." >&2 + exit 1 + fi + + case "$desktop" in + niri | GNOME) + alt "$item" niri + ;; + *) + alt "$item" default + ;; + esac done