forked from Shinonome/dots-hyprland
stuff
This commit is contained in:
Executable
+146
@@ -0,0 +1,146 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
IFS=$'\n'
|
||||
entrynames=( $(cat 'scripts/cache/entrynames.txt' | fzf --filter="$1" | head -n 10) )
|
||||
entries=( $(cat 'scripts/cache/entries.txt') )
|
||||
|
||||
addedNewActions=false
|
||||
|
||||
geticonof() {
|
||||
clientclass=''
|
||||
clientclass=$1
|
||||
iconpath=''
|
||||
# Get app icon
|
||||
if [ -f "scripts/cache/$clientclass" ]; then
|
||||
iconpath=$(cat scripts/cache/$clientclass)
|
||||
if [ ! -f "${iconpath}" ]; then # Cache refresh if icon doesnt exist
|
||||
iconpath=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" "$clientclass" | head -n 1)
|
||||
echo "${iconpath}" > "scripts/cache/$clientclass"
|
||||
fi
|
||||
else
|
||||
iconpath=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" "$clientclass" | head -n 1)
|
||||
echo "${iconpath}" > "scripts/cache/$clientclass"
|
||||
fi
|
||||
if [[ ${iconpath} == "" ]]; then
|
||||
# Retry with lowercase if icon not found
|
||||
iconpath=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" $(echo "$clientclass" | tr '[:upper:]' '[:lower:]' | sed 's/\ /-/g') | head -n 1)
|
||||
|
||||
if [[ ! ${iconpath} = "" ]]; then
|
||||
rm "scripts/cache/$clientclass"
|
||||
echo "${iconpath}" > "scripts/cache/$clientclass"
|
||||
else
|
||||
newname=$(scripts/iconpatch $clientclass)
|
||||
iconpath=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" "$newname" | head -n 1)
|
||||
if [[ ! ${iconpath} = "" ]]; then
|
||||
rm "scripts/cache/$clientclass"
|
||||
echo "${iconpath}" > "scripts/cache/$clientclass"
|
||||
else
|
||||
# Fallback app icon, replace the path below to the fallback icon of your choice
|
||||
# iconpath="/usr/share/icons/Win11-dark/mimes/48/application-x-executable.svg"
|
||||
iconpath=$(geticons -t "$(gsettings get org.gnome.desktop.interface icon-theme | sed "s/'//g")" "application-x-executable" | head -n 1)
|
||||
rm "scripts/cache/$clientclass"
|
||||
echo "${iconpath}" > "scripts/cache/$clientclass"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
echo "$iconpath"
|
||||
}
|
||||
|
||||
quiteSureNotMath() {
|
||||
if [[ ${1:0:1} != "0" \
|
||||
&& ${1:0:1} != "1" \
|
||||
&& ${1:0:1} != "2" \
|
||||
&& ${1:0:1} != "3" \
|
||||
&& ${1:0:1} != "4" \
|
||||
&& ${1:0:1} != "5" \
|
||||
&& ${1:0:1} != "6" \
|
||||
&& ${1:0:1} != "7" \
|
||||
&& ${1:0:1} != "8" \
|
||||
&& ${1:0:1} != "9" \
|
||||
&& ${1:0:1} != "(" \
|
||||
&& ${1:0:1} != ")" \
|
||||
]]; then
|
||||
echo 'true'
|
||||
else
|
||||
echo 'false'
|
||||
fi
|
||||
}
|
||||
|
||||
# Search inits: math
|
||||
if [[ "$1" == "--calculator" ]]; then
|
||||
echo -n '[{"name":"Calculator - Type something!","icon":"images/svg/dark/calculator.svg","exec":"wl-copy \"Clipboard contents ;)\""}]'
|
||||
eww update winsearch_actions='{"name":"Calculator - Type something!","icon":"images/svg/dark/calculator.svg","exec":"wl-copy \"Clipboard contents ;)\""}'
|
||||
eww update winsearch_actions_type='Math result'
|
||||
addedNewActions=true
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Quick commands
|
||||
if [[ "$1" == ">"* ]]; then
|
||||
cd ~/.config/eww
|
||||
if [[ "$1" == ">load"* ]]; then
|
||||
searching=$(echo "$1" | sed 's/>load //g' | sed 's/>load//g')
|
||||
profilenames=( $(ls css/savedcolors/ | grep .txt | sed 's/_iconcolor_//g' | sed 's/.txt//g' | fzf --filter="$searching") )
|
||||
echo -n '['
|
||||
for x in "${!profilenames[@]}"; do
|
||||
if [ "$x" != "0" ]; then
|
||||
printf ','
|
||||
fi
|
||||
profilejson='{"name": "'"${profilenames[x]}"'", "exec": ">load '"${profilenames[x]}"'"}'
|
||||
if (( x == 0 )); then
|
||||
eww update winsearch_actions="$profilejson"
|
||||
eww update winsearch_actions_type='Color theme'
|
||||
addedNewActions=true
|
||||
fi
|
||||
|
||||
echo -n "$profilejson"
|
||||
done
|
||||
echo -n ']'
|
||||
else
|
||||
echo '[]'
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Do math
|
||||
if [[ $(quiteSureNotMath "$1") == "false" ]]; then
|
||||
mathAns=$(qalc $1 | head -n 1)
|
||||
mathAns="${mathAns#*= }"
|
||||
mathAns="${mathAns#*≈ }"
|
||||
if [[ "$mathAns" == *"error"* || "$mathAns" == *"warning"* ]]; then
|
||||
echo '[{"name":"Invalid math","icon":"images/svg/dark/calculator.svg","exec":"wl-copy \"Clipboard contents ;)\""}]'
|
||||
exit 0
|
||||
else
|
||||
ansjson='{"name": "'"$mathAns"'","icon":"images/svg/dark/calculator.svg","exec": "wl-copy \"'"$mathAns"'\""}'
|
||||
eww update winsearch_actions="$ansjson"
|
||||
eww update winsearch_actions_type='Math result'
|
||||
addedNewActions=true
|
||||
echo '['"$ansjson"']'
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Application search
|
||||
printf '['
|
||||
|
||||
for x in "${!entrynames[@]}"; do
|
||||
if [ "$x" != "0" ]; then
|
||||
printf ','
|
||||
fi
|
||||
appjson=$(echo $entries | gojq -c -M '."'"${entrynames[x]}"'"')
|
||||
if (( x == 0 )); then
|
||||
eww update winsearch_actions="$appjson"
|
||||
eww update winsearch_actions_type='Application'
|
||||
addedNewActions=true
|
||||
fi
|
||||
# iconname=$(echo "$appjson" | gojq -r -c -M '.icon')
|
||||
# appjson=$(echo "$appjson" | gojq '.icon = "'$(geticonof "$iconname")'"')
|
||||
echo -n "$appjson"
|
||||
done
|
||||
|
||||
printf ']'
|
||||
|
||||
if [[ "$addedNewActions" == "false" ]]; then
|
||||
eww update winsearch_actions='{"name":"'"$1"'","icon":"images/svg/dark/protocol.svg","exec":"wl-copy \"Clipboard contents ;)\""}'
|
||||
eww update winsearch_actions_type='Run command'
|
||||
fi
|
||||
Reference in New Issue
Block a user