initial dotfiles setup

Profile-based dotfiles with switchable color themes.
Structure: profiles/ with themes/ and config/ per profile.
This commit is contained in:
2026-04-21 17:41:08 +02:00
commit 350fb4fe59
26 changed files with 1827 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# Usage: switch-profile.sh <profile-name>
PROFILE="${1:-}"
if [[ -z "$PROFILE" ]]; then
echo "Available profiles:"
ls "$HOME/profiles/"
exit 1
fi
if [[ ! -d "$HOME/profiles/$PROFILE" ]]; then
echo "Profile not found: $PROFILE"
echo "Available profiles:"
ls "$HOME/profiles/"
exit 1
fi
"$HOME/profiles/$PROFILE/install.sh"
hyprctl reload
echo "Switched to profile: $PROFILE"
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# Usage: switch-theme.sh <theme-name>
PROFILE_DIR=$(readlink "$HOME/.active_profile" 2>/dev/null)
THEME="${1:-}"
if [[ -z "$THEME" ]]; then
echo "Available themes:"
ls "$PROFILE_DIR/themes/"
exit 1
fi
if [[ ! -d "$PROFILE_DIR/themes/$THEME" ]]; then
echo "Theme not found: $THEME"
echo "Available themes:"
ls "$PROFILE_DIR/themes/"
exit 1
fi
ln -sfn "$PROFILE_DIR/themes/$THEME" "$HOME/.active_theme"
~/.config/wal/reload.sh
+34
View File
@@ -0,0 +1,34 @@
#!/bin/bash
PROFILES_DIR="$HOME/profiles"
ACTIVE=$(basename "$(readlink "$HOME/.active_profile" 2>/dev/null)")
for profile_dir in "$PROFILES_DIR"/*/; do
[[ ! -d "$profile_dir/.git" ]] && continue
profile=$(basename "$profile_dir")
echo "==> $profile"
cd "$profile_dir" || continue
git fetch origin --quiet 2>/dev/null || { echo " fetch failed (no remote?)"; continue; }
LOCAL=$(git rev-parse HEAD 2>/dev/null)
REMOTE=$(git rev-parse "@{u}" 2>/dev/null)
if [[ "$LOCAL" == "$REMOTE" ]]; then
echo " up to date"
continue
fi
git pull --ff-only || { echo " pull failed (conflicts? run: cd $profile_dir && git status)"; continue; }
echo " updated"
if [[ "$profile" == "$ACTIVE" ]]; then
echo " active profile changed — reinstalling..."
"$profile_dir/install.sh"
hyprctl reload
pkill waybar; sleep 0.3; waybar &disown
echo " reloaded"
fi
done
echo "Done."