dotfiles/.config/hypr/scripts/WaybarLayout.sh
2025-12-15 18:20:18 +01:00

71 lines
1.8 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ##
# Script for waybar layout or configs
IFS=$'\n\t'
# Define directories
waybar_layouts="$HOME/.config/waybar/configs"
waybar_config="$HOME/.config/waybar/config"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
rofi_config="$HOME/.config/rofi/config-waybar-layout.rasi"
msg=' 🎌 NOTE: Some waybar LAYOUT NOT fully compatible with some STYLES'
# Apply selected configuration
apply_config() {
ln -sf "$waybar_layouts/$1" "$waybar_config"
"${SCRIPTSDIR}/Refresh.sh" &
}
main() {
# Resolve current symlink target and basename
current_target=$(readlink -f "$waybar_config")
current_name=$(basename "$current_target")
# Build sorted list of available layouts
mapfile -t options < <(
find -L "$waybar_layouts" -maxdepth 1 -type f -printf '%f\n' | sort
)
# Mark and locate the active layout
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, preselecting the active row
choice=$(printf '%s\n' "${options[@]}" \
| rofi -i -dmenu \
-config "$rofi_config" \
-mesg "$msg" \
-selected-row "$default_row"
)
# Exit if nothing chosen
[[ -z "$choice" ]] && { echo "No option selected. Exiting."; exit 0; }
# Strip marker before applying
choice=${choice#"$MARKER "}
case "$choice" in
"no panel")
pgrep -x "waybar" && pkill waybar || true
;;
*)
apply_config "$choice"
;;
esac
}
# Kill Rofi if already running before execution
if pgrep -x "rofi" >/dev/null; then
pkill rofi
#exit 0
fi
main