Initial commit of themes and script to move the CPU monitor around
This commit is contained in:
parent
454199e92c
commit
9d18033381
24 changed files with 166 additions and 0 deletions
138
move.sh
Normal file
138
move.sh
Normal file
|
@ -0,0 +1,138 @@
|
|||
#!/bin/sh
|
||||
#### Configuration/Defaults ####
|
||||
|
||||
# Theme directory name
|
||||
theme=${1:-default} # Will default hot-babe theme, if it can be found
|
||||
|
||||
# Margins set in integer percentage points
|
||||
XmarginPct=${2:-2} # Default 2% of screen width
|
||||
YmarginPct=${3:-0} # Default no vertical margin
|
||||
|
||||
# Alignment; left/right and top/bottom
|
||||
Xalign=${4:-right} # Default right-edge
|
||||
Yalign=${5:-bottom} # Default bottom-edge
|
||||
|
||||
|
||||
#### Do not modify beyond this line ####
|
||||
usage() {
|
||||
echo '${0} - Position hot-babe on screen.'
|
||||
echo 'Usage:'
|
||||
echo " ${0} <theme> [<X margin> <Y margin> <X alignment> <Y alignment>]"
|
||||
echo ' where'
|
||||
echo ' <theme> is the name of a theme directory in ~/.hot-babe or "default",'
|
||||
echo ' <X/Y margin> is given in percentage of screensize (integer only), and'
|
||||
echo ' <X/Y alignment> is given as left/right and top/bottom, respectively.'
|
||||
echo
|
||||
echo 'Note that this script will only make a limited effort at locating the'
|
||||
echo 'files for the default theme; locate it and copy to your ~/.hot-babe if'
|
||||
echo 'this fails.'
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "${2}" ] ; then
|
||||
if [ -z "${5}" ] ; then
|
||||
echo "If any positional options are given, all must be given."
|
||||
echo
|
||||
usage
|
||||
fi
|
||||
fi
|
||||
|
||||
# Determine where the themes are (typically where this script is run from, or
|
||||
# the default theme directory), and the first file in the animation
|
||||
if [ "${theme}" = 'default' ] ; then
|
||||
case $(uname) in
|
||||
FreeBSD)
|
||||
first="$(pkg info -l hot-babe|grep '\.png$'|head -1)"
|
||||
;;
|
||||
NetBSD|OpenBSD)
|
||||
first="$(pkg_info -L hot-babe|grep '\.png$'|head -1)"
|
||||
;;
|
||||
*)
|
||||
echo "Platform $(uname) not supported."
|
||||
usage
|
||||
esac
|
||||
dir="$(dirname "$first")"
|
||||
else
|
||||
dir="$(dirname $(realpath $0))/${theme}"
|
||||
first="${dir}/$(head -2 "${dir}/descr" | tail -1)"
|
||||
fi
|
||||
|
||||
if ! [ -f "${dir}/descr" ] ; then
|
||||
echo "Could not locate theme config in ${dir}! Bailing.."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract screen dimensions from xprop
|
||||
IFS=' ' set -- $(xprop -root _NET_DESKTOP_GEOMETRY|tr -d ,|cut -f 3,4 -d ' ')
|
||||
scrwidth=$1
|
||||
scrheigth=$2
|
||||
unset IFS
|
||||
|
||||
if ! [ "$scrwidth" -gt 0 ] || ! [ "$scrheigth" -gt 0 ] ; then
|
||||
echo "Could not determine screen dimensions. Does 'xprop' work at all?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Calculate margins
|
||||
marginX=$((scrwidth*XmarginPct/100))
|
||||
marginY=$((scrheigth*YmarginPct/100))
|
||||
|
||||
if ! [ "$marginX" -ge 0 ] || ! [ "$marginY" -ge 0 ] ; then
|
||||
echo "Could not calculate margins."
|
||||
usage
|
||||
fi
|
||||
|
||||
# Get dimensions of first image in the animation
|
||||
IFS=' ' set -- $(file "${first}"|grep -Eo '[0-9]{1,4} x [0-9]{1,4}'|cut -f 1,3 -d ' ')
|
||||
imgwidth=$1
|
||||
imgheigth=$2
|
||||
unset IFS
|
||||
|
||||
if ! [ "$imgwidth" -gt 0 ] || ! [ "$imgheigth" -gt 0 ] ; then
|
||||
echo "Could not determine image dimensions. Check that the 'file' command gives sane output."
|
||||
echo "Its output must contain image dimensions matching the regex '[0-9]{1,4} x [0-9]{1,4}'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $Xalign in
|
||||
right)
|
||||
posX=$(((scrwidth-marginX)-imgwidth))
|
||||
;;
|
||||
left)
|
||||
posX=$marginX
|
||||
;;
|
||||
*)
|
||||
echo "Xalign not correctly specified ('right' or 'left')"
|
||||
usage
|
||||
esac
|
||||
|
||||
case $Yalign in
|
||||
top)
|
||||
posY=$marginY
|
||||
;;
|
||||
bottom)
|
||||
posY=$(((scrheigth-marginY)-imgheigth))
|
||||
;;
|
||||
*)
|
||||
echo "Yalign not correctly specified ('top' or 'bottom')"
|
||||
usage
|
||||
esac
|
||||
|
||||
wait=0
|
||||
while [ $wait -lt 10 ] ; do
|
||||
if [ $(xdotool search --name hot-babe | wc -l) -gt 0 ] ; then
|
||||
echo "The Hot Babe is here, relocating.."
|
||||
sleep 0.5
|
||||
xdotool search --name hot-babe windowmove %2 $posX $posY windowstate --add BELOW %2
|
||||
exit 0
|
||||
else
|
||||
wait=$((wait+2))
|
||||
if [ $wait -ge 10 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
fi
|
||||
done
|
||||
|
||||
echo 'Waited too long for the Hot Babe. Bailing out!'
|
Loading…
Add table
Add a link
Reference in a new issue