spmenu/scripts/spmenu_profile
2023-03-31 16:24:50 +02:00

81 lines
3 KiB
Bash
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# spmenu_profile
load_profile() {
[ -f "$HOME/.config/spmenu/.profile" ] && PROFILE="$(cat "$HOME/.config/spmenu/.profile")"
[ -n "$PROFILE" ] && xrdb -override "$PROFILE"
}
set_profile() {
pgrep -x spmenu && pkill -x spmenu
profiles="$(find "$HOME/.config/spmenu/profiles" -type f)"
profilec="$(find "$HOME/.config/spmenu/profiles" -type f | wc -l)"
sel="$(list_profiles list | spmenu --lines 20 --columns 1 --prompt "Profile settings" --hide-match-count --hide-left-arrow --hide-right-arrow --hide-input --hide-image --hide-cursor --hide-highlighting --normal --no-allow-typing)"
check
}
add_profile() {
selprofile="$(printf "" | spmenu --lines 20 --columns 1 --prompt "Enter a name for the profile:" --hide-mode --hide-match-count --hide-left-arrow --hide-right-arrow --hide-image --hide-cursor --hide-highlighting --insert | tr -d ' ')"
[ -f "/usr/share/spmenu/example.Xresources" ] && cp "/usr/share/spmenu/example.Xresources" "$HOME/.config/spmenu/profiles/$selprofile"
set_profile
}
remove_profile() {
selprofile="$(list_profiles noopts | spmenu --lines 20 --columns 1 --prompt "Select a profile to remove" --hide-mode --hide-match-count --hide-left-arrow --hide-right-arrow --hide-image --hide-highlighting --insert)"
[ ! -f "$HOME/.config/spmenu/profiles/$selprofile" ] && return
rm -f "$HOME/.config/spmenu/profiles/$selprofile" "$HOME/.config/spmenu/.profile"
set_profile
}
check() {
case "$sel" in
"Add") add_profile ;;
"Remove") remove_profile ;;
"Default") printf "%s/.config/spmenu/spmenurc\n" "$HOME" > "$HOME/.config/spmenu/.profile" && set_profile ;;
"") exit 0 ;;
*) profile="$sel" && write_profile && set_profile ;;
esac
return
}
write_profile() {
printf "%s/%s\n" "$HOME/.config/spmenu/profiles/" "$profile" > "$HOME/.config/spmenu/.profile"
[ ! -f "$HOME/.config/spmenu/profiles/$profile" ] && rm -f "$HOME/.config/spmenu/.profile"
load_profile
}
list_profiles() {
profiles="$(find "$HOME/.config/spmenu/profiles" -type f)"
profilec="$(find "$HOME/.config/spmenu/profiles" -type f | wc -l)"
[ "$1" != "noopts" ] && [ -f "$HOME/.config/spmenu/.profile" ] && printf "\033[1;33m%s\n" "Current profile: $(basename "$(cat "$HOME/.config/spmenu/.profile")")" | sed "s/spmenurc/Default/g"
for i in $(seq "$profilec"); do
curprofile="$(basename "$(printf "%s" "$profiles" | sed "${i}q;d")")"
printf "%s\n" "$curprofile"
done
[ "$1" != "noopts" ] && list_ex_options
}
list_ex_options() {
printf "\nDefault\nAdd\nRemove\n"
}
main() {
command -v xrdb > /dev/null || exit 1
[ ! -d "$HOME/.config/spmenu/profiles" ] && mkdir -p "$HOME/.config/spmenu/profiles"
[ ! -f "$HOME/.config/spmenu/spmenurc" ] && [ -e "/usr/share/spmenu/example.Xresources" ] && \
cp "/usr/share/spmenu/example.Xresources" "$HOME/.config/spmenu/spmenurc"
[ "$1" = "--spmenu-load-default-profile" ] && load_profile
[ "$1" = "--spmenu-set-profile" ] && set_profile
}
main "$@"