blob: 32e47078b68ed8119aecb935c0fcbce03f564296 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#! /usr/bin/env sh
main()
{
# Load custom configuration if available
if [ -f "$HOME/.local/etc/x/chwp" ]
then
. "$HOME/.local/etc/x/chwp"
fi
directory=${CHWP_BASEDIR:-$HOME/pictures/wallpapers}
size=${CHWP_SIZE:-1920x1080}
timeout=${1:-0}
walldir=$directory/$size
screencount=${CHWP_SCREENCOUNT:-$(xrandr -q | grep -F ' connected ' | wc -l)}
# Fail early if there's no wallpaper directory
if [ ! -d "$walldir" ]
then
printf "No such directory: %s\n" "$walldir" >&2
exit 1
fi
CACHEFILE=$(mktemp)
find "${walldir}" -type f > "$CACHEFILE"
# If no timeout was set, just change it once
if [ "$timeout" -eq 0 ]
then
set_papes
exit 0
fi
# Otherwise, change it every so often
while :
do
set_papes
sleep "${timeout}"
done
}
set_papes()
{
pape=$(make_pape)
feh --bg-fill "$pape"
rm -f -- "$pape"
}
make_pape()
{
output=$(mktemp)
imagelist=$(mktemp)
for resolution in $(xrandr -q | grep -F ' connected ' | grep -Eo '\b[[:digit:]]+x[[:digit:]]+')
do
printf '"%s"\n' "$(get_pape "$resolution")" >> "$imagelist"
done
eval convert +append $(cat $imagelist) "$output"
printf "%s" "$output"
rm -f -- "$imagelist"
}
get_pape()
{
printf "%s\n" "$(find "$directory/$1" -type f | shuf | head -n 1)"
}
main "$@"
|