blob: 3853616f799c1837358f199d67f01ea8770d24da (
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
|
#!/usr/bin/env sh
# # -*- mode: scheme; -*-
IFS=" "
exec scsh -s "$0" "$@"
!#
;; Copyright (C) 2022 Tom Willemse
;; This program is free software: you can redistribute it and/or modify it under
;; the terms of the GNU General Public License as published by the Free Software
;; Foundation, either version 3 of the License, or (at your option) any later
;; version.
;; This program is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
;; details.
;; You should have received a copy of the GNU General Public License along with
;; this program. If not, see <https://www.gnu.org/licenses/>.
(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)))
|