Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- id="$1"
- #[[ -z "$1" ]] && exit
- [[ -z "$1" ]] && id=$(xprop -root _NET_ACTIVE_WINDOW | sed -un 's/.*\(0x.*\)/\1/p')
- file="$XDG_DATA_HOME/window_colours.list"
- name=$(xprop -id "$id" | grep 'WM_CLASS(STRING)' | awk -F '"' '{print tolower($4)}')
- if [ -e "$file" ]; then
- listed=$(grep "$name" "$file" | awk '{print $2}')
- if [[ -n "$listed" ]]; then
- echo "$listed"
- exit 0
- fi
- else
- touch "$file"
- fi
- pixmaps="/usr/share/pixmaps"
- icons="/usr/share/icons/*/*/*"
- log () {
- echo "$1"
- echo "$name $1" >> "$file"
- }
- Xicon () {
- image=$(xprop -id "$id" 32c _NET_WM_ICON | perl -0777 -pe '@_=/\d+/g; printf "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", splice@_,0,2; $_=pack "N*", @_; s/(.)(...)/$2$1/gs' | convert - -resize 1x1 txt:-)
- echo "$?"
- if [[ "$?" = 1 ]]; then
- xicon_error=1
- else
- log "$(echo "$image" | awk '{print $3}' | grep '#' | cut -c 1-7)"
- fi
- }
- random_colour () {
- log "#CC9900"
- }
- for i in $pixmaps/*$name* $icons/*$name*; do
- case $i in
- *HighContrast*)
- continue
- ;;
- *.png|*.PNG)
- image="$i"
- break
- ;;
- *.jpg|*.JPG|*.jpeg|*.JPEG)
- image="$i"
- break
- ;;
- *.xpm|*.XPM)
- image="$i"
- break
- ;;
- *.svg|*.SVG)
- image="$i"
- break
- ;;
- *)
- Xicon
- if [ $xicon_error ]; then
- random_colour
- fi
- exit 0
- ;;
- esac
- done
- log "$(convert "$image" -resize 1x1 txt:- | awk '{print $3}' | grep '#' | cut -c 1-7)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement