64 lines
1.7 KiB
Bash
Executable file
64 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
||
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
|
||
# Script for waybar styles
|
||
|
||
IFS=$'\n\t'
|
||
|
||
# Define directories
|
||
waybar_styles="$HOME/.config/waybar/style"
|
||
waybar_style="$HOME/.config/waybar/style.css"
|
||
SCRIPTSDIR="$HOME/.config/hypr/scripts"
|
||
rofi_config="$HOME/.config/rofi/config-waybar-style.rasi"
|
||
msg=' 🎌 NOTE: Some waybar STYLES NOT fully compatible with some LAYOUTS'
|
||
|
||
# Apply selected style
|
||
apply_style() {
|
||
ln -sf "$waybar_styles/$1.css" "$waybar_style"
|
||
"${SCRIPTSDIR}/Refresh.sh" &
|
||
}
|
||
|
||
main() {
|
||
# resolve current symlink and strip .css
|
||
current_target=$(readlink -f "$waybar_style")
|
||
current_name=$(basename "$current_target" .css)
|
||
|
||
# gather all style names (without .css) into an array
|
||
mapfile -t options < <(
|
||
find -L "$waybar_styles" -maxdepth 1 -type f -name '*.css' \
|
||
-exec basename {} .css \; \
|
||
| sort
|
||
)
|
||
|
||
# mark the active style and record its index
|
||
default_row=0
|
||
MARKER="👉"
|
||
for i in "${!options[@]}"; do
|
||
if [[ "${options[i]}" == "$current_name" ]]; then
|
||
options[i]="$MARKER ${options[i]}"
|
||
default_row=$i
|
||
break
|
||
fi
|
||
done
|
||
|
||
# launch rofi with the annotated list and pre‑selected row
|
||
choice=$(printf '%s\n' "${options[@]}" \
|
||
| rofi -i -dmenu \
|
||
-config "$rofi_config" \
|
||
-mesg "$msg" \
|
||
-selected-row "$default_row"
|
||
)
|
||
|
||
[[ -z "$choice" ]] && { echo "No option selected. Exiting."; exit 0; }
|
||
|
||
# remove annotation and apply
|
||
choice=${choice#"$MARKER "}
|
||
apply_style "$choice"
|
||
}
|
||
|
||
# Kill Rofi if already running before execution
|
||
if pgrep -x "rofi" >/dev/null; then
|
||
pkill rofi
|
||
#exit 0
|
||
fi
|
||
|
||
main
|