71 lines
1.8 KiB
Bash
Executable file
71 lines
1.8 KiB
Bash
Executable file
#!/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, pre‑selecting 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
|