97 lines
1.5 KiB
Bash
Executable File
97 lines
1.5 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
module_name="$(basename "$0")"
|
|
align="left"
|
|
|
|
color() {
|
|
sed "$1!d" ../colors
|
|
}
|
|
|
|
background="$(color 1)"
|
|
foreground="$(color 2)"
|
|
|
|
trap "echo "$module_name//!DEAD" && trap - TERM && kill -- -$$" INT TERM EXIT
|
|
|
|
loop() {
|
|
echo "$module_name/$align!$background!$foreground/"
|
|
|
|
if [ ! -z "$clickFunc" ]; then
|
|
trap "$clickFunc" 10
|
|
prefix="%{A:kill -10 $$:}"
|
|
suffix="%{A}"
|
|
fi
|
|
|
|
while :; do
|
|
data="$($1)"
|
|
if [ "$?" = "1" ]; then
|
|
sleep 0.01
|
|
continue
|
|
fi
|
|
|
|
echo "$module_name//$prefix$data$suffix"
|
|
|
|
$waitFunc &
|
|
wait $!
|
|
done
|
|
}
|
|
|
|
wait_for() {
|
|
[ "$1" = "" ] && exit
|
|
|
|
if [ "$2" = "" ]; then
|
|
herbstclient --wait $1 > /dev/null &
|
|
wait
|
|
else
|
|
list=""
|
|
for arg in $@; do
|
|
list="$list|$arg"
|
|
done
|
|
|
|
herbstclient --wait "$list" > /dev/null &
|
|
wait
|
|
fi
|
|
}
|
|
|
|
kickoff() {
|
|
if [ "$2" = "" ]; then
|
|
while :; do
|
|
$1
|
|
done
|
|
else
|
|
while :; do
|
|
$1
|
|
|
|
sleep $2
|
|
done
|
|
fi
|
|
}
|
|
|
|
pad() {
|
|
len="$(echo -n "$1" | wc -c)"
|
|
padding="$(expr $2 - $len)"
|
|
|
|
if [ "$padding" -lt 1 ]; then
|
|
echo "$1"
|
|
return
|
|
fi
|
|
|
|
printf "$1%*s\n" $padding ''
|
|
}
|
|
|
|
trim() {
|
|
len="$(echo -n "$1" | wc -c)"
|
|
|
|
echo "$1" | colrm $2
|
|
|
|
[ "$len" -gt "$2" ] && return 3
|
|
}
|
|
|
|
toggle() {
|
|
eval "[ \"\$$1\" = \"true\" ] && $1=false || $1=true"
|
|
}
|
|
|
|
atomic_write() {
|
|
cat - > "$1.atom"
|
|
mv "$1.atom" "$1"
|
|
}
|