forked from Shinonome/dots-hyprland
65 lines
2.0 KiB
Bash
Executable File
65 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
|
|
geticonlist() {
|
|
classes=$(hyprctl clients | grep -e 'class: ' | sed 's/\tclass: //')
|
|
addresses=$(hyprctl clients | grep -e ' -> ')
|
|
# echo "$classes"
|
|
IFS=$'\n'
|
|
classarr=($(echo "$classes"))
|
|
addressarr=($(echo "$addresses"))
|
|
iconarr=($(echo "$classes"))
|
|
|
|
for i in "${!classarr[@]}"; do
|
|
addressarr[i]=$(echo "0x${addressarr[i]% -> *}" | sed 's/Window //')
|
|
# echo "${addressarr[i]}"
|
|
done
|
|
|
|
for i in "${!classarr[@]}"; do
|
|
classarr[i]=$(echo ${classarr[i]})
|
|
if [ -f "scripts/cache/${classarr[i]}" ]; then
|
|
iconarr[i]=$(cat scripts/cache/${classarr[i]})
|
|
if [ ! -f "${iconarr[i]}" ]; then # Cache refresh if icon doesnt exist
|
|
iconarr[i]=$(scripts/get-icon.py "${classarr[i]}")
|
|
echo "${iconarr[i]}" > "scripts/cache/${classarr[i]}"
|
|
fi
|
|
else
|
|
iconarr[i]=$(scripts/get-icon.py "${classarr[i]}")
|
|
echo "${iconarr[i]}" > "scripts/cache/${classarr[i]}"
|
|
fi
|
|
if [[ ${iconarr[i]} = "not found" ]]; then
|
|
iconarr[i]=$(scripts/get-icon.py "$(echo "${classarr[i]##*.}" | tr '[:upper:]' '[:lower:]')")
|
|
if [[ ! ${iconarr[i]} = "not found" ]]; then
|
|
rm "scripts/cache/${classarr[i]}"
|
|
echo "${iconarr[i]}" > "scripts/cache/${classarr[i]}"
|
|
else
|
|
iconarr[i]="/home/$USER/.local/share/icons/candy-icons/mimetypes/scalable/application-x-theme.svg"
|
|
rm "scripts/cache/${classarr[i]}"
|
|
echo "${iconarr[i]}" > "scripts/cache/${classarr[i]}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
printf '['
|
|
for i in "${!classarr[@]}"; do
|
|
if [ $i -ne 0 ]; then
|
|
printf ', '
|
|
fi
|
|
# printf '{'
|
|
# printf "\"${addressarr[i]}\": \"${iconarr[i]}\""
|
|
# printf '}'
|
|
printf "\"${iconarr[i]}\""
|
|
done
|
|
printf ']\n'
|
|
}
|
|
|
|
geticonlist
|
|
|
|
if [ "$1" == "--once" ]; then
|
|
exit 0
|
|
else
|
|
socat -u UNIX-CONNECT:/tmp/hypr/"$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock - | while read -r line; do
|
|
geticonlist
|
|
done
|
|
fi
|
|
|