aboutsummaryrefslogtreecommitdiffstats
path: root/pick-random-wallpaper
blob: d90af5e4b8e0cbec551ade5a2c15d986e3c64876 (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
#!/usr/bin/env sh
# # -*- mode: scheme; -*-
IFS=" "
exec scsh -s "$0" "$@"
!#

(define (random-wallpaper)
  (let* ((root-info (let ((port (run/port (xwininfo -root))))
                      (reverse (awk (read-line port) (line) ((result '()))
                                    ((seq (or "Width" "Height") ": "
                                          (submatch (+ digit))) =>
                                          (lambda (m)
                                            (cons (string->number (match:substring m 1))
                                                  result)))))))
         (width (car root-info))
         (height (cadr root-info)))
    (string-trim-right
     (run/string (pipe (find ,(format #f "~a/pictures/wallpaper" (getenv "HOME"))
                             -type f
                             "(" -wholename ,(format #f "*/~ax~a/*" width height)
                             -o -wholename "*/patterns/*" ")"
                             -not -name "*.org")
                       (shuf -n 1))))))

(define (attribute-exists? name)
  (= 0 (run (herbstclient attr ,name)
            (> 1 /dev/null)
            (> 2 1))))

(let ((wallpaper (random-wallpaper)))
  (if (not (attribute-exists? "my_wallpaper"))
      (run (herbstclient new_attr string my_wallpaper)))
  (&& (feh --bg-tile ,wallpaper)
      (herbstclient set_attr my_wallpaper ,wallpaper)))