#!/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 . (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)))