.local-bin/scripts/wzp.sh
2026-02-09 13:52:33 -05:00

50 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
PROFILES_DIR="$HOME/.config/wezterm/plugins/profiles"
FZF_THEME=$("$HOME"/.local/bin/scripts/fzf_theme.sh)
# Check if tools are available
has() { command -v "$1" >/dev/null 2>&1; }
# Detect profile list using fd or find
get_profiles() {
if has fd; then
fd . "$PROFILES_DIR" -e lua -d 1 -x basename {} .lua
else
find "$PROFILES_DIR" -maxdepth 1 -type f -name "*.lua" -printf "%f\n" | sed 's/\.lua$//'
fi
}
# Fast profile existence check
profiles_exist() {
if has fd; then
if has rg; then
fd . "$PROFILES_DIR" -e lua -d 1 | rg -q .
else
fd . "$PROFILES_DIR" -e lua -d 1 | grep -q .
fi
else
if has rg; then
find "$PROFILES_DIR" -maxdepth 1 -type f -name "*.lua" | rg -q .
else
find "$PROFILES_DIR" -maxdepth 1 -type f -name "*.lua" | grep -q .
fi
fi
}
# Exit early if no profiles found
if ! profiles_exist; then
echo "No profiles found in $PROFILES_DIR"
exit 1
fi
# Fuzzy select a profile
profile=$(get_profiles | fzf "$FZF_THEME" --cycle --no-info --layout=reverse)
if [[ -z "$profile" ]]; then
echo "No profile selected"
exit 1
fi
# Launch the selected domain
wezterm start --domain-name "$profile" --always-new-process >/dev/null 2>&1 &